X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=ltt-sessiond%2Fsession.c;h=b13f4a916c8963357cea305d4677649a7f955f05;hb=5f822d0a2688bb0b085b579dfc37a1958fff072e;hp=9ca6a69ad2ce4aa902773546653851c69751a6db;hpb=1e307fab325060d9db4e989c0fdc3cddf46f50f6;p=lttng-tools.git diff --git a/ltt-sessiond/session.c b/ltt-sessiond/session.c index 9ca6a69ad..b13f4a916 100644 --- a/ltt-sessiond/session.c +++ b/ltt-sessiond/session.c @@ -18,12 +18,11 @@ #define _GNU_SOURCE #include -#include #include #include #include -#include +#include #include #include "session.h" @@ -34,7 +33,7 @@ * No ltt_session.lock is taken here because those data structure are widely * spread across the lttng-tools code base so before caling functions below * that can read/write a session, the caller MUST acquire the session lock - * using lock_session() and unlock_session(). + * using session_lock() and session_unlock(). */ /* @@ -76,7 +75,7 @@ static void del_session_list(struct ltt_session *ls) /* * Return a pointer to the session list. */ -struct ltt_session_list *get_session_list(void) +struct ltt_session_list *session_get_list(void) { return <t_session_list; } @@ -84,7 +83,7 @@ struct ltt_session_list *get_session_list(void) /* * Acquire session list lock */ -void lock_session_list(void) +void session_lock_list(void) { pthread_mutex_lock(<t_session_list.lock); } @@ -92,7 +91,7 @@ void lock_session_list(void) /* * Release session list lock */ -void unlock_session_list(void) +void session_unlock_list(void) { pthread_mutex_unlock(<t_session_list.lock); } @@ -100,7 +99,7 @@ void unlock_session_list(void) /* * Acquire session lock */ -void lock_session(struct ltt_session *session) +void session_lock(struct ltt_session *session) { pthread_mutex_lock(&session->lock); } @@ -108,7 +107,7 @@ void lock_session(struct ltt_session *session) /* * Release session lock */ -void unlock_session(struct ltt_session *session) +void session_unlock(struct ltt_session *session) { pthread_mutex_unlock(&session->lock); } @@ -117,19 +116,21 @@ void unlock_session(struct ltt_session *session) * Return a ltt_session structure ptr that matches name. * If no session found, NULL is returned. */ -struct ltt_session *find_session_by_name(char *name) +struct ltt_session *session_find_by_name(char *name) { int found = 0; struct ltt_session *iter; - lock_session_list(); + DBG2("Trying to find session by name %s", name); + + session_lock_list(); cds_list_for_each_entry(iter, <t_session_list.head, list) { if (strncmp(iter->name, name, NAME_MAX) == 0) { found = 1; break; } } - unlock_session_list(); + session_unlock_list(); if (!found) { iter = NULL; @@ -143,12 +144,11 @@ struct ltt_session *find_session_by_name(char *name) * * Return -1 if no session is found. On success, return 1; */ -int destroy_session(char *name) +int session_destroy(char *name) { - int found = -1; struct ltt_session *iter, *tmp; - lock_session_list(); + session_lock_list(); cds_list_for_each_entry_safe(iter, tmp, <t_session_list.head, list) { if (strcmp(iter->name, name) == 0) { DBG("Destroying session %s", iter->name); @@ -157,26 +157,25 @@ int destroy_session(char *name) free(iter->path); pthread_mutex_destroy(&iter->lock); free(iter); - found = 1; break; } } - unlock_session_list(); + session_unlock_list(); - return found; + return LTTCOMM_OK; } /* * Create a brand new session and add it to the session list. */ -int create_session(char *name, char *path) +int session_create(char *name, char *path) { int ret; struct ltt_session *new_session; - new_session = find_session_by_name(name); + new_session = session_find_by_name(name); if (new_session != NULL) { - ret = -EEXIST; + ret = LTTCOMM_EXIST_SESS; goto error_exist; } @@ -184,54 +183,51 @@ int create_session(char *name, char *path) new_session = malloc(sizeof(struct ltt_session)); if (new_session == NULL) { perror("malloc"); - ret = -ENOMEM; + ret = LTTCOMM_FATAL; goto error_malloc; } /* Define session name */ if (name != NULL) { if (asprintf(&new_session->name, "%s", name) < 0) { - ret = -ENOMEM; + ret = LTTCOMM_FATAL; goto error_asprintf; } } else { ERR("No session name given"); - ret = -1; + ret = LTTCOMM_FATAL; goto error; } /* Define session system path */ if (path != NULL) { if (asprintf(&new_session->path, "%s", path) < 0) { - ret = -ENOMEM; + ret = LTTCOMM_FATAL; goto error_asprintf; } } else { ERR("No session path given"); - ret = -1; + ret = LTTCOMM_FATAL; goto error; } /* Init kernel session */ new_session->kernel_session = NULL; - /* Init list */ - CDS_INIT_LIST_HEAD(&new_session->ust_traces); + /* Init UST session list */ + CDS_INIT_LIST_HEAD(&new_session->ust_session_list.head); - /* Set trace list counter */ - new_session->ust_trace_count = 0; + /* Init lock */ + pthread_mutex_init(&new_session->lock, NULL); /* Add new session to the session list */ - lock_session_list(); + session_lock_list(); add_session_list(new_session); - unlock_session_list(); - - /* Init lock */ - pthread_mutex_init(&new_session->lock, NULL); + session_unlock_list(); - DBG("Tracing session %s created in %s", new_session->name, new_session->path); + DBG("Tracing session %s created in %s", name, path); - return 0; + return LTTCOMM_OK; error: error_asprintf: