#ifndef _LTTNG_EVENTS_INTERNAL_H
#define _LTTNG_EVENTS_INTERNAL_H
+#include <wrapper/compiler_attributes.h>
+
#include <lttng/events.h>
struct lttng_syscall_filter;
*/
struct lttng_enabler_ref {
struct list_head node; /* enabler ref list */
- struct lttng_enabler *ref; /* backward ref */
+ struct lttng_event_enabler_common *ref; /* backward ref */
};
struct lttng_krp; /* Kretprobe handling */
struct lttng_kernel_bytecode_node {
enum lttng_kernel_bytecode_type type;
struct list_head node;
- struct lttng_enabler *enabler;
+ struct lttng_event_enabler_common *enabler;
struct {
uint32_t len;
uint32_t reloc_offset;
* Enabler field, within whatever object is enabling an event. Target of
* backward reference.
*/
-struct lttng_enabler {
+struct lttng_event_enabler_common {
enum lttng_enabler_format_type format_type;
/* head list of struct lttng_kernel_bytecode_node */
};
struct lttng_event_enabler {
- struct lttng_enabler base;
- struct list_head node; /* per-session list of enablers */
+ struct lttng_event_enabler_common parent;
+ struct list_head node; /* per-session list of enablers */
+ bool published; /* published in per-session list. */
struct lttng_kernel_channel_buffer *chan;
};
struct lttng_event_notifier_enabler {
- struct lttng_enabler base;
+ struct lttng_event_enabler_common parent;
uint64_t error_counter_index;
struct list_head node; /* List of event_notifier enablers */
struct lttng_event_notifier_group *group;
if (!type_integer)
return false;
switch (type_integer->size) {
- case 8: /* Fall-through. */
- case 16: /* Fall-through. */
- case 32: /* Fall-through. */
+ case 8:
+ lttng_fallthrough;
+ case 16:
+ lttng_fallthrough;
+ case 32:
+ lttng_fallthrough;
case 64:
break;
default:
void *event_filter_ctx);
static inline
-struct lttng_enabler *lttng_event_enabler_as_enabler(
+struct lttng_event_enabler_common *lttng_event_enabler_as_enabler(
struct lttng_event_enabler *event_enabler)
{
- return &event_enabler->base;
+ return &event_enabler->parent;
}
static inline
-struct lttng_enabler *lttng_event_notifier_enabler_as_enabler(
+struct lttng_event_enabler_common *lttng_event_notifier_enabler_as_enabler(
struct lttng_event_notifier_enabler *event_notifier_enabler)
{
- return &event_notifier_enabler->base;
+ return &event_notifier_enabler->parent;
}
int lttng_context_init(void);
#endif
#if defined(CONFIG_TIME_NS) && \
- (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,6,0))
+ (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,6,0) || \
+ LTTNG_RHEL_KERNEL_RANGE(4,18,0,305,0,0, 4,19,0,0,0,0))
int lttng_add_time_ns_to_ctx(struct lttng_kernel_ctx **ctx);
#else
static inline
enum lttng_enabler_format_type format_type,
struct lttng_kernel_abi_event *event_param,
struct lttng_kernel_channel_buffer *chan);
+void lttng_event_enabler_session_add(struct lttng_kernel_session *session,
+ struct lttng_event_enabler *event_enabler);
+void lttng_event_enabler_destroy(struct lttng_event_enabler *event_enabler);
int lttng_event_enabler_enable(struct lttng_event_enabler *event_enabler);
int lttng_event_enabler_disable(struct lttng_event_enabler *event_enabler);
struct lttng_kernel_abi_capture_bytecode __user *bytecode);
int lttng_desc_match_enabler(const struct lttng_kernel_event_desc *desc,
- struct lttng_enabler *enabler);
+ struct lttng_event_enabler_common *enabler);
void lttng_enabler_link_bytecode(const struct lttng_kernel_event_desc *event_desc,
struct lttng_kernel_ctx *ctx,
unsigned int read_timer_interval);
void lttng_metadata_channel_destroy(struct lttng_kernel_channel_buffer *chan);
-struct lttng_kernel_event_recorder *lttng_kernel_event_recorder_create(struct lttng_kernel_channel_buffer *chan,
- struct lttng_kernel_abi_event *event_param,
- const struct lttng_kernel_event_desc *event_desc,
- enum lttng_kernel_abi_instrumentation itype);
-struct lttng_kernel_event_recorder *_lttng_kernel_event_recorder_create(struct lttng_kernel_channel_buffer *chan,
- struct lttng_kernel_abi_event *event_param,
- const struct lttng_kernel_event_desc *event_desc,
- enum lttng_kernel_abi_instrumentation itype);
+struct lttng_kernel_event_recorder *lttng_kernel_event_recorder_create(struct lttng_event_enabler *event_enabler,
+ const struct lttng_kernel_event_desc *event_desc);
+struct lttng_kernel_event_recorder *_lttng_kernel_event_recorder_create(struct lttng_event_enabler *event_enabler,
+ const struct lttng_kernel_event_desc *event_desc);
struct lttng_kernel_event_recorder *lttng_event_compat_old_create(struct lttng_kernel_channel_buffer *chan,
struct lttng_kernel_abi_old_event *old_event_param,
const struct lttng_kernel_event_desc *internal_desc);