X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fpayload.h;h=a8f66f36b98b6f82181b4209ff213961f16d55ab;hp=3f1aa8cfdf3573e1ee41f5b5ee5043fd50fd2870;hb=fe489250ce102edf511e99669025934ec9587c63;hpb=9e620ea7b016fc3fd4e08b5d094ffa40b36b50f6 diff --git a/src/common/payload.h b/src/common/payload.h index 3f1aa8cfd..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,30 +20,46 @@ struct lttng_payload { struct lttng_dynamic_buffer buffer; /* private */ - struct lttng_dynamic_array _fds; + struct lttng_dynamic_pointer_array _fd_handles; }; /* * Initialize a payload. This performs no allocation and is meant - * to be used instead. + * to be used instead of zero-ing the payload structure. */ LTTNG_HIDDEN void lttng_payload_init(struct lttng_payload *payload); -/* Release any memory used by the payload. */ +/* Copy a payload. */ +LTTNG_HIDDEN +int lttng_payload_copy(const struct lttng_payload *src_payload, + struct lttng_payload *dst_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 */