#define LTTNG_UST_PROVIDER_MINOR 0
struct lttng_channel;
-struct lttng_session;
+struct lttng_ust_session;
struct lttng_ust_lib_ring_buffer_ctx;
struct lttng_ust_event_field;
struct lttng_event_notifier_group;
/* End of base ABI. Fields below should be used after checking struct_size. */
};
-#define __type_integer(_type, _byte_order, _base, _encoding) \
- { \
- .atype = atype_integer, \
- .u = \
- { \
- .integer = \
- { \
- .size = sizeof(_type) * CHAR_BIT, \
- .alignment = lttng_alignof(_type) * CHAR_BIT, \
- .signedness = lttng_is_signed_type(_type), \
- .reverse_byte_order = _byte_order != BYTE_ORDER, \
- .base = _base, \
- .encoding = lttng_encode_##_encoding, \
+#define __type_integer(_type, _byte_order, _base, _encoding) \
+ { \
+ .atype = atype_integer, \
+ .u = { \
+ .integer = { \
+ .size = sizeof(_type) * CHAR_BIT, \
+ .alignment = lttng_alignof(_type) * CHAR_BIT, \
+ .signedness = lttng_is_signed_type(_type), \
+ .reverse_byte_order = _byte_order != BYTE_ORDER, \
+ .base = _base, \
+ .encoding = lttng_encode_##_encoding, \
} \
}, \
} \
: (sizeof(_type) == sizeof(double) ? DBL_MANT_DIG \
: 0))
-#define __type_float(_type) \
- { \
- .atype = atype_float, \
- .u = \
- { \
- ._float = \
- { \
- .exp_dig = sizeof(_type) * CHAR_BIT \
- - _float_mant_dig(_type), \
- .mant_dig = _float_mant_dig(_type), \
- .alignment = lttng_alignof(_type) * CHAR_BIT, \
- .reverse_byte_order = BYTE_ORDER != FLOAT_WORD_ORDER, \
- } \
- } \
- } \
+#define __type_float(_type) \
+ { \
+ .atype = atype_float, \
+ .u = { \
+ ._float = { \
+ .exp_dig = sizeof(_type) * CHAR_BIT \
+ - _float_mant_dig(_type), \
+ .mant_dig = _float_mant_dig(_type), \
+ .alignment = lttng_alignof(_type) * CHAR_BIT, \
+ .reverse_byte_order = BYTE_ORDER != FLOAT_WORD_ORDER, \
+ } \
+ } \
+ } \
#define LTTNG_UST_FLOAT_TYPE_PADDING 24
struct lttng_float_type {
/* End of base ABI. Fields below should be used after checking struct_size. */
};
-enum lttng_ust_dynamic_type {
- LTTNG_UST_DYNAMIC_TYPE_NONE,
- LTTNG_UST_DYNAMIC_TYPE_S8,
- LTTNG_UST_DYNAMIC_TYPE_S16,
- LTTNG_UST_DYNAMIC_TYPE_S32,
- LTTNG_UST_DYNAMIC_TYPE_S64,
- LTTNG_UST_DYNAMIC_TYPE_U8,
- LTTNG_UST_DYNAMIC_TYPE_U16,
- LTTNG_UST_DYNAMIC_TYPE_U32,
- LTTNG_UST_DYNAMIC_TYPE_U64,
- LTTNG_UST_DYNAMIC_TYPE_FLOAT,
- LTTNG_UST_DYNAMIC_TYPE_DOUBLE,
- LTTNG_UST_DYNAMIC_TYPE_STRING,
- _NR_LTTNG_UST_DYNAMIC_TYPES,
-};
-
-struct lttng_ctx_value {
- enum lttng_ust_dynamic_type sel;
- union {
- int64_t s64;
- uint64_t u64;
- const char *str;
- double d;
- } u;
-};
-
-struct lttng_perf_counter_field;
-
-#define LTTNG_UST_CTX_FIELD_PADDING 40
-struct lttng_ctx_field {
- struct lttng_ust_event_field event_field;
- size_t (*get_size)(struct lttng_ctx_field *field, size_t offset);
- void (*record)(struct lttng_ctx_field *field,
- struct lttng_ust_lib_ring_buffer_ctx *ctx,
- struct lttng_channel *chan);
- void (*get_value)(struct lttng_ctx_field *field,
- struct lttng_ctx_value *value);
- union {
- struct lttng_perf_counter_field *perf_counter;
- char padding[LTTNG_UST_CTX_FIELD_PADDING];
- } u;
- void (*destroy)(struct lttng_ctx_field *field);
- char *field_name; /* Has ownership, dynamically allocated. */
-};
-
-#define LTTNG_UST_CTX_PADDING 20
-struct lttng_ctx {
- struct lttng_ctx_field *fields;
- unsigned int nr_fields;
- unsigned int allocated_fields;
- unsigned int largest_align;
- char padding[LTTNG_UST_CTX_PADDING];
-};
/*
* IMPORTANT: this structure is part of the ABI between the probe and
*/
struct lttng_ust_event_desc {
uint32_t struct_size; /* Size of this structure. */
+
const char *name;
void (*probe_callback)(void);
const struct lttng_event_ctx *ctx; /* context */
* removed.
*/
+struct lttng_ust_ctx;
struct lttng_ust_event_common_private;
enum lttng_ust_event_type {
*/
struct lttng_ust_event_common {
uint32_t struct_size; /* Size of this structure. */
+
struct lttng_ust_event_common_private *priv; /* Private event interface */
enum lttng_ust_event_type type;
*/
struct lttng_ust_event_recorder {
uint32_t struct_size; /* Size of this structure. */
+
struct lttng_ust_event_common *parent; /* Inheritance by aggregation. */
struct lttng_ust_event_recorder_private *priv; /* Private event record interface */
unsigned int id;
struct lttng_channel *chan;
- struct lttng_ctx *ctx;
+ struct lttng_ust_ctx *ctx;
/* End of base ABI. Fields below should be used after checking struct_size. */
};
/* End of base ABI. Fields below should be used after checking struct_size. */
};
-struct channel;
+struct lttng_ust_lib_ring_buffer_channel;
struct lttng_ust_shm_handle;
/*
* packet. Note that the size returned is only a hint, since it
* may change due to concurrent writes.
*/
- size_t (*packet_avail_size)(struct channel *chan,
+ size_t (*packet_avail_size)(struct lttng_ust_lib_ring_buffer_channel *chan,
struct lttng_ust_shm_handle *handle);
- int (*is_finalized)(struct channel *chan);
- int (*is_disabled)(struct channel *chan);
- int (*flush_buffer)(struct channel *chan, struct lttng_ust_shm_handle *handle);
+ int (*is_finalized)(struct lttng_ust_lib_ring_buffer_channel *chan);
+ int (*is_disabled)(struct lttng_ust_lib_ring_buffer_channel *chan);
+ int (*flush_buffer)(struct lttng_ust_lib_ring_buffer_channel *chan,
+ struct lttng_ust_shm_handle *handle);
void (*event_strcpy)(struct lttng_ust_lib_ring_buffer_ctx *ctx,
const char *src, size_t len);
* consumer process is designed to be allowed to do is to read
* and perform subbuffer flush.
*/
- struct channel *chan; /* Channel buffers */
+ struct lttng_ust_lib_ring_buffer_channel *chan; /* Channel buffers */
int enabled;
- struct lttng_ctx *ctx;
+ struct lttng_ust_ctx *ctx;
/* Event ID management */
- struct lttng_session *session;
+ struct lttng_ust_session *session;
int objd; /* Object associated to channel */
struct cds_list_head node; /* Channel list in session */
const struct lttng_ust_channel_ops *ops;
uint32_t struct_size; /* Size of this structure */
struct lttng_ust_event_recorder *event_recorder;
- struct lttng_ctx *chan_ctx; /* RCU dereferenced. */
- struct lttng_ctx *event_ctx; /* RCU dereferenced. */
+ struct lttng_ust_ctx *chan_ctx; /* RCU dereferenced. */
+ struct lttng_ust_ctx *event_ctx; /* RCU dereferenced. */
/* End of base ABI. Fields below should be used after checking struct_size. */
};
* structure. It should be queried before using additional fields added
* at the end of the structure.
*/
-struct lttng_session {
+struct lttng_ust_session {
uint32_t struct_size; /* Size of this structure */
+
struct lttng_ust_session_private *priv; /* Private session interface */
int active; /* Is trace session active ? */
void lttng_ust_probe_unregister(struct lttng_ust_probe_desc *desc);
/*
- * Can be used by applications that change their procname to clear the ust cached value.
+ * Applications that change their procname and need the new value to be
+ * reflected in the procname event context have to call this function to clear
+ * the internally cached value. This should not be called from a signal
+ * handler.
*/
-void lttng_context_procname_reset(void);
-
-struct lttng_transport *lttng_transport_find(const char *name);
-
-int lttng_session_active(void);
-
-void lttng_ust_dl_update(void *ip);
+void lttng_ust_context_procname_reset(void);
#ifdef __cplusplus
}