X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fpayload.h;h=a8f66f36b98b6f82181b4209ff213961f16d55ab;hp=465a097cfbcdac0b0530372b63eedc95b329cef6;hb=fe489250ce102edf511e99669025934ec9587c63;hpb=dd1bac00c933616842aaf51ad4c4240ccee98838;ds=sidebyside diff --git a/src/common/payload.h b/src/common/payload.h index 465a097cf..a8f66f36b 100644 --- a/src/common/payload.h +++ b/src/common/payload.h @@ -10,6 +10,7 @@ #include #include +#include /* * An lttng_payload encompasses the 'data' (bytes) and any passed file @@ -19,7 +20,7 @@ struct lttng_payload { struct lttng_dynamic_buffer buffer; /* private */ - struct lttng_dynamic_array _fds; + struct lttng_dynamic_pointer_array _fd_handles; }; /* @@ -34,20 +35,31 @@ LTTNG_HIDDEN int lttng_payload_copy(const struct lttng_payload *src_payload, struct lttng_payload *dst_payload); -/* Release any memory used by the payload. */ +/* Release any memory and references held by the payload. */ LTTNG_HIDDEN void lttng_payload_reset(struct lttng_payload *payload); +/* + * Empty the contents of a payload, releasing all references held. + * This should be used to put a payload in a re-usable state. + * + * lttng_payload_reset must still be called on an lttng_payload to + * free all allocated memory. + */ +LTTNG_HIDDEN +void lttng_payload_clear(struct lttng_payload *payload); + /** * Add an fd to the payload. - * No ownership of the file descriptor is assumed by the payload. + * The payload acquires a reference to the fd_handle. * * @payload Payload instance - * @fd File descriptor to add to the payload + * @fd_handle File descriptor handle to add to the payload * * Returns 0 on success, -1 on allocation error. */ LTTNG_HIDDEN -int lttng_payload_push_fd(struct lttng_payload *payload, int fd); +int lttng_payload_push_fd_handle(struct lttng_payload *payload, + struct fd_handle *fd_handle); #endif /* LTTNG_PAYLOAD_H */