X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=include%2Flttng%2Fevents.h;h=3a5f94d339339e7102a64c070508173232b8d7d8;hb=7c1ba2cad7412f74a10e0a7aabda67f6d649e15c;hp=f852676b7ef0b5907055630d2daddedb46a5dba5;hpb=8a57ec025ffbe56153748fd69b60118862707182;p=lttng-modules.git diff --git a/include/lttng/events.h b/include/lttng/events.h index f852676b..3a5f94d3 100644 --- a/include/lttng/events.h +++ b/include/lttng/events.h @@ -26,12 +26,8 @@ #define lttng_is_signed_type(type) (((type) -1) < (type) 1) struct lttng_channel; -struct lttng_session; -struct lttng_metadata_cache; +struct lttng_kernel_session; struct lttng_kernel_ring_buffer_ctx; -struct perf_event; -struct perf_event_attr; -struct lib_ring_buffer_config; /* Type description */ @@ -388,44 +384,6 @@ struct lttng_kernel_channel_buffer_ops { const char __user *src, size_t len); }; -struct lttng_counter_ops { - struct lib_counter *(*counter_create)(size_t nr_dimensions, - const size_t *max_nr_elem, /* for each dimension */ - int64_t global_sum_step); - void (*counter_destroy)(struct lib_counter *counter); - int (*counter_add)(struct lib_counter *counter, const size_t *dimension_indexes, - int64_t v); - /* - * counter_read reads a specific cpu's counter if @cpu >= 0, or - * the global aggregation counter if @cpu == -1. - */ - int (*counter_read)(struct lib_counter *counter, const size_t *dimension_indexes, int cpu, - int64_t *value, bool *overflow, bool *underflow); - /* - * counter_aggregate returns the total sum of all per-cpu counters and - * the global aggregation counter. - */ - int (*counter_aggregate)(struct lib_counter *counter, const size_t *dimension_indexes, - int64_t *value, bool *overflow, bool *underflow); - int (*counter_clear)(struct lib_counter *counter, const size_t *dimension_indexes); -}; - -struct lttng_transport { - char *name; - struct module *owner; - struct list_head node; - struct lttng_kernel_channel_buffer_ops ops; -}; - -struct lttng_counter_transport { - char *name; - struct module *owner; - struct list_head node; - struct lttng_counter_ops ops; -}; - -struct lttng_syscall_filter; - #define LTTNG_EVENT_HT_BITS 12 #define LTTNG_EVENT_HT_SIZE (1U << LTTNG_EVENT_HT_BITS) @@ -446,7 +404,7 @@ struct lttng_channel { int enabled; struct lttng_kernel_ctx *ctx; /* Event ID management */ - struct lttng_session *session; + struct lttng_kernel_session *session; struct file *file; /* File associated to channel */ unsigned int free_event_id; /* Next event ID to allocate */ struct list_head list; /* Channel list */ @@ -471,19 +429,6 @@ struct lttng_channel { tstate:1; /* Transient enable state */ }; -struct lttng_metadata_stream { - void *priv; /* Ring buffer private data */ - struct lttng_metadata_cache *metadata_cache; - unsigned int metadata_in; /* Bytes read from the cache */ - unsigned int metadata_out; /* Bytes consumed from stream */ - int finalized; /* Has channel been finalized */ - wait_queue_head_t read_wait; /* Reader buffer-level wait queue */ - struct list_head list; /* Stream list */ - struct lttng_transport *transport; - uint64_t version; /* Current version of the metadata cache */ - bool coherent; /* Stream in a coherent state */ -}; - #define LTTNG_DYNAMIC_LEN_STACK_SIZE 128 struct lttng_dynamic_len_stack { @@ -494,112 +439,40 @@ struct lttng_dynamic_len_stack { DECLARE_PER_CPU(struct lttng_dynamic_len_stack, lttng_dynamic_len_stack); /* - * struct lttng_id_tracker declared in header due to deferencing of *v + * struct lttng_kernel_id_tracker declared in header due to deferencing of *v * in RCU_INITIALIZER(v). */ #define LTTNG_ID_HASH_BITS 6 #define LTTNG_ID_TABLE_SIZE (1 << LTTNG_ID_HASH_BITS) -enum tracker_type { - TRACKER_PID, - TRACKER_VPID, - TRACKER_UID, - TRACKER_VUID, - TRACKER_GID, - TRACKER_VGID, - - TRACKER_UNKNOWN, -}; - -struct lttng_id_tracker_rcu { +struct lttng_kernel_id_tracker_rcu { struct hlist_head id_hash[LTTNG_ID_TABLE_SIZE]; }; -struct lttng_id_tracker { - struct lttng_session *session; - enum tracker_type tracker_type; - struct lttng_id_tracker_rcu *p; /* RCU dereferenced. */ -}; +struct lttng_kernel_id_tracker { + struct lttng_kernel_id_tracker_private *priv; /* Private API */ -struct lttng_id_hash_node { - struct hlist_node hlist; - int id; + struct lttng_kernel_id_tracker_rcu *p; /* RCU dereferenced. */ }; -struct lttng_session { - int active; /* Is trace session active ? */ - int been_active; /* Has trace session been active ? */ - struct file *file; /* File associated to session */ - struct list_head chan; /* Channel list head */ - struct list_head events; /* Event list head */ - struct list_head list; /* Session list */ - unsigned int free_chan_id; /* Next chan ID to allocate */ - uuid_le uuid; /* Trace session unique ID */ - struct lttng_metadata_cache *metadata_cache; - struct lttng_id_tracker pid_tracker; - struct lttng_id_tracker vpid_tracker; - struct lttng_id_tracker uid_tracker; - struct lttng_id_tracker vuid_tracker; - struct lttng_id_tracker gid_tracker; - struct lttng_id_tracker vgid_tracker; - unsigned int metadata_dumped:1, - tstate:1; /* Transient enable state */ - /* List of event enablers */ - struct list_head enablers_head; - /* Hash table of events */ - struct lttng_event_ht events_ht; - char name[LTTNG_KERNEL_ABI_SESSION_NAME_LEN]; - char creation_time[LTTNG_KERNEL_ABI_SESSION_CREATION_TIME_ISO8601_LEN]; -}; - -struct lttng_counter { - struct file *file; /* File associated to counter. */ - struct file *owner; - struct lttng_counter_transport *transport; - struct lib_counter *counter; - struct lttng_counter_ops *ops; -}; - -struct lttng_event_notifier_group { - struct file *file; /* File associated to event notifier group */ - struct file *notif_file; /* File used to expose notifications to userspace. */ - struct list_head node; /* event notifier group list */ - struct list_head enablers_head; /* List of enablers */ - struct list_head event_notifiers_head; /* List of event notifier */ - struct lttng_event_notifier_ht event_notifiers_ht; /* Hash table of event notifiers */ - struct lttng_kernel_channel_buffer_ops *ops; - struct lttng_transport *transport; - struct channel *chan; /* Ring buffer channel for event notifier group. */ - struct lib_ring_buffer *buf; /* Ring buffer for event notifier group. */ - wait_queue_head_t read_wait; - struct irq_work wakeup_pending; /* Pending wakeup irq work. */ - struct lttng_kernel_event_notifier *sc_unknown; /* for unknown syscalls */ - struct lttng_kernel_event_notifier *sc_compat_unknown; +struct lttng_kernel_session_private; - struct lttng_syscall_filter *sc_filter; +struct lttng_kernel_session { + struct lttng_kernel_session_private *priv; /* Private session interface */ - struct hlist_head *event_notifier_syscall_dispatch; - struct hlist_head *event_notifier_compat_syscall_dispatch; - struct hlist_head *event_notifier_exit_syscall_dispatch; - struct hlist_head *event_notifier_exit_compat_syscall_dispatch; - - struct hlist_head event_notifier_unknown_syscall_dispatch; - struct hlist_head event_notifier_compat_unknown_syscall_dispatch; - struct hlist_head event_notifier_exit_unknown_syscall_dispatch; - struct hlist_head event_notifier_exit_compat_unknown_syscall_dispatch; - - int syscall_all_entry; - int syscall_all_exit; - - unsigned int sys_enter_registered:1, sys_exit_registered:1; + int active; /* Is trace session active ? */ - struct lttng_counter *error_counter; - size_t error_counter_len; + struct lttng_kernel_id_tracker pid_tracker; + struct lttng_kernel_id_tracker vpid_tracker; + struct lttng_kernel_id_tracker uid_tracker; + struct lttng_kernel_id_tracker vuid_tracker; + struct lttng_kernel_id_tracker gid_tracker; + struct lttng_kernel_id_tracker vgid_tracker; }; int lttng_kernel_probe_register(struct lttng_kernel_probe_desc *desc); void lttng_kernel_probe_unregister(struct lttng_kernel_probe_desc *desc); -bool lttng_id_tracker_lookup(struct lttng_id_tracker_rcu *p, int id); +bool lttng_id_tracker_lookup(struct lttng_kernel_id_tracker_rcu *p, int id); #endif /* _LTTNG_EVENTS_H */