Namespace liblttng-ust-ctl symbols
[lttng-ust.git] / src / lib / lttng-ust / lttng-ust-comm.c
index 6f5be12060c3023b78b160cfdb48dce1ec5ac55b..442ca892c3b13dd10c7cb5e8447cf53677b00445 100644 (file)
@@ -25,7 +25,6 @@
 #include <signal.h>
 #include <limits.h>
 #include <urcu/uatomic.h>
-#include "futex.h"
 #include <urcu/compiler.h>
 #include <lttng/urcu/urcu-ust.h>
 
 #include <lttng/ust-libc-wrapper.h>
 #include <lttng/ust-thread.h>
 #include <lttng/ust-tracer.h>
+#include <lttng/ust-common.h>
 #include <urcu/tls-compat.h>
+#include "common/compat/futex.h"
 #include "common/ustcomm.h"
 #include "common/ust-fd.h"
 #include "common/logging.h"
 #include "common/macros.h"
-#include "tracepoint-internal.h"
+#include "common/tracepoint.h"
 #include "lttng-tracer-core.h"
 #include "common/compat/pthread.h"
 #include "common/procname.h"
@@ -356,24 +357,6 @@ static int got_timeout_env;
 
 static char *get_map_shm(struct sock_info *sock_info);
 
-ssize_t lttng_ust_read(int fd, void *buf, size_t len)
-{
-       ssize_t ret;
-       size_t copied = 0, to_copy = len;
-
-       do {
-               ret = read(fd, buf + copied, to_copy);
-               if (ret > 0) {
-                       copied += ret;
-                       to_copy -= ret;
-               }
-       } while ((ret > 0 && to_copy > 0)
-               || (ret < 0 && errno == EINTR));
-       if (ret > 0) {
-               ret = copied;
-       }
-       return ret;
-}
 /*
  * Returns the HOME directory path. Caller MUST NOT free(3) the returned
  * pointer.
@@ -638,7 +621,7 @@ void get_allow_blocking(void)
 }
 
 static
-int register_to_sessiond(int socket, enum ustctl_socket_type type)
+int register_to_sessiond(int socket, enum lttng_ust_ctl_socket_type type)
 {
        return ustcomm_send_reg_msg(socket,
                type,
@@ -1876,7 +1859,7 @@ restart:
                sock_info->root_handle = ret;
        }
 
-       ret = register_to_sessiond(sock_info->socket, USTCTL_SOCKET_CMD);
+       ret = register_to_sessiond(sock_info->socket, LTTNG_UST_CTL_SOCKET_CMD);
        if (ret < 0) {
                ERR("Error registering to %s ust cmd socket",
                        sock_info->name);
@@ -1969,7 +1952,7 @@ restart:
        }
 
        ret = register_to_sessiond(sock_info->notify_socket,
-                       USTCTL_SOCKET_NOTIFY);
+                       LTTNG_UST_CTL_SOCKET_NOTIFY);
        if (ret < 0) {
                ERR("Error registering to %s ust notify socket",
                        sock_info->name);
@@ -2061,7 +2044,7 @@ quit:
  * Weak symbol to call when the ust malloc wrapper is not loaded.
  */
 __attribute__((weak))
-void lttng_ust_libc_wrapper_malloc_init(void)
+void lttng_ust_libc_wrapper_malloc_ctor(void)
 {
 }
 
@@ -2070,10 +2053,10 @@ void lttng_ust_libc_wrapper_malloc_init(void)
  * sessiond by polling the application common named pipe.
  */
 static
-void lttng_ust_init(void)
+void lttng_ust_ctor(void)
        __attribute__((constructor));
 static
-void lttng_ust_init(void)
+void lttng_ust_ctor(void)
 {
        struct timespec constructor_timeout;
        sigset_t sig_all_blocked, orig_parent_mask;
@@ -2120,10 +2103,21 @@ void lttng_ust_init(void)
         * sessiond (otherwise leading to errors when trying to create
         * sessiond before the init functions are completed).
         */
+
+       /*
+        * Both the logging and getenv lazy-initialization uses getenv()
+        * internally and thus needs to be explicitly initialized in
+        * liblttng-ust before we start any threads as an unsuspecting normally
+        * single threaded application using liblttng-ust could be using
+        * setenv() which is not thread-safe.
+        */
        lttng_ust_logging_init();
-       lttng_ust_getenv_init();        /* Needs lttng_ust_logging_init() to be completed. */
+       lttng_ust_getenv_init();
+
+       /* Call the liblttng-ust-common constructor. */
+       lttng_ust_common_ctor();
+
        lttng_ust_tp_init();
-       lttng_ust_init_fd_tracker();
        lttng_ust_clock_init();
        lttng_ust_getcpu_plugin_init();
        lttng_ust_statedump_init();
@@ -2133,7 +2127,7 @@ void lttng_ust_init(void)
        /*
         * Invoke ust malloc wrapper init before starting other threads.
         */
-       lttng_ust_libc_wrapper_malloc_init();
+       lttng_ust_libc_wrapper_malloc_ctor();
 
        timeout_mode = get_constructor_timeout(&constructor_timeout);
 
@@ -2436,7 +2430,7 @@ void lttng_ust_after_fork_parent(sigset_t *restore_sigset)
  * After fork, in the child, we need to cleanup all the leftover state,
  * except the worker thread which already magically disappeared thanks
  * to the weird Linux fork semantics. After tyding up, we call
- * lttng_ust_init() again to start over as a new PID.
+ * lttng_ust_ctor() again to start over as a new PID.
  *
  * This is meant for forks() that have tracing in the child between the
  * fork and following exec call (if there is any).
@@ -2457,7 +2451,7 @@ void lttng_ust_after_fork_child(sigset_t *restore_sigset)
        lttng_ust_cleanup(0);
        /* Release mutexes and reenable signals */
        ust_after_fork_common(restore_sigset);
-       lttng_ust_init();
+       lttng_ust_ctor();
 }
 
 void lttng_ust_after_setns(void)
This page took 0.026013 seconds and 4 git commands to generate.