projects
/
lttng-modules.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Implement capturing payload on event notifier
[lttng-modules.git]
/
include
/
lttng
/
events.h
diff --git
a/include/lttng/events.h
b/include/lttng/events.h
index bb3f9363f3d346d45e41ef054269bb8512df4101..80de505056fe8a265d06c02f43717c92934fc0ea 100644
(file)
--- a/
include/lttng/events.h
+++ b/
include/lttng/events.h
@@
-234,6
+234,7
@@
enum lttng_event_type {
enum lttng_bytecode_node_type {
LTTNG_BYTECODE_NODE_TYPE_FILTER,
enum lttng_bytecode_node_type {
LTTNG_BYTECODE_NODE_TYPE_FILTER,
+ LTTNG_BYTECODE_NODE_TYPE_CAPTURE,
};
struct lttng_bytecode_node {
};
struct lttng_bytecode_node {
@@
-257,6
+258,8
@@
enum lttng_bytecode_interpreter_ret {
/* Other bits are kept for future use. */
};
/* Other bits are kept for future use. */
};
+struct lttng_interpreter_output;
+
struct lttng_bytecode_runtime {
/* Associated bytecode */
struct lttng_bytecode_node *bc;
struct lttng_bytecode_runtime {
/* Associated bytecode */
struct lttng_bytecode_node *bc;
@@
-264,6
+267,10
@@
struct lttng_bytecode_runtime {
uint64_t (*filter)(void *filter_data,
struct lttng_probe_ctx *lttng_probe_ctx,
const char *filter_stack_data);
uint64_t (*filter)(void *filter_data,
struct lttng_probe_ctx *lttng_probe_ctx,
const char *filter_stack_data);
+ uint64_t (*capture)(void *filter_data,
+ struct lttng_probe_ctx *lttng_probe_ctx,
+ const char *capture_stack_data,
+ struct lttng_interpreter_output *output);
} interpreter_funcs;
int link_failed;
struct list_head node; /* list of bytecode runtime in event */
} interpreter_funcs;
int link_failed;
struct list_head node; /* list of bytecode runtime in event */
@@
-373,9
+380,13
@@
struct lttng_event_notifier {
struct hlist_node hlist; /* session ht of event_notifiers */
/* list of struct lttng_bytecode_runtime, sorted by seqnum */
struct list_head filter_bytecode_runtime_head;
struct hlist_node hlist; /* session ht of event_notifiers */
/* list of struct lttng_bytecode_runtime, sorted by seqnum */
struct list_head filter_bytecode_runtime_head;
+ size_t num_captures;
+ struct list_head capture_bytecode_runtime_head;
int has_enablers_without_bytecode;
int has_enablers_without_bytecode;
- void (*send_notification)(struct lttng_event_notifier *event_notifier);
+ void (*send_notification)(struct lttng_event_notifier *event_notifier,
+ struct lttng_probe_ctx *lttng_probe_ctx,
+ const char *interpreter_stack_data);
struct lttng_event_notifier_group *group; /* Weak ref */
};
struct lttng_event_notifier_group *group; /* Weak ref */
};
@@
-393,7
+404,7
@@
struct lttng_enabler {
enum lttng_enabler_format_type format_type;
enum lttng_enabler_format_type format_type;
- /* head list of struct lttng_
ust_filter_
bytecode_node */
+ /* head list of struct lttng_bytecode_node */
struct list_head filter_bytecode_head;
struct lttng_kernel_event event_param;
struct list_head filter_bytecode_head;
struct lttng_kernel_event event_param;
@@
-417,8
+428,13
@@
struct lttng_event_notifier_enabler {
struct lttng_enabler base;
struct list_head node; /* List of event_notifier enablers */
struct lttng_event_notifier_group *group;
struct lttng_enabler base;
struct list_head node; /* List of event_notifier enablers */
struct lttng_event_notifier_group *group;
+
+ /* head list of struct lttng_bytecode_node */
+ struct list_head capture_bytecode_head;
+ uint64_t num_captures;
};
};
+
static inline
struct lttng_enabler *lttng_event_enabler_as_enabler(
struct lttng_event_enabler *event_enabler)
static inline
struct lttng_enabler *lttng_event_enabler_as_enabler(
struct lttng_event_enabler *event_enabler)
@@
-900,11
+916,14
@@
int lttng_event_enabler_attach_filter_bytecode(struct lttng_event_enabler *event
int lttng_event_notifier_enabler_attach_filter_bytecode(
struct lttng_event_notifier_enabler *event_notifier_enabler,
struct lttng_kernel_filter_bytecode __user *bytecode);
int lttng_event_notifier_enabler_attach_filter_bytecode(
struct lttng_event_notifier_enabler *event_notifier_enabler,
struct lttng_kernel_filter_bytecode __user *bytecode);
+int lttng_event_notifier_enabler_attach_capture_bytecode(
+ struct lttng_event_notifier_enabler *event_notifier_enabler,
+ struct lttng_kernel_capture_bytecode __user *bytecode);
void lttng_enabler_link_bytecode(const struct lttng_event_desc *event_desc,
struct lttng_ctx *ctx,
void lttng_enabler_link_bytecode(const struct lttng_event_desc *event_desc,
struct lttng_ctx *ctx,
- struct list_head *bytecode_runtime_head,
- struct l
ttng_enabler *enabler
);
+ struct list_head *
instance_
bytecode_runtime_head,
+ struct l
ist_head *enabler_bytecode_runtime_head
);
int lttng_probes_init(void);
int lttng_probes_init(void);
This page took
0.024057 seconds
and
4
git commands to generate.