X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fust-app.h;h=11202ecaea5845a4ae8f354c7218a0a8d4a9b68c;hp=c6294d0a4626df9d51b8d602cb72ccbeb89d3cb6;hb=5c786dedd0156b93984f89ba47ec841277ed7dae;hpb=d88aee689d5bd0067f362a323cb69c37717df59f diff --git a/src/bin/lttng-sessiond/ust-app.h b/src/bin/lttng-sessiond/ust-app.h index c6294d0a4..11202ecae 100644 --- a/src/bin/lttng-sessiond/ust-app.h +++ b/src/bin/lttng-sessiond/ust-app.h @@ -131,6 +131,8 @@ struct ust_app_channel { int is_sent; /* Unique key used to identify the channel on the consumer side. */ uint64_t key; + /* Id of the tracing channel set on creation. */ + uint64_t tracing_channel_id; /* Number of stream that this channel is expected to receive. */ unsigned int expected_stream_count; char name[LTTNG_UST_SYM_NAME_LEN]; @@ -141,10 +143,8 @@ struct ust_app_channel { struct ust_app_session *session; struct lttng_ht *ctx; struct lttng_ht *events; - /* - * UST event registry. The ONLY writer is the application thread. - */ - struct ust_registry_channel registry; + uint64_t tracefile_size; + uint64_t tracefile_count; /* * Node indexed by channel name in the channels' hash table of a session. */ @@ -154,6 +154,8 @@ struct ust_app_channel { * ust_objd hash table in the ust_app object. */ struct lttng_ht_node_ulong ust_objd_node; + /* For delayed reclaim */ + struct rcu_head rcu_head; }; struct ust_app_session { @@ -168,21 +170,35 @@ struct ust_app_session { /* started: has the session been in started state at any time ? */ int started; /* allows detection of start vs restart. */ int handle; /* used has unique identifier for app session */ - int id; /* session unique identifier */ - struct ust_app_channel *metadata; - struct ust_registry_session registry; + + /* + * Tracing session ID. Multiple ust app session can have the same tracing + * session id making this value NOT unique to the object. + */ + uint64_t tracing_id; + uint64_t id; /* Unique session identifier */ struct lttng_ht *channels; /* Registered channels */ - struct lttng_ht_node_ulong node; + struct lttng_ht_node_u64 node; char path[PATH_MAX]; - /* UID/GID of the user owning the session */ + /* UID/GID of the application owning the session */ uid_t uid; gid_t gid; + /* Effective UID and GID. Same as the tracing session. */ + uid_t euid; + gid_t egid; struct cds_list_head teardown_node; /* * Once at least *one* session is created onto the application, the * corresponding consumer is set so we can use it on unregistration. */ struct consumer_output *consumer; + enum lttng_buffer_type buffer_type; + /* ABI of the session. Same value as the application. */ + uint32_t bits_per_long; + /* For delayed reclaim */ + struct rcu_head rcu_head; + /* If the channel's streams have to be outputed or not. */ + unsigned int output_traces; }; /* @@ -214,6 +230,8 @@ struct ust_app { uint32_t v_minor; /* Version minor number */ /* Extra for the NULL byte. */ char name[UST_APP_PROCNAME_LEN + 1]; + /* Type of buffer this application uses. */ + enum lttng_buffer_type buffer_type; struct lttng_ht *sessions; struct lttng_ht_node_ulong pid_n; struct lttng_ht_node_ulong sock_n; @@ -245,8 +263,6 @@ int ust_app_register_done(int sock) int ust_app_version(struct ust_app *app); void ust_app_unregister(int sock); unsigned long ust_app_list_count(void); -int ust_app_start_trace(struct ltt_ust_session *usess, struct ust_app *app); -int ust_app_stop_trace(struct ltt_ust_session *usess, struct ust_app *app); int ust_app_start_trace_all(struct ltt_ust_session *usess); int ust_app_stop_trace_all(struct ltt_ust_session *usess); int ust_app_destroy_trace_all(struct ltt_ust_session *usess); @@ -289,6 +305,12 @@ int ust_app_recv_notify(int sock); void ust_app_add(struct ust_app *app); struct ust_app *ust_app_create(struct ust_register_msg *msg, int sock); void ust_app_notify_sock_unregister(int sock); +ssize_t ust_app_push_metadata(struct ust_registry_session *registry, + struct consumer_socket *socket, int send_zero_data); +void ust_app_destroy(struct ust_app *app); +int ust_app_snapshot_record(struct ltt_ust_session *usess, + struct snapshot_output *output, int wait, unsigned int nb_streams); +unsigned int ust_app_get_nb_stream(struct ltt_ust_session *usess); #else /* HAVE_LIBLTTNG_UST_CTL */ @@ -475,6 +497,28 @@ static inline void ust_app_notify_sock_unregister(int sock) { } +static inline +ssize_t ust_app_push_metadata(struct ust_registry_session *registry, + struct consumer_socket *socket, int send_zero_data) +{ + return 0; +} +static inline +void ust_app_destroy(struct ust_app *app) +{ + return; +} +static inline +int ust_app_snapshot_record(struct ltt_ust_session *usess, + struct snapshot_output *output, int wait, unsigned int nb_stream) +{ + return 0; +} +static inline +unsigned int ust_app_get_nb_stream(struct ltt_ust_session *usess) +{ + return 0; +} #endif /* HAVE_LIBLTTNG_UST_CTL */