Merge branch 'master' of git://git.lttng.org/lttng-tools
authorDavid Goulet <david.goulet@polymtl.ca>
Tue, 29 Nov 2011 23:18:13 +0000 (18:18 -0500)
committerDavid Goulet <david.goulet@polymtl.ca>
Tue, 29 Nov 2011 23:18:13 +0000 (18:18 -0500)
1  2 
lttng-sessiond/main.c

diff --combined lttng-sessiond/main.c
index 7d898a94e19938ebbe697ef686d3b3bef95d9091,f7505849bdeb9bcb6681a46e77214292efabce97..ff096e1b90db47940a5c11092e785fd7b67724f9
@@@ -50,7 -50,7 +50,7 @@@
  #include "event.h"
  #include "futex.h"
  #include "hashtable.h"
 -#include "kernel-ctl.h"
 +#include "kernel.h"
  #include "lttng-sessiond.h"
  #include "shm.h"
  #include "ust-app.h"
@@@ -1532,7 -1532,7 +1532,7 @@@ static pid_t spawn_consumerd(struct con
                        break;
                case LTTNG_CONSUMER64_UST:
                {
-                       char *tmpnew;
+                       char *tmpnew = NULL;
  
                        if (consumerd64_libdir[0] != '\0') {
                                char *tmp;
@@@ -2191,13 -2191,7 +2191,13 @@@ static int cmd_disable_channel(struct l
                        goto error;
                }
  
 -              ret = ust_app_disable_channel_all(usess, uchan);
 +              /* Already disabled */
 +              if (!uchan->enabled) {
 +                      DBG2("UST channel %s already disabled", channel_name);
 +                      break;
 +              }
 +
 +              ret = ust_app_disable_channel_glb(usess, uchan);
                if (ret < 0) {
                        ret = LTTCOMM_UST_DISABLE_FAIL;
                        goto error;
@@@ -2305,32 -2299,28 +2305,32 @@@ static int cmd_enable_channel(struct lt
                                goto error;
                        }
  
 -                      rcu_read_lock();
 -                      hashtable_add_unique(usess->domain_global.channels, &uchan->node);
 -                      rcu_read_unlock();
 -                      DBG2("UST channel %s added to global domain HT", attr->name);
 -
                        /* Add channel to all registered applications */
 -                      ret = ust_app_create_channel_all(usess, uchan);
 +                      ret = ust_app_create_channel_glb(usess, uchan);
                        if (ret != 0) {
                                ret = LTTCOMM_UST_CHAN_FAIL;
                                goto error;
                        }
 +
 +                      rcu_read_lock();
 +                      hashtable_add_unique(usess->domain_global.channels, &uchan->node);
 +                      rcu_read_unlock();
 +
 +                      DBG2("UST channel %s added to global domain HT", attr->name);
                } else {
                        /* If already enabled, everything is OK */
                        if (uchan->enabled) {
 -                              ret = LTTCOMM_OK;
 -                              goto error;
 +                              break;
                        }
  
 -                      ret = ust_app_enable_channel_all(usess, uchan);
 +                      ret = ust_app_enable_channel_glb(usess, uchan);
                        if (ret < 0) {
 -                              ret = LTTCOMM_UST_ENABLE_FAIL;
 -                              goto error;
 +                              if (ret != -EEXIST) {
 +                                      ret = LTTCOMM_UST_CHAN_ENABLE_FAIL;
 +                                      goto error;
 +                              } else {
 +                                      ret = LTTCOMM_OK;
 +                              }
                        }
                }
  
@@@ -2388,7 -2378,6 +2388,7 @@@ static int cmd_disable_event(struct ltt
        {
                struct ltt_ust_session *usess;
                struct ltt_ust_channel *uchan;
 +              struct ltt_ust_event *uevent;
  
                usess = session->ust_session;
  
                        goto error;
                }
  
 -              ret = ust_app_disable_event(usess, uchan, event_name);
 +              uevent = trace_ust_find_event_by_name(uchan->events, event_name);
 +              if (uevent == NULL) {
 +                      ret = LTTCOMM_UST_EVENT_NOT_FOUND;
 +                      goto error;
 +              }
 +
 +              ret = ust_app_disable_event_glb(usess, uchan, uevent);
                if (ret < 0) {
                        ret = LTTCOMM_UST_DISABLE_FAIL;
                        goto error;
                }
  
 +              uevent->enabled = 0;
 +
                DBG2("Disable UST event %s in channel %s completed", event_name,
                                channel_name);
  
@@@ -2476,7 -2457,7 +2476,7 @@@ static int cmd_disable_event_all(struc
                        goto error;
                }
  
 -              ret = ust_app_disable_event_all(usess, uchan);
 +              ret = ust_app_disable_all_event_glb(usess, uchan);
                if (ret < 0) {
                        ret = LTTCOMM_UST_DISABLE_FAIL;
                        goto error;
@@@ -2599,10 -2580,10 +2599,10 @@@ static int cmd_enable_event(struct ltt_
        }
        case LTTNG_DOMAIN_UST:
        {
 -              struct ltt_ust_channel *uchan;
 -              struct ltt_ust_event *uevent;
                struct lttng_channel *attr;
 +              struct ltt_ust_channel *uchan;
  
 +              /* Get channel from global UST domain */
                uchan = trace_ust_find_channel_by_name(usess->domain_global.channels,
                                channel_name);
                if (uchan == NULL) {
                                goto error;
                        }
                        snprintf(attr->name, NAME_MAX, "%s", channel_name);
 +                      attr->name[NAME_MAX - 1] = '\0';
  
                        /* Use the internal command enable channel */
                        ret = cmd_enable_channel(session, domain, attr);
 -                      if (ret < 0) {
 +                      if (ret != LTTCOMM_OK) {
                                free(attr);
                                goto error;
                        }
 -
                        free(attr);
  
                        /* Get the newly created channel reference back */
                        }
                }
  
 -              uevent = trace_ust_find_event_by_name(uchan->events, event->name);
 -              if (uevent == NULL) {
 -                      uevent = trace_ust_create_event(event);
 -                      if (uevent == NULL) {
 -                              ret = LTTCOMM_FATAL;
 -                              goto error;
 -                      }
 -
 -              }
 +              /* At this point, the session and channel exist on the tracer */
  
 -              ret = ust_app_create_event_all(usess, uchan, uevent);
 -              if (ret < 0) {
 -                      ret = LTTCOMM_UST_ENABLE_FAIL;
 +              ret = event_ust_enable_tracepoint(usess, domain, uchan, event);
 +              if (ret != LTTCOMM_OK) {
                        goto error;
                }
 -
 -              /* Add ltt ust event to channel */
 -              rcu_read_lock();
 -              hashtable_add_unique(uchan->events, &uevent->node);
 -              rcu_read_unlock();
 -
 -              uevent->enabled = 1;
 -
 -              DBG3("UST ltt event %s added to channel %s", uevent->attr.name,
 -                              uchan->name);
                break;
        }
        case LTTNG_DOMAIN_UST_EXEC_NAME:
This page took 0.038677 seconds and 5 git commands to generate.