Decrease liburcu dependency to 0.9+
[lttng-ust.git] / liblttng-ust / lttng-ust-comm.c
index 3d60596a9896ef345a5e29b17bf91e051ba3c1cb..1c35da250324799eaabc311bc7e3bc2f61b7ace3 100644 (file)
@@ -958,6 +958,8 @@ int handle_message(struct sock_info *sock_info,
        }
        case LTTNG_UST_STREAM:
        {
+               int close_ret;
+
                /* Receive shm_fd, wakeup_fd */
                ret = ustcomm_recv_stream_from_sessiond(sock,
                        NULL,
@@ -973,6 +975,22 @@ int handle_message(struct sock_info *sock_info,
                                        &args, sock_info);
                else
                        ret = -ENOSYS;
+               if (args.stream.shm_fd >= 0) {
+                       lttng_ust_lock_fd_tracker();
+                       close_ret = close(args.stream.shm_fd);
+                       lttng_ust_unlock_fd_tracker();
+                       args.stream.shm_fd = -1;
+                       if (close_ret)
+                               PERROR("close");
+               }
+               if (args.stream.wakeup_fd >= 0) {
+                       lttng_ust_lock_fd_tracker();
+                       close_ret = close(args.stream.wakeup_fd);
+                       lttng_ust_unlock_fd_tracker();
+                       args.stream.wakeup_fd = -1;
+                       if (close_ret)
+                               PERROR("close");
+               }
                break;
        }
        case LTTNG_UST_CONTEXT:
@@ -2126,7 +2144,7 @@ void ust_before_fork(sigset_t *save_sigset)
        pthread_mutex_lock(&ust_fork_mutex);
 
        ust_lock_nocheck();
-       urcu_bp_before_fork();
+       rcu_bp_before_fork();
        lttng_ust_lock_fd_tracker();
        lttng_perf_lock();
 }
@@ -2154,7 +2172,7 @@ void ust_after_fork_parent(sigset_t *restore_sigset)
        if (URCU_TLS(lttng_ust_nest_count))
                return;
        DBG("process %d", getpid());
-       urcu_bp_after_fork_parent();
+       rcu_bp_after_fork_parent();
        /* Release mutexes and reenable signals */
        ust_after_fork_common(restore_sigset);
 }
@@ -2180,7 +2198,7 @@ void ust_after_fork_child(sigset_t *restore_sigset)
        ust_context_vgids_reset();
        DBG("process %d", getpid());
        /* Release urcu mutexes */
-       urcu_bp_after_fork_child();
+       rcu_bp_after_fork_child();
        lttng_ust_cleanup(0);
        /* Release mutexes and reenable signals */
        ust_after_fork_common(restore_sigset);
This page took 0.028904 seconds and 5 git commands to generate.