projects
/
lttng-modules.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix loop dependency
[lttng-modules.git]
/
ltt-events.h
diff --git
a/ltt-events.h
b/ltt-events.h
index d07f1c879d2d44e4a1fa76cf6da372e723d7b527..a5a57fcdf016c868c5ee0fe50f31afb2e07efd6d 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,
\
}, \
} \
}, \
} \
@@
-115,9
+118,11
@@
struct lttng_event_field {
};
struct lttng_ctx_field {
};
struct lttng_ctx_field {
- const char *name;
- struct lttng_type type;
- void *callback;
+ struct lttng_event_field event_field;
+ 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
+130,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
+145,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
+163,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
+188,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
+205,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
+219,7
@@
struct ltt_channel {
struct ltt_session {
int active; /* Is trace session active ? */
struct ltt_session {
int active; /* Is trace session active ? */
+ int been_active; /* Has trace session been active ? */
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 */
@@
-244,7
+255,6
@@
struct ltt_channel *ltt_global_channel_create(struct ltt_session *session,
unsigned int read_timer_interval);
struct ltt_event *ltt_event_create(struct ltt_channel *chan,
unsigned int read_timer_interval);
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);
@@
-260,6
+270,9
@@
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);
+int lttng_add_pid_to_ctx(struct lttng_ctx **ctx);
#ifdef CONFIG_KPROBES
int lttng_kprobes_register(const char *name,
#ifdef CONFIG_KPROBES
int lttng_kprobes_register(const char *name,
@@
-268,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,
@@
-283,6
+297,11
@@
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
@@
-290,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,
@@
-303,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.025145 seconds
and
4
git commands to generate.