X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=include%2Flttng%2Fsession.h;h=dff6b45d40dedcf09001d76c1c7124f10c5e49d9;hb=4e52320d2950b79dc3ce537c32882c26f8c13846;hp=2c9b842d4c693be23478c30d2e40c33e4d22d623;hpb=1239a312e7e0e4c33948fdaf04e7637cb93c8b10;p=lttng-tools.git diff --git a/include/lttng/session.h b/include/lttng/session.h index 2c9b842d4..dff6b45d4 100644 --- a/include/lttng/session.h +++ b/include/lttng/session.h @@ -32,7 +32,7 @@ extern "C" { */ #define LTTNG_SESSION_PADDING1 12 struct lttng_session { - char name[NAME_MAX]; + char name[LTTNG_NAME_MAX]; /* The path where traces are written */ char path[PATH_MAX]; uint32_t enabled; /* enabled/started: 1, disabled/stopped: 0 */ @@ -84,18 +84,66 @@ extern int lttng_create_session_snapshot(const char *name, extern int lttng_create_session_live(const char *name, const char *url, unsigned int timer_interval); +/* + * Clear a tracing session. + * + * Clear the data buffers and trace data. + * + * For sessions saving trace data to disk and streaming over the network to a + * relay daemon, the buffers content and existing stream files are cleared when + * the clear command is issued. + * + * For snapshot sessions (flight recorder), only the buffer content is cleared. + * Prior snapshots are individually recorded to disk, and are therefore + * untouched by this "clear" command. + * + * For live sessions streaming over network to a relay daemon, the buffers + * will be cleared, and the files on the relay daemon side will be cleared as + * well. However, any active live trace viewer currently reading an existing + * trace packet will be able to proceed to read that packet entirely before + * skipping over cleared stream data. + * + * The clear command guarantees that no trace data preceding the instant it is + * called will be in the resulting trace. + * + * Trace data produced from the moment it is called and when the + * function returned might be present in the resulting trace. + * + * Return 0 on success else a negative LTTng error code. + * + * Important error codes: + * LTTNG_ERR_CLEAR_DISALLOWED_RELAY + * LTTNG_ERR_CLEAR_NOT_AVAILABLE + * LTTNG_ERR_CLEAR_NOT_AVAILABLE_RELAY + * LTTNG_ERR_CLEAR_FAIL_CONSUMER +*/ +extern int lttng_clear_session(const char *name); + /* * Destroy a tracing session. * * The session will not be usable, tracing will be stopped thus buffers will be * flushed. * + * This call will wait for data availability for each domain of the session, + * which can take an arbitrary amount of time. However, when returning the + * tracing data is guaranteed to be ready to be read and analyzed. + * + * lttng_destroy_session_no_wait() may be used if such a guarantee is not + * needed. + * * The name can't be NULL here. * * Return 0 on success else a negative LTTng error code. */ extern int lttng_destroy_session(const char *name); +/* + * Behaves exactly like lttng_destroy_session but does not wait for data + * availability. + */ +extern int lttng_destroy_session_no_wait(const char *name); + /* * List all the tracing sessions. * @@ -104,6 +152,51 @@ extern int lttng_destroy_session(const char *name); */ extern int lttng_list_sessions(struct lttng_session **sessions); +/* + * Set the shared memory path for a session. + * + * Sets the (optional) file system path where shared memory buffers will + * be created for the session. This is useful for buffer extraction on + * crash, when used with filesystems like pramfs. + * + * Return 0 on success else a negative LTTng error code. + */ +extern int lttng_set_session_shm_path(const char *session_name, + const char *shm_path); + +/* + * Add PID to session tracker. + * + * A pid argument >= 0 adds the PID to the session tracker. + * A pid argument of -1 means "track all PIDs". + * + * Return 0 on success else a negative LTTng error code. + */ +extern int lttng_track_pid(struct lttng_handle *handle, int pid); + +/* + * Remove PID from session tracker. + * + * A pid argument >= 0 removes the PID from the session tracker. + * A pid argument of -1 means "untrack all PIDs". + * + * Return 0 on success else a negative LTTng error code. + */ +extern int lttng_untrack_pid(struct lttng_handle *handle, int pid); + +/* + * List PIDs in the tracker. + * + * enabled is set to whether the PID tracker is enabled. + * pids is set to an allocated array of PIDs currently tracked. On + * success, pids must be freed by the caller. + * nr_pids is set to the number of entries contained by the pids array. + * + * Returns 0 on success, else a negative LTTng error code. + */ +extern int lttng_list_tracker_pids(struct lttng_handle *handle, + int *enabled, int32_t **pids, size_t *nr_pids); + #ifdef __cplusplus } #endif