Fix: namespace our gettid wrapper
[lttng-ust.git] / libringbuffer / ring_buffer_frontend.c
index 07724b71ceb8939b0dfaac3872dc0483de6fb451..5b30970d048239a75a8fd60ef39227b0966d9ec2 100644 (file)
@@ -901,11 +901,12 @@ static void channel_print_errors(struct channel *chan,
 }
 
 static void channel_free(struct channel *chan,
-               struct lttng_ust_shm_handle *handle)
+               struct lttng_ust_shm_handle *handle,
+               int consumer)
 {
        channel_backend_free(&chan->backend, handle);
        /* chan is freed by shm teardown */
-       shm_object_table_destroy(handle->table);
+       shm_object_table_destroy(handle->table, consumer);
        free(handle);
 }
 
@@ -1028,7 +1029,7 @@ struct lttng_ust_shm_handle *channel_create(const struct lttng_ust_lib_ring_buff
 
 error_backend_init:
 error_append:
-       shm_object_table_destroy(handle->table);
+       shm_object_table_destroy(handle->table, 1);
 error_table_alloc:
        free(handle);
        return NULL;
@@ -1060,7 +1061,7 @@ struct lttng_ust_shm_handle *channel_handle_create(void *data,
        return handle;
 
 error_table_object:
-       shm_object_table_destroy(handle->table);
+       shm_object_table_destroy(handle->table, 0);
 error_table_alloc:
        free(handle);
        return NULL;
@@ -1088,9 +1089,10 @@ unsigned int channel_handle_get_nr_streams(struct lttng_ust_shm_handle *handle)
 }
 
 static
-void channel_release(struct channel *chan, struct lttng_ust_shm_handle *handle)
+void channel_release(struct channel *chan, struct lttng_ust_shm_handle *handle,
+               int consumer)
 {
-       channel_free(chan, handle);
+       channel_free(chan, handle, consumer);
 }
 
 /**
@@ -1122,7 +1124,7 @@ void channel_destroy(struct channel *chan, struct lttng_ust_shm_handle *handle,
         * sessiond/consumer are keeping a reference on the shm file
         * descriptor directly. No need to refcount.
         */
-       channel_release(chan, handle);
+       channel_release(chan, handle, consumer);
        return;
 }
 
@@ -1923,9 +1925,11 @@ int lib_ring_buffer_try_switch_slow(enum switch_mode mode,
  * Force a sub-buffer switch. This operation is completely reentrant : can be
  * called while tracing is active with absolutely no lock held.
  *
- * Note, however, that as a v_cmpxchg is used for some atomic
- * operations, this function must be called from the CPU which owns the buffer
- * for a ACTIVE flush.
+ * For RING_BUFFER_SYNC_PER_CPU ring buffers, as a v_cmpxchg is used for
+ * some atomic operations, this function must be called from the CPU
+ * which owns the buffer for a ACTIVE flush. However, for
+ * RING_BUFFER_SYNC_GLOBAL ring buffers, this function can be called
+ * from any CPU.
  */
 void lib_ring_buffer_switch_slow(struct lttng_ust_lib_ring_buffer *buf, enum switch_mode mode,
                                 struct lttng_ust_shm_handle *handle)
This page took 0.024078 seconds and 4 git commands to generate.