projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: set hidden attribute to utils_* calls
[lttng-tools.git]
/
src
/
common
/
consumer.h
diff --git
a/src/common/consumer.h
b/src/common/consumer.h
index 43989e4c55757d760cad1b4fdf93ca29b739453c..f804b7260ce7e6d013eb55ff36c90487930562e3 100644
(file)
--- a/
src/common/consumer.h
+++ b/
src/common/consumer.h
@@
-31,6
+31,7
@@
#include <common/compat/fcntl.h>
#include <common/compat/uuid.h>
#include <common/sessiond-comm/sessiond-comm.h>
#include <common/compat/fcntl.h>
#include <common/compat/uuid.h>
#include <common/sessiond-comm/sessiond-comm.h>
+#include <common/pipe.h>
/* Commands for consumer */
enum lttng_consumer_command {
/* Commands for consumer */
enum lttng_consumer_command {
@@
-53,6
+54,8
@@
enum lttng_consumer_command {
LTTNG_CONSUMER_CLOSE_METADATA,
LTTNG_CONSUMER_SETUP_METADATA,
LTTNG_CONSUMER_FLUSH_CHANNEL,
LTTNG_CONSUMER_CLOSE_METADATA,
LTTNG_CONSUMER_SETUP_METADATA,
LTTNG_CONSUMER_FLUSH_CHANNEL,
+ LTTNG_CONSUMER_SNAPSHOT_CHANNEL,
+ LTTNG_CONSUMER_SNAPSHOT_METADATA,
};
/* State of each fd in consumer */
};
/* State of each fd in consumer */
@@
-84,6
+87,8
@@
enum consumer_channel_type {
CONSUMER_CHANNEL_TYPE_DATA = 1,
};
CONSUMER_CHANNEL_TYPE_DATA = 1,
};
+extern struct lttng_consumer_global_data consumer_data;
+
struct stream_list {
struct cds_list_head head;
unsigned int count;
struct stream_list {
struct cds_list_head head;
unsigned int count;
@@
-129,6
+134,13
@@
struct lttng_consumer_channel {
* LTTNG_CONSUMER_GET_CHANNEL.
*/
struct stream_list streams;
* LTTNG_CONSUMER_GET_CHANNEL.
*/
struct stream_list streams;
+
+ /*
+ * List of streams in no monitor mode for this channel. Used ONLY for
+ * snapshots recording.
+ */
+ struct stream_list stream_no_monitor_list;
+
/*
* Set if the channel is metadata. We keep a reference to the stream
* because we have to flush data once pushed by the session daemon. For a
/*
* Set if the channel is metadata. We keep a reference to the stream
* because we have to flush data once pushed by the session daemon. For a
@@
-151,6
+163,12
@@
struct lttng_consumer_channel {
/* On-disk circular buffer */
uint64_t tracefile_size;
uint64_t tracefile_count;
/* On-disk circular buffer */
uint64_t tracefile_size;
uint64_t tracefile_count;
+ /*
+ * Monitor or not the streams of this channel meaning this indicates if the
+ * streams should be sent to the data/metadata thread or added to the no
+ * monitor list of the channel.
+ */
+ unsigned int monitor;
};
/*
};
/*
@@
-221,6
+239,7
@@
struct lttng_consumer_stream {
* Lock to use the stream FDs since they are used between threads.
*
* This is nested INSIDE the consumer_data lock.
* Lock to use the stream FDs since they are used between threads.
*
* This is nested INSIDE the consumer_data lock.
+ * This is nested INSIDE the metadata cache lock.
* This is nested OUTSIDE consumer_relayd_sock_pair lock.
*/
pthread_mutex_t lock;
* This is nested OUTSIDE consumer_relayd_sock_pair lock.
*/
pthread_mutex_t lock;
@@
-241,6
+260,9
@@
struct lttng_consumer_stream {
/* On-disk circular buffer */
uint64_t tracefile_size_current;
uint64_t tracefile_count_current;
/* On-disk circular buffer */
uint64_t tracefile_size_current;
uint64_t tracefile_count_current;
+
+ /* Node for the no monitor stream list in a channel. */
+ struct cds_list_head no_monitor_node;
};
/*
};
/*
@@
-346,11
+368,11
@@
struct lttng_consumer_local_data {
int consumer_channel_pipe[2];
int consumer_splice_metadata_pipe[2];
/* Data stream poll thread pipe. To transfer data stream to the thread */
int consumer_channel_pipe[2];
int consumer_splice_metadata_pipe[2];
/* Data stream poll thread pipe. To transfer data stream to the thread */
-
int consumer_data_pipe[2]
;
+
struct lttng_pipe *consumer_data_pipe
;
/* to let the signal handler wake up the fd receiver thread */
int consumer_should_quit[2];
/* Metadata poll thread pipe. Transfer metadata stream to it */
/* to let the signal handler wake up the fd receiver thread */
int consumer_should_quit[2];
/* Metadata poll thread pipe. Transfer metadata stream to it */
-
int consumer_metadata_pipe[2]
;
+
struct lttng_pipe *consumer_metadata_pipe
;
};
/*
};
/*
@@
-456,7
+478,7
@@
struct lttng_consumer_stream *consumer_allocate_stream(uint64_t channel_key,
const char *channel_name,
uid_t uid,
gid_t gid,
const char *channel_name,
uid_t uid,
gid_t gid,
-
in
t relayd_id,
+
uint64_
t relayd_id,
uint64_t session_id,
int cpu,
int *alloc_ret,
uint64_t session_id,
int cpu,
int *alloc_ret,
@@
-467,10
+489,11
@@
struct lttng_consumer_channel *consumer_allocate_channel(uint64_t key,
const char *name,
uid_t uid,
gid_t gid,
const char *name,
uid_t uid,
gid_t gid,
-
in
t relayd_id,
+
uint64_
t relayd_id,
enum lttng_event_output output,
uint64_t tracefile_size,
enum lttng_event_output output,
uint64_t tracefile_size,
- uint64_t tracefile_count);
+ uint64_t tracefile_count,
+ unsigned int monitor);
void consumer_del_stream(struct lttng_consumer_stream *stream,
struct lttng_ht *ht);
void consumer_del_metadata_stream(struct lttng_consumer_stream *stream,
void consumer_del_stream(struct lttng_consumer_stream *stream,
struct lttng_ht *ht);
void consumer_del_metadata_stream(struct lttng_consumer_stream *stream,
@@
-529,5
+552,6
@@
int consumer_send_status_channel(int sock,
struct lttng_consumer_channel *channel);
void notify_thread_del_channel(struct lttng_consumer_local_data *ctx,
uint64_t key);
struct lttng_consumer_channel *channel);
void notify_thread_del_channel(struct lttng_consumer_local_data *ctx,
uint64_t key);
+void consumer_destroy_relayd(struct consumer_relayd_sock_pair *relayd);
#endif /* LIB_CONSUMER_H */
#endif /* LIB_CONSUMER_H */
This page took
0.030288 seconds
and
4
git commands to generate.