projects
/
lttng-modules.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Write context fields into trace
[lttng-modules.git]
/
ltt-events.h
diff --git
a/ltt-events.h
b/ltt-events.h
index 0b4638975cd718fc9e5e01885ed5f1ed89e03f1e..bea5af1c988eeeb4e0539b6f2a34c46ec1205b22 100644
(file)
--- a/
ltt-events.h
+++ b/
ltt-events.h
@@
-14,6
+14,9
@@
#include <linux/kprobes.h>
#include "ltt-debugfs-abi.h"
#include <linux/kprobes.h>
#include "ltt-debugfs-abi.h"
+#undef is_signed_type
+#define is_signed_type(type) (((type)(-1)) < 0)
+
struct ltt_channel;
struct ltt_session;
struct lib_ring_buffer_ctx;
struct ltt_channel;
struct ltt_session;
struct lib_ring_buffer_ctx;
@@
-45,17
+48,17
@@
struct lttng_enum_entry {
const char *string;
};
const char *string;
};
-#define __type_integer(_type, _byte_order, _base
)
\
+#define __type_integer(_type, _byte_order, _base
, _encoding)
\
{ \
.atype = atype_integer, \
.u.basic.integer = \
{ \
{ \
.atype = atype_integer, \
.u.basic.integer = \
{ \
- .size = sizeof(_type)
,
\
+ .size = sizeof(_type)
* CHAR_BIT,
\
.alignment = ltt_alignof(_type) * CHAR_BIT, \
.signedness = is_signed_type(_type), \
.reverse_byte_order = _byte_order != __BYTE_ORDER, \
.base = _base, \
.alignment = ltt_alignof(_type) * CHAR_BIT, \
.signedness = is_signed_type(_type), \
.reverse_byte_order = _byte_order != __BYTE_ORDER, \
.base = _base, \
- .encoding = lttng_encode_
none,
\
+ .encoding = lttng_encode_
##_encoding,
\
}, \
} \
}, \
} \
@@
-117,7
+120,10
@@
struct lttng_event_field {
struct lttng_ctx_field {
const char *name;
struct lttng_type type;
struct lttng_ctx_field {
const char *name;
struct lttng_type type;
- void *callback;
+ size_t (*get_size)(size_t offset);
+ void (*record)(struct lttng_ctx_field *field,
+ struct lib_ring_buffer_ctx *ctx,
+ struct ltt_channel *chan);
union {
struct {
struct perf_event **e; /* per-cpu array */
union {
struct {
struct perf_event **e; /* per-cpu array */
@@
-125,6
+131,7
@@
struct lttng_ctx_field {
struct perf_event_attr *attr;
} perf_counter;
} u;
struct perf_event_attr *attr;
} perf_counter;
} u;
+ void (*destroy)(struct lttng_ctx_field *field);
};
struct lttng_ctx {
};
struct lttng_ctx {
@@
-139,6
+146,7
@@
struct lttng_event_desc {
const struct lttng_event_ctx *ctx; /* context */
const struct lttng_event_field *fields; /* event payload */
unsigned int nr_fields;
const struct lttng_event_ctx *ctx; /* context */
const struct lttng_event_field *fields; /* event payload */
unsigned int nr_fields;
+ struct module *owner;
};
struct lttng_probe_desc {
};
struct lttng_probe_desc {
@@
-156,6
+164,7
@@
struct ltt_event {
struct ltt_channel *chan;
const struct lttng_event_desc *desc;
void *filter;
struct ltt_channel *chan;
const struct lttng_event_desc *desc;
void *filter;
+ struct lttng_ctx *ctx;
enum lttng_kernel_instrumentation instrumentation;
union {
struct {
enum lttng_kernel_instrumentation instrumentation;
union {
struct {
@@
-180,7
+189,8
@@
struct ltt_channel_ops {
void (*channel_destroy)(struct channel *chan);
struct lib_ring_buffer *(*buffer_read_open)(struct channel *chan);
void (*buffer_read_close)(struct lib_ring_buffer *buf);
void (*channel_destroy)(struct channel *chan);
struct lib_ring_buffer *(*buffer_read_open)(struct channel *chan);
void (*buffer_read_close)(struct lib_ring_buffer *buf);
- int (*event_reserve)(struct lib_ring_buffer_ctx *ctx);
+ int (*event_reserve)(struct lib_ring_buffer_ctx *ctx,
+ uint32_t event_id);
void (*event_commit)(struct lib_ring_buffer_ctx *ctx);
void (*event_write)(struct lib_ring_buffer_ctx *ctx, const void *src,
size_t len);
void (*event_commit)(struct lib_ring_buffer_ctx *ctx);
void (*event_write)(struct lib_ring_buffer_ctx *ctx, const void *src,
size_t len);
@@
-196,6
+206,7
@@
struct ltt_channel_ops {
struct ltt_channel {
unsigned int id;
struct channel *chan; /* Channel buffers */
struct ltt_channel {
unsigned int id;
struct channel *chan; /* Channel buffers */
+ struct lttng_ctx *ctx;
/* Event ID management */
struct ltt_session *session;
struct file *file; /* File associated to channel */
/* Event ID management */
struct ltt_session *session;
struct file *file; /* File associated to channel */
@@
-209,6
+220,7
@@
struct ltt_channel {
struct ltt_session {
int active; /* Is trace session active ? */
struct ltt_session {
int active; /* Is trace session active ? */
+ struct lttng_ctx *ctx;
struct file *file; /* File associated to session */
struct ltt_channel *metadata; /* Metadata channel */
struct list_head chan; /* Channel list head */
struct file *file; /* File associated to session */
struct ltt_channel *metadata; /* Metadata channel */
struct list_head chan; /* Channel list head */
@@
-242,13
+254,10
@@
struct ltt_channel *ltt_global_channel_create(struct ltt_session *session,
size_t subbuf_size, size_t num_subbuf,
unsigned int switch_timer_interval,
unsigned int read_timer_interval);
size_t subbuf_size, size_t num_subbuf,
unsigned int switch_timer_interval,
unsigned int read_timer_interval);
-void _ltt_channel_destroy(struct ltt_channel *chan);
struct ltt_event *ltt_event_create(struct ltt_channel *chan,
struct ltt_event *ltt_event_create(struct ltt_channel *chan,
- char *name,
struct lttng_kernel_event *event_param,
void *filter);
struct lttng_kernel_event *event_param,
void *filter);
-int ltt_event_unregister(struct ltt_event *event);
void ltt_transport_register(struct ltt_transport *transport);
void ltt_transport_unregister(struct ltt_transport *transport);
void ltt_transport_register(struct ltt_transport *transport);
void ltt_transport_unregister(struct ltt_transport *transport);
@@
-262,6
+271,8
@@
const struct lttng_event_desc *ltt_event_get(const char *name);
void ltt_event_put(const struct lttng_event_desc *desc);
int ltt_probes_init(void);
void ltt_probes_exit(void);
void ltt_event_put(const struct lttng_event_desc *desc);
int ltt_probes_init(void);
void ltt_probes_exit(void);
+struct lttng_ctx_field *lttng_append_context(struct lttng_ctx **ctx);
+void lttng_destroy_context(struct lttng_ctx *ctx);
#ifdef CONFIG_KPROBES
int lttng_kprobes_register(const char *name,
#ifdef CONFIG_KPROBES
int lttng_kprobes_register(const char *name,
@@
-270,6
+281,7
@@
int lttng_kprobes_register(const char *name,
uint64_t addr,
struct ltt_event *event);
void lttng_kprobes_unregister(struct ltt_event *event);
uint64_t addr,
struct ltt_event *event);
void lttng_kprobes_unregister(struct ltt_event *event);
+void lttng_kprobes_destroy_private(struct ltt_event *event);
#else
static inline
int lttng_kprobes_register(const char *name,
#else
static inline
int lttng_kprobes_register(const char *name,
@@
-281,9
+293,15
@@
int lttng_kprobes_register(const char *name,
return -ENOSYS;
}
return -ENOSYS;
}
+static inline
void lttng_kprobes_unregister(struct ltt_event *event)
{
}
void lttng_kprobes_unregister(struct ltt_event *event)
{
}
+
+static inline
+void lttng_kprobes_destroy_private(struct ltt_event *event)
+{
+}
#endif
#ifdef CONFIG_DYNAMIC_FTRACE
#endif
#ifdef CONFIG_DYNAMIC_FTRACE
@@
-291,6
+309,7
@@
int lttng_ftrace_register(const char *name,
const char *symbol_name,
struct ltt_event *event);
void lttng_ftrace_unregister(struct ltt_event *event);
const char *symbol_name,
struct ltt_event *event);
void lttng_ftrace_unregister(struct ltt_event *event);
+void lttng_ftrace_destroy_private(struct ltt_event *event);
#else
static inline
int lttng_ftrace_register(const char *name,
#else
static inline
int lttng_ftrace_register(const char *name,
@@
-304,5
+323,13
@@
static inline
void lttng_ftrace_unregister(struct ltt_event *event)
{
}
void lttng_ftrace_unregister(struct ltt_event *event)
{
}
+
+static inline
+void lttng_ftrace_destroy_private(struct ltt_event *event)
+{
+}
#endif
#endif
+
+extern const struct file_operations lttng_tracepoint_list_fops;
+
#endif /* _LTT_EVENTS_H */
#endif /* _LTT_EVENTS_H */
This page took
0.025637 seconds
and
4
git commands to generate.