X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=ltt-sessiond%2Fsession.h;h=9eaa1c535e783897f0ed0ce90bf806b89f7e5e30;hp=7567d986767b185e2be046c44eb3675c949570f3;hb=b5541356f517dba006af9f676df8131dcb68f132;hpb=20fe210416ef1cc0e9b85e5a40c58344e3185fd6 diff --git a/ltt-sessiond/session.h b/ltt-sessiond/session.h index 7567d9867..9eaa1c535 100644 --- a/ltt-sessiond/session.h +++ b/ltt-sessiond/session.h @@ -21,34 +21,56 @@ #include #include -#include -/* Global session list */ +/* + * Tracing session list + * + * Statically declared in session.c and can be accessed by using + * get_session_list() function that returns the pointer to the list. + */ struct ltt_session_list { + /* + * This lock protects any read/write access to the list and count (which is + * basically the list size). All public functions in session.c acquire this + * lock and release it before returning. If none of those functions are + * used, the lock MUST be acquired in order to iterate or/and do any + * actions on that list. + */ + pthread_mutex_t lock; + /* + * Number of element in the list. + */ + unsigned int count; struct cds_list_head head; }; -/* ltt-session - This data structure contains information needed - * to identify a tracing session for both LTTng and UST. +/* + * This data structure contains information needed to identify a tracing + * session for both LTTng and UST. */ struct ltt_session { - struct cds_list_head list; char *name; - uuid_t uuid; - struct cds_list_head ust_traces; + char *path; struct ltt_kernel_session *kernel_session; + struct cds_list_head ust_traces; unsigned int ust_trace_count; - unsigned int kern_session_count; - pid_t ust_consumer; - pid_t kernel_consumer; + /* + * Protect any read/write on this session data structure. This lock must be + * acquired *before* using any public functions declared below. Use + * lock_session() and unlock_session() for that. + */ + pthread_mutex_t lock; + struct cds_list_head list; }; /* Prototypes */ -int create_session(char *name, uuid_t *session_id); -int destroy_session(uuid_t *uuid); +int create_session(char *name, char *path); +int destroy_session(char *name); void get_lttng_session(struct lttng_session *sessions); -struct ltt_session *find_session_by_uuid(uuid_t session_id); +void lock_session(struct ltt_session *session); +void unlock_session(struct ltt_session *session); struct ltt_session *find_session_by_name(char *name); unsigned int get_session_count(void); +struct ltt_session_list *get_session_list(void); #endif /* _LTT_SESSION_H */