X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Fpayload.h;h=e9bd8be9d5d2a48ad0a44c8db58edad3e3e4cffb;hb=7fe0498a9173fca00dcd45a41847e629b70cd941;hp=465a097cfbcdac0b0530372b63eedc95b329cef6;hpb=e368fb4396b9bdb22de16f0c93512c9f6d7ab0b4;p=lttng-tools.git diff --git a/src/common/payload.h b/src/common/payload.h index 465a097cf..e9bd8be9d 100644 --- a/src/common/payload.h +++ b/src/common/payload.h @@ -10,6 +10,11 @@ #include #include +#include + +#ifdef __cplusplus +extern "C" { +#endif /* * An lttng_payload encompasses the 'data' (bytes) and any passed file @@ -19,35 +24,45 @@ 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 of zero-ing the payload structure. */ -LTTNG_HIDDEN void lttng_payload_init(struct lttng_payload *payload); /* Copy a payload. */ -LTTNG_HIDDEN int lttng_payload_copy(const struct lttng_payload *src_payload, struct lttng_payload *dst_payload); -/* Release any memory used by the payload. */ -LTTNG_HIDDEN +/* Release any memory and references held by the payload. */ 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. + */ +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); + +#ifdef __cplusplus +} +#endif #endif /* LTTNG_PAYLOAD_H */