X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fconsumer.h;h=7277c405ec38bd0da71556a0c4a56c4035d47b6a;hb=2a85be8e0e679da996b48252b1d9aebb9bb29126;hp=e9c7e31e31990eafde155956fb6a0f726cf95506;hpb=92816cc33a1add3c8276839bd6335e17423577dd;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/consumer.h b/src/bin/lttng-sessiond/consumer.h index e9c7e31e3..7277c405e 100644 --- a/src/bin/lttng-sessiond/consumer.h +++ b/src/bin/lttng-sessiond/consumer.h @@ -27,6 +27,7 @@ struct snapshot; struct snapshot_output; +struct ltt_session; enum consumer_dst_type { CONSUMER_DST_LOCAL, @@ -66,26 +67,6 @@ struct consumer_socket { struct consumer_data { enum lttng_consumer_type type; - pthread_t thread; /* Worker thread interacting with the consumer */ - - /* Conditions used by the consumer thread to indicate readiness. */ - pthread_cond_t cond; - pthread_condattr_t condattr; - pthread_mutex_t cond_mutex; - - /* - * This is a flag condition indicating that the consumer thread is ready - * and connected to the lttng-consumerd daemon. This flag MUST only be - * updated by locking the condition mutex above or before spawning a - * consumer thread. - * - * A value of 0 means that the thread is NOT ready. A value of 1 means that - * the thread consumer did connect successfully to the lttng-consumerd - * daemon. A negative value indicates that there is been an error and the - * thread has likely quit. - */ - int consumer_thread_is_ready; - /* Mutex to control consumerd pid assignation */ pthread_mutex_t pid_mutex; pid_t pid; @@ -167,14 +148,15 @@ struct consumer_output { /* * Subdirectory path name used for both local and network - * consumer (/kernel or /ust). + * consumer ("/kernel", "/ust", or empty). */ - char subdir[LTTNG_PATH_MAX]; + char domain_subdir[max(sizeof(DEFAULT_KERNEL_TRACE_DIR), + sizeof(DEFAULT_UST_TRACE_DIR))]; /* * Hashtable of consumer_socket index by the file descriptor value. For - * multiarch consumer support, we can have more than one consumer (ex: 32 - * and 64 bit). + * multiarch consumer support, we can have more than one consumer (ex: + * 32 and 64 bit). */ struct lttng_ht *socks; @@ -215,7 +197,8 @@ struct consumer_output *consumer_create_output(enum consumer_dst_type type); struct consumer_output *consumer_copy_output(struct consumer_output *obj); void consumer_output_get(struct consumer_output *obj); void consumer_output_put(struct consumer_output *obj); -int consumer_set_network_uri(struct consumer_output *obj, +int consumer_set_network_uri(const struct ltt_session *session, + struct consumer_output *obj, struct lttng_uri *uri); int consumer_send_fds(struct consumer_socket *sock, const int *fds, size_t nb_fd); @@ -240,8 +223,6 @@ int consumer_recv_status_channel(struct consumer_socket *sock, void consumer_output_send_destroy_relayd(struct consumer_output *consumer); int consumer_create_socket(struct consumer_data *data, struct consumer_output *output); -int consumer_set_subdir(struct consumer_output *consumer, - const char *session_name); void consumer_init_ask_channel_comm_msg(struct lttcomm_consumer_msg *msg, uint64_t subbuf_size, @@ -312,15 +293,16 @@ int consumer_get_lost_packets(uint64_t session_id, uint64_t channel_key, struct consumer_output *consumer, uint64_t *lost); /* Snapshot command. */ -int consumer_snapshot_channel(struct consumer_socket *socket, uint64_t key, - struct snapshot_output *output, int metadata, +enum lttng_error_code consumer_snapshot_channel(struct consumer_socket *socket, + uint64_t key, struct snapshot_output *output, int metadata, uid_t uid, gid_t gid, const char *session_path, int wait, uint64_t nb_packets_per_stream, uint64_t trace_archive_id); /* Rotation commands. */ int consumer_rotate_channel(struct consumer_socket *socket, uint64_t key, uid_t uid, gid_t gid, struct consumer_output *output, - char *domain_path, bool is_metadata_channel, uint64_t new_chunk_id); + const char *domain_path, bool is_metadata_channel, + uint64_t new_chunk_id); int consumer_rotate_rename(struct consumer_socket *socket, uint64_t session_id, const struct consumer_output *output, const char *old_path, const char *new_path, uid_t uid, gid_t gid);