X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=include%2Flttng%2Frotate-internal.h;h=f5e4dc950b4875ef5e239e2ec497042d34643c59;hp=908422e190b1c0a79d00220d3eef6459a4e1afe2;hb=90936dcf0968343f20b2f6fd365b9c015cdb9717;hpb=5c408ad8ef08a226c018702aca969536f36ac4e5 diff --git a/include/lttng/rotate-internal.h b/include/lttng/rotate-internal.h index 908422e19..f5e4dc950 100644 --- a/include/lttng/rotate-internal.h +++ b/include/lttng/rotate-internal.h @@ -20,20 +20,91 @@ #include #include +#include #include #include #include +/* + * Object used as input parameter to the rotate session API for immediate + * rotations. + * This is opaque to the public library. + */ +struct lttng_rotation_immediate_attr { + /* Session name to rotate. */ + char session_name[LTTNG_NAME_MAX]; + /* For the rotate pending request. */ + uint64_t rotate_id; +}; + +/* + * Object used as input parameter to the lttng_rotate_schedule API for + * automatic rotations. + * This is opaque to the public library. + */ +struct lttng_rotation_schedule_attr { + /* Session name to rotate. */ + char session_name[LTTNG_NAME_MAX]; + /* > 0 if a timer is set. */ + uint64_t timer_us; + /* > 0 if the session should rotate when it has written that many bytes. */ + uint64_t size; +} LTTNG_PACKED; + +/* + * Object returned by the rotate session API. + * This is opaque to the public library. + */ +struct lttng_rotation_handle { + char session_name[LTTNG_NAME_MAX]; + /* + * ID of the rotate command. + * This matches the session->rotate_count, so the handle is valid until + * the next rotate command. After that, the rotation_get_state command + * returns the "expired" state. + */ + uint64_t rotation_id; + /* + * Where the rotated (readable) trace has been stored when the + * rotation is completed. + */ + struct { + bool is_set; + char path[LTTNG_PATH_MAX]; + } archive_location; +}; + /* * Internal objects between lttng-ctl and the session daemon, the values - * are then copied to the user's lttng_rotate_session_handle object. + * are then copied to the user's lttng_rotation_handle object. */ + /* For the LTTNG_ROTATE_SESSION command. */ struct lttng_rotate_session_return { - uint64_t rotate_id; - /* Represents values defined in enum lttng_rotation_status. */ + uint64_t rotation_id; +} LTTNG_PACKED; + +/* For the LTTNG_ROTATION_GET_INFO command. */ +struct lttng_rotation_get_info_return { + /* Represents values defined in enum lttng_rotation_state. */ int32_t status; + char path[LTTNG_PATH_MAX]; +} LTTNG_PACKED; + +/* For the LTTNG_SESSION_GET_CURRENT_OUTPUT command. */ +struct lttng_session_get_current_output_return { + char path[LTTNG_PATH_MAX]; +} LTTNG_PACKED; + +/* For the LTTNG_ROTATION_SCHEDULE_GET_TIMER_PERIOD command. */ +struct lttng_rotation_schedule_get_timer_period { + uint64_t rotate_timer; +} LTTNG_PACKED; + +/* For the LTTNG_ROTATION_SCHEDULE_GET_SIZE command. */ +struct lttng_rotation_schedule_get_size { + uint64_t rotate_size; } LTTNG_PACKED; #endif /* LTTNG_ROTATE_INTERNAL_ABI_H */