};
struct lttng_interpreter_output;
+struct lttng_ust_bytecode_runtime_private;
/*
- * This structure is used in the probes. More specifically, the `filter` and
- * `node` fields are explicity used in the probes. When modifying this
- * structure we must not change the layout of these two fields as it is
- * considered ABI.
+ * This structure is used in the probes. More specifically, the
+ * `interpreter_funcs` and `node` fields are explicity used in the
+ * probes. When modifying this structure we must not change the layout
+ * of these two fields as it is considered ABI.
*/
struct lttng_bytecode_runtime {
+ struct lttng_ust_bytecode_runtime_private *priv;
+
/* Associated bytecode */
- struct lttng_ust_bytecode_node *bc;
union {
uint64_t (*filter)(void *interpreter_data,
const char *interpreter_stack_data);
const char *interpreter_stack_data,
struct lttng_interpreter_output *interpreter_output);
} interpreter_funcs;
- int link_failed;
struct cds_list_head node; /* list of bytecode runtime in event */
- /*
- * Pointer to a URCU-protected pointer owned by an `struct
- * lttng_session`or `struct lttng_event_notifier_group`.
- */
- struct lttng_ctx **pctx;
};
/*
* UST. Fields need to be only added at the end, never reordered, never
* removed.
*/
+
+struct lttng_ust_event_private;
+
struct lttng_event {
+ struct lttng_ust_event_private *priv; /* Private event interface */
+
unsigned int id;
- struct lttng_channel *chan;
int enabled;
- const struct lttng_event_desc *desc;
- struct lttng_ctx *ctx;
- enum lttng_ust_instrumentation instrumentation;
- struct cds_list_head node; /* Event list in session */
-
+ int has_enablers_without_bytecode;
/* list of struct lttng_bytecode_runtime, sorted by seqnum */
struct cds_list_head filter_bytecode_runtime_head;
- int has_enablers_without_bytecode;
- /* Backward references: list of lttng_enabler_ref (ref to enablers) */
- struct cds_list_head enablers_ref_head;
- struct cds_hlist_node hlist; /* session ht of events */
- int registered; /* has reg'd tracepoint probe */
+ struct lttng_channel *chan;
+ struct lttng_ctx *ctx;
};
struct lttng_event_notifier {
struct cds_hlist_head table[LTTNG_UST_ENUM_HT_SIZE];
};
+struct lttng_ust_session_private;
+
/*
* IMPORTANT: this structure is part of the ABI between the probe and
* UST. Fields need to be only added at the end, never reordered, never
* removed.
*/
struct lttng_session {
+ struct lttng_ust_session_private *priv; /* Private session interface */
+
int active; /* Is trace session active ? */
- int been_active; /* Been active ? */
- int objd; /* Object associated */
- struct cds_list_head chan_head; /* Channel list head */
- struct cds_list_head events_head; /* list of events */
- struct cds_list_head node; /* Session list */
-
- /* New UST 2.1 */
- /* List of enablers */
- struct cds_list_head enablers_head;
- struct lttng_ust_event_ht events_ht; /* ht of events */
- void *owner; /* object owner */
- int tstate:1; /* Transient enable state */
-
- /* New UST 2.4 */
- int statedump_pending:1;
-
- /* New UST 2.8 */
- struct lttng_ust_enum_ht enums_ht; /* ht of enumerations */
- struct cds_list_head enums_head;
- struct lttng_ctx *ctx; /* contexts for filters. */
};
int lttng_probe_register(struct lttng_probe_desc *desc);
int lttng_session_active(void);
-typedef int (*t_statedump_func_ptr)(struct lttng_session *session);
-
void lttng_ust_dl_update(void *ip);
#ifdef __cplusplus