*/
static unsigned int add_session_list(struct ltt_session *ls)
{
+ assert(ls);
+
cds_list_add(&ls->list, <t_session_list.head);
return ltt_session_list.next_uuid++;
}
*/
static void del_session_list(struct ltt_session *ls)
{
+ assert(ls);
+
cds_list_del(&ls->list);
}
*/
void session_lock(struct ltt_session *session)
{
+ assert(session);
+
pthread_mutex_lock(&session->lock);
}
*/
void session_unlock(struct ltt_session *session)
{
+ assert(session);
+
pthread_mutex_unlock(&session->lock);
}
{
struct ltt_session *iter;
+ assert(name);
+
DBG2("Trying to find session by name %s", name);
cds_list_for_each_entry(iter, <t_session_list.head, list) {
* Delete session from the session list and free the memory.
*
* Return -1 if no session is found. On success, return 1;
+ * Should *NOT* be called with RCU read-side lock held.
*/
int session_destroy(struct ltt_session *session)
{
/* Safety check */
- if (session == NULL) {
- ERR("Session pointer was null on session destroy");
- return LTTNG_OK;
- }
+ assert(session);
DBG("Destroying session %s", session->name);
del_session_list(session);
pthread_mutex_destroy(&session->lock);
- rcu_read_lock();
consumer_destroy_output(session->consumer);
- rcu_read_unlock();
free(session);
return LTTNG_OK;
/*
* Create a brand new session and add it to the session list.
*/
-int session_create(char *name, char *path, uid_t uid, gid_t gid)
+int session_create(char *name, uid_t uid, gid_t gid)
{
int ret;
struct ltt_session *new_session;
goto error;
}
- /* Define session system path */
- if (path != NULL) {
- if (snprintf(new_session->path, PATH_MAX, "%s", path) < 0) {
- ret = LTTNG_ERR_FATAL;
- goto error_asprintf;
- }
- new_session->start_consumer = 1;
- } else {
- /* No path indicates that there is no use for a consumer. */
- new_session->start_consumer = 0;
- new_session->path[0] = '\0';
- }
-
/* Init kernel session */
new_session->kernel_session = NULL;
new_session->ust_session = NULL;
new_session->uid = uid;
new_session->gid = gid;
- /* Mkdir if we have a valid path and length */
- if (strlen(new_session->path) > 0) {
- ret = run_as_mkdir_recursive(new_session->path, S_IRWXU | S_IRWXG,
- new_session->uid, new_session->gid);
- if (ret < 0) {
- if (ret != -EEXIST) {
- ERR("Trace directory creation error");
- ret = LTTNG_ERR_CREATE_DIR_FAIL;
- goto error;
- }
- }
- }
-
/* Add new session to the session list */
session_lock_list();
new_session->id = add_session_list(new_session);
* up and, if valid, assign it to the session.
*/
- DBG("Tracing session %s created in %s with ID %u by UID %d GID %d", name,
- path, new_session->id, new_session->uid, new_session->gid);
+ DBG("Tracing session %s created with ID %u by UID %d GID %d", name,
+ new_session->id, new_session->uid, new_session->gid);
return LTTNG_OK;
error:
error_asprintf:
- if (new_session != NULL) {
- free(new_session);
- }
+ free(new_session);
error_malloc:
return ret;