struct lttng_channel;
struct lttng_kernel_session;
-struct lttng_metadata_cache;
struct lttng_kernel_ring_buffer_ctx;
-struct perf_event;
-struct perf_event_attr;
-struct lib_ring_buffer_config;
/* Type description */
const char *name;
const struct lttng_kernel_enum_entry **entries;
unsigned int nr_entries;
+ const struct lttng_kernel_probe_desc *probe_desc;
};
/* Event field description */
nofilter:1; /* do not consider for filter */
};
+#ifndef PARAMS
+#define PARAMS(args...) args
+#endif
+
#define lttng_kernel_static_type_integer(_size, _alignment, _signedness, _byte_order, _base) \
((const struct lttng_kernel_type_common *) __LTTNG_COMPOUND_LITERAL(const struct lttng_kernel_type_integer, { \
.parent = { \
.encoding = lttng_kernel_string_encoding_##_encoding, \
}))
-#define lttng_kernel_static_type_struct(_nr_fields, _fields, _alignment) \
- ((const struct lttng_kernel_type_common *) __LTTNG_COMPOUND_LITERAL(const struct lttng_kernel_type_struct, { \
+#define lttng_kernel_static_type_struct_init(_nr_fields, _fields, _alignment) \
+ { \
.parent = { \
.type = lttng_kernel_type_struct, \
}, \
.nr_fields = (_nr_fields), \
.fields = _fields, \
.alignment = (_alignment), \
- }))
+ }
+
+#define lttng_kernel_static_type_struct(_nr_fields, _fields, _alignment) \
+ ((const struct lttng_kernel_type_common *) __LTTNG_COMPOUND_LITERAL(const struct lttng_kernel_type_struct, \
+ lttng_kernel_static_type_struct_init(_nr_fields, PARAMS(_fields), _alignment) \
+ ))
#define lttng_kernel_static_type_variant(_nr_choices, _choices, _tag_name, _alignment) \
((const struct lttng_kernel_type_common *) __LTTNG_COMPOUND_LITERAL(const struct lttng_kernel_type_variant, { \
uint8_t interruptible;
};
+struct lttng_kernel_tracepoint_class {
+ void (*probe_callback)(void);
+ const struct lttng_kernel_event_field **fields; /* event payload */
+ unsigned int nr_fields;
+ const struct lttng_kernel_probe_desc *probe_desc;
+};
+
struct lttng_kernel_event_desc {
const char *event_name; /* lttng-modules name */
const char *event_kname; /* Linux kernel name (tracepoints) */
const struct lttng_kernel_probe_desc *probe_desc;
- void (*probe_callback)(void);
- const struct lttng_kernel_event_field **fields; /* event payload */
- unsigned int nr_fields;
+ const struct lttng_kernel_tracepoint_class *tp_class;
struct module *owner;
};
const char __user *src, size_t len);
};
-struct lttng_syscall_filter;
-
-#define LTTNG_EVENT_HT_BITS 12
-#define LTTNG_EVENT_HT_SIZE (1U << LTTNG_EVENT_HT_BITS)
-
-struct lttng_event_ht {
- struct hlist_head table[LTTNG_EVENT_HT_SIZE];
-};
-
-#define LTTNG_EVENT_NOTIFIER_HT_BITS 12
-#define LTTNG_EVENT_NOTIFIER_HT_SIZE (1U << LTTNG_EVENT_NOTIFIER_HT_BITS)
-
-struct lttng_event_notifier_ht {
- struct hlist_head table[LTTNG_EVENT_NOTIFIER_HT_SIZE];
-};
-
struct lttng_channel {
unsigned int id;
struct channel *chan; /* Channel buffers */
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_kernel_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_kernel_id_tracker_rcu *p; /* RCU dereferenced. */
};
struct lttng_kernel_session_private;
int active; /* Is trace session active ? */
- 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;
+ 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 */