X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=ltt-sessiond%2Fsession.c;h=3131006f19254072119d41ecccfc3d37f9c1c95c;hp=97ab098dca3c93c102cc7042619783ec9dec02ec;hb=ca3c5ac0cf100d80352a1a81936b5adc47942f35;hpb=b5541356f517dba006af9f676df8131dcb68f132 diff --git a/ltt-sessiond/session.c b/ltt-sessiond/session.c index 97ab098dc..3131006f1 100644 --- a/ltt-sessiond/session.c +++ b/ltt-sessiond/session.c @@ -3,8 +3,8 @@ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * as published by the Free Software Foundation; only version 2 + * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -17,6 +17,7 @@ */ #define _GNU_SOURCE +#include #include #include #include @@ -87,35 +88,35 @@ struct ltt_session_list *get_session_list(void) } /* - * Acquire session lock + * Acquire session list lock */ -void lock_session(struct ltt_session *session) +void lock_session_list(void) { - pthread_mutex_lock(&session->lock); + pthread_mutex_lock(<t_session_list.lock); } /* - * Release session lock + * Release session list lock */ -void unlock_session(struct ltt_session *session) +void unlock_session_list(void) { - pthread_mutex_unlock(&session->lock); + pthread_mutex_unlock(<t_session_list.lock); } /* - * get_session_count - * - * Return session_count + * Acquire session lock */ -unsigned int get_session_count(void) +void lock_session(struct ltt_session *session) { - unsigned int count; - - pthread_mutex_lock(<t_session_list.lock); - count = ltt_session_list.count; - pthread_mutex_unlock(<t_session_list.lock); + pthread_mutex_lock(&session->lock); +} - return count; +/* + * Release session lock + */ +void unlock_session(struct ltt_session *session) +{ + pthread_mutex_unlock(&session->lock); } /* @@ -129,14 +130,14 @@ struct ltt_session *find_session_by_name(char *name) int found = 0; struct ltt_session *iter; - pthread_mutex_lock(<t_session_list.lock); + lock_session_list(); cds_list_for_each_entry(iter, <t_session_list.head, list) { - if (strncmp(iter->name, name, strlen(name)) == 0) { + if (strncmp(iter->name, name, NAME_MAX) == 0) { found = 1; break; } } - pthread_mutex_unlock(<t_session_list.lock); + unlock_session_list(); if (!found) { iter = NULL; @@ -155,10 +156,10 @@ struct ltt_session *find_session_by_name(char *name) int destroy_session(char *name) { int found = -1; - struct ltt_session *iter; + struct ltt_session *iter, *tmp; - pthread_mutex_lock(<t_session_list.lock); - cds_list_for_each_entry(iter, <t_session_list.head, list) { + lock_session_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); del_session_list(iter); @@ -170,7 +171,7 @@ int destroy_session(char *name) break; } } - pthread_mutex_unlock(<t_session_list.lock); + unlock_session_list(); return found; } @@ -183,10 +184,7 @@ int destroy_session(char *name) int create_session(char *name, char *path) { int ret; - char date_time[NAME_MAX]; struct ltt_session *new_session; - time_t rawtime; - struct tm *timeinfo; new_session = find_session_by_name(name); if (new_session != NULL) { @@ -216,15 +214,7 @@ int create_session(char *name, char *path) /* Define session system path */ if (path != NULL) { - if (strstr(name, "auto-") == NULL) { - time(&rawtime); - timeinfo = localtime(&rawtime); - strftime(date_time, sizeof(date_time), "-%Y%m%d-%H%M%S", timeinfo); - } else { - date_time[0] = '\0'; - } - - if (asprintf(&new_session->path, "%s/%s%s", path, name, date_time) < 0) { + if (asprintf(&new_session->path, "%s", path) < 0) { ret = -ENOMEM; goto error_asprintf; } @@ -244,9 +234,9 @@ int create_session(char *name, char *path) new_session->ust_trace_count = 0; /* Add new session to the session list */ - pthread_mutex_lock(<t_session_list.lock); + lock_session_list(); add_session_list(new_session); - pthread_mutex_unlock(<t_session_list.lock); + unlock_session_list(); /* Init lock */ pthread_mutex_init(&new_session->lock, NULL); @@ -265,35 +255,3 @@ error_exist: error_malloc: return ret; } - -/* - * get_lttng_session - * - * Iterate over the global session list and fill the lttng_session array. - */ -void get_lttng_session(struct lttng_session *sessions) -{ - int i = 0; - struct ltt_session *iter; - struct lttng_session lsess; - - DBG("Getting all available session"); - - /* - * Iterate over session list and append data after the control struct in - * the buffer. - */ - pthread_mutex_lock(<t_session_list.lock); - cds_list_for_each_entry(iter, <t_session_list.head, list) { - strncpy(lsess.path, iter->path, sizeof(lsess.path)); - lsess.path[sizeof(lsess.path) - 1] = '\0'; - strncpy(lsess.name, iter->name, sizeof(lsess.name)); - lsess.name[sizeof(lsess.name) - 1] = '\0'; - memcpy(&sessions[i], &lsess, sizeof(lsess)); - i++; - /* Reset struct for next pass */ - memset(&lsess, 0, sizeof(lsess)); - } - pthread_mutex_unlock(<t_session_list.lock); -} -