Modify kconsumerd thread and spawning function
[lttng-tools.git] / ltt-sessiond / main.c
index 722402311586b7f7341e229939608d448ddfe502..68481146eb1badc3bc30c2810448434013ac50a5 100644 (file)
@@ -45,6 +45,7 @@
 #include "ust-ctl.h"
 #include "session.h"
 #include "traceable-app.h"
+#include "lttng-kconsumerd.h"
 
 /*
  * TODO:
@@ -55,7 +56,7 @@
 
 /* Const values */
 const char default_home_dir[] = DEFAULT_HOME_DIR;
-const char default_tracing_group[] = DEFAULT_TRACING_GROUP;
+const char default_tracing_group[] = LTTNG_DEFAULT_TRACING_GROUP;
 const char default_ust_sock_dir[] = DEFAULT_UST_SOCK_DIR;
 const char default_global_apps_pipe[] = DEFAULT_GLOBAL_APPS_PIPE;
 
@@ -331,6 +332,7 @@ static void *thread_manage_kconsumerd(void *data)
                goto error;
        }
 
+       /* Getting status code from kconsumerd */
        ret = lttcomm_recv_unix_sock(sock, &code, sizeof(enum lttcomm_return_code));
        if (ret <= 0) {
                goto error;
@@ -339,6 +341,7 @@ static void *thread_manage_kconsumerd(void *data)
        if (code == KCONSUMERD_COMMAND_SOCK_READY) {
                kconsumerd_cmd_sock = lttcomm_connect_unix_sock(kconsumerd_cmd_unix_sock_path);
                if (kconsumerd_cmd_sock < 0) {
+                       sem_post(&kconsumerd_sem);
                        perror("kconsumerd connect");
                        goto error;
                }
@@ -351,20 +354,15 @@ static void *thread_manage_kconsumerd(void *data)
                goto error;
        }
 
-       while (1) {
-               /* Wait for any kconsumerd error */
-               ret = lttcomm_recv_unix_sock(sock, &code, sizeof(enum lttcomm_return_code));
-               if (ret <= 0) {
-                       ERR("Kconsumerd closed the command socket");
-                       goto error;
-               }
-
-               ERR("Kconsumerd return code : %s", lttcomm_get_readable_code(-code));
-               if (code != KCONSUMERD_POLL_HUP) {
-                       goto error;
-               }
+       /* Wait for any kconsumerd error */
+       ret = lttcomm_recv_unix_sock(sock, &code, sizeof(enum lttcomm_return_code));
+       if (ret <= 0) {
+               ERR("Kconsumerd closed the command socket");
+               goto error;
        }
 
+       ERR("Kconsumerd return code : %s", lttcomm_get_readable_code(-code));
+
 error:
        kconsumerd_pid = 0;
        DBG("Kconsumerd thread dying");
@@ -460,9 +458,15 @@ static int spawn_kconsumerd_thread(void)
        /* Wait for the kconsumerd thread to be ready */
        sem_wait(&kconsumerd_sem);
 
+       if (kconsumerd_pid == 0) {
+               ERR("Kconsumerd did not start");
+               goto error;
+       }
+
        return 0;
 
 error:
+       ret = LTTCOMM_KERN_CONSUMER_FAIL;
        return ret;
 }
 
@@ -534,11 +538,9 @@ static int start_kconsumerd(void)
        DBG("Kconsumerd pid %d", ret);
 
        DBG("Spawning kconsumerd thread");
-
        ret = spawn_kconsumerd_thread();
        if (ret < 0) {
                ERR("Fatal error spawning kconsumerd thread");
-               ret = LTTCOMM_FATAL;
                goto error;
        }
 
@@ -584,7 +586,7 @@ static int send_kconsumerd_fds(int sock, struct ltt_kernel_session *session)
 
        /* Setup header */
        lkh.payload_size = nb_fd * sizeof(struct lttcomm_kconsumerd_msg);
-       lkh.cmd_type = LTTCOMM_ADD_STREAM;
+       lkh.cmd_type = ADD_STREAM;
 
        DBG("Sending kconsumerd header");
 
This page took 0.024247 seconds and 4 git commands to generate.