X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=ltt-sessiond%2Fchannel.c;fp=ltt-sessiond%2Fchannel.c;h=fda679c78f3ebacfbee3ff9d52b4aabb25228cdc;hp=3870af4beb5ae407fd1d2ee527f41cd54cf2df03;hb=48842b309b2000205367409c0f29ca40ec3e251c;hpb=d6b189345152f407360bc287997d38d30054bd2c diff --git a/ltt-sessiond/channel.c b/ltt-sessiond/channel.c index 3870af4be..fda679c78 100644 --- a/ltt-sessiond/channel.c +++ b/ltt-sessiond/channel.c @@ -206,62 +206,60 @@ error: /* * Create UST channel and enable it on the tracer. */ -int channel_ust_create(struct ltt_ust_session *usession, - struct lttng_channel *chan, int sock) +int channel_ust_create(struct ltt_ust_session *usess, + struct lttng_channel *attr) { int ret; - struct lttng_channel *attr = chan; - struct ltt_ust_channel *suchan; - struct lttng_ust_channel_attr uattr; - struct object_data *obj; - - /* Creating channel attributes if needed */ - if (attr == NULL) { - /* FIXME: this appears to be a memory leak */ - /* TODO: get default for other UST domains */ - attr = channel_new_default_attr(LTTNG_DOMAIN_UST); - if (attr == NULL) { - ret = LTTCOMM_FATAL; + struct ltt_ust_channel *uchan; + //struct lttng_ust_channel_attr uattr; + //struct object_data *obj; + + uchan = trace_ust_find_channel_by_name(usess->domain_global.channels, + attr->name); + if (uchan == NULL) { + uchan = trace_ust_create_channel(attr, usess->pathname); + if (uchan == NULL) { + ret = LTTCOMM_UST_CHAN_FAIL; goto error; } - } - - suchan = trace_ust_create_channel(attr, usession->path); - if (suchan == NULL) { - ret = LTTCOMM_UST_CHAN_FAIL; + rcu_read_lock(); + hashtable_add_unique(usess->domain_global.channels, &uchan->node); + rcu_read_unlock(); + } else { + ret = LTTCOMM_UST_CHAN_EXIST; goto error; } - uattr.overwrite = attr->attr.overwrite; - uattr.subbuf_size = attr->attr.subbuf_size; - uattr.num_subbuf = attr->attr.num_subbuf; - uattr.switch_timer_interval = attr->attr.switch_timer_interval; - uattr.read_timer_interval = attr->attr.read_timer_interval; - uattr.output = attr->attr.output; - ret = ustctl_create_channel(sock, usession->handle, - &uattr, &obj); + /* TODO: NOTIFY ust application to update */ + /* + ret = ustctl_create_channel(sock, usession->handle, &uattr, &obj); if (ret < 0) { ret = LTTCOMM_UST_CHAN_FAIL; goto error; } + */ - suchan->attr.overwrite = uattr.overwrite; - suchan->attr.subbuf_size = uattr.subbuf_size; - suchan->attr.num_subbuf = uattr.num_subbuf; - suchan->attr.switch_timer_interval = uattr.switch_timer_interval; - suchan->attr.read_timer_interval = uattr.read_timer_interval; - suchan->attr.output = uattr.output; - suchan->handle = obj->handle; - suchan->attr.shm_fd = obj->shm_fd; - suchan->attr.wait_fd = obj->wait_fd; - suchan->attr.memory_map_size = obj->memory_map_size; - suchan->obj = obj; + /* + uchan->attr.overwrite = uattr.overwrite; + uchan->attr.subbuf_size = uattr.subbuf_size; + uchan->attr.num_subbuf = uattr.num_subbuf; + uchan->attr.switch_timer_interval = uattr.switch_timer_interval; + uchan->attr.read_timer_interval = uattr.read_timer_interval; + uchan->attr.output = uattr.output; + uchan->handle = obj->handle; + uchan->attr.shm_fd = obj->shm_fd; + uchan->attr.wait_fd = obj->wait_fd; + uchan->attr.memory_map_size = obj->memory_map_size; + uchan->obj = obj; + */ /* Add channel to session */ - cds_list_add(&suchan->list, &usession->channels.head); - usession->channels.count++; + //rcu_read_lock(); + //cds_list_add(&uchan->list, &usession->channels.head); + //usession->channels.count++; + //rcu_read_unlock(); - DBG2("Channel %s UST create successfully for sock:%d", suchan->name, sock); + //DBG2("Channel %s UST create successfully for sock:%d", uchan->name, sock); ret = LTTCOMM_OK; @@ -276,9 +274,9 @@ int channel_ust_enable(struct ltt_ust_session *usession, struct ltt_ust_channel *uchan, int sock) { int ret = LTTCOMM_OK; +#ifdef DISABLE struct object_data obj; - obj.handle = uchan->handle; obj.shm_fd = uchan->attr.shm_fd; obj.wait_fd = uchan->attr.wait_fd; obj.memory_map_size = uchan->attr.memory_map_size; @@ -289,6 +287,7 @@ int channel_ust_enable(struct ltt_ust_session *usession, } ret = LTTCOMM_OK; end: +#endif return ret; } @@ -299,9 +298,9 @@ int channel_ust_disable(struct ltt_ust_session *usession, struct ltt_ust_channel *uchan, int sock) { int ret = LTTCOMM_OK; +#ifdef DISABLE struct object_data obj; - obj.handle = uchan->handle; obj.shm_fd = uchan->attr.shm_fd; obj.wait_fd = uchan->attr.wait_fd; obj.memory_map_size = uchan->attr.memory_map_size; @@ -312,5 +311,6 @@ int channel_ust_disable(struct ltt_ust_session *usession, } ret = LTTCOMM_OK; end: +#endif return ret; }