Fix: ust-consumer: segfault on snapshot after regenerate metadata
[lttng-tools.git] / src / common / consumer / consumer.h
index 582385c82bef2454361f39b6dca0d70b294157d7..737f2a42c449099035bbf8c671090c4fb1234310 100644 (file)
 #include <common/buffer-view.h>
 #include <common/dynamic-array.h>
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-
 struct lttng_consumer_local_data;
 
 /* Commands for consumer */
@@ -400,6 +396,13 @@ typedef void (*lock_cb)(struct lttng_consumer_stream *);
  */
 typedef void (*unlock_cb)(struct lttng_consumer_stream *);
 
+/*
+ * Assert that the stream and channel lock and any other stream type specific
+ * lock that need to be acquired during the processing of a read_subbuffer
+ * operation is acquired.
+ */
+typedef void (*assert_locked_cb)(struct lttng_consumer_stream *);
+
 /*
  * Invoked when a subbuffer's metadata version does not match the last
  * known metadata version.
@@ -651,6 +654,7 @@ struct lttng_consumer_stream {
                send_live_beacon_cb send_live_beacon;
                on_sleep_cb on_sleep;
                unlock_cb unlock;
+               assert_locked_cb assert_locked;
        } read_subbuffer_ops;
        struct metadata_bucket *metadata_bucket;
 };
@@ -1069,8 +1073,4 @@ enum lttcomm_return_code lttng_consumer_open_channel_packets(
 int consumer_metadata_wakeup_pipe(const struct lttng_consumer_channel *channel);
 void lttng_consumer_sigbus_handle(void *addr);
 
-#ifdef __cplusplus
-}
-#endif
-
 #endif /* LIB_CONSUMER_H */
This page took 0.024167 seconds and 4 git commands to generate.