projects
/
lttng-modules.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix callstack context: write empty sequence if no stack trace
[lttng-modules.git]
/
lttng-events.h
diff --git
a/lttng-events.h
b/lttng-events.h
index 9e05e2f9a56b044c8c690fbbc2ac75a3889d2c58..2b1370520ecd85ab4d39364586ee08fe949d1f6a 100644
(file)
--- a/
lttng-events.h
+++ b/
lttng-events.h
@@
-27,6
+27,7
@@
#include <linux/list.h>
#include <linux/kprobes.h>
#include <linux/kref.h>
#include <linux/list.h>
#include <linux/kprobes.h>
#include <linux/kref.h>
+#include <lttng-cpuhotplug.h>
#include <wrapper/uuid.h>
#include <lttng-tracer.h>
#include <lttng-abi.h>
#include <wrapper/uuid.h>
#include <lttng-tracer.h>
#include <lttng-abi.h>
@@
-54,6
+55,8
@@
enum abstract_types {
atype_array_compound, /* Array of compound types. */
atype_sequence_compound, /* Sequence of compound types. */
atype_variant,
atype_array_compound, /* Array of compound types. */
atype_sequence_compound, /* Sequence of compound types. */
atype_variant,
+ atype_array_bitfield,
+ atype_sequence_bitfield,
NR_ABSTRACT_TYPES,
};
NR_ABSTRACT_TYPES,
};
@@
-77,6
+80,9
@@
struct lttng_enum_value {
struct lttng_enum_entry {
struct lttng_enum_value start, end; /* start and end are inclusive */
const char *string;
struct lttng_enum_entry {
struct lttng_enum_value start, end; /* start and end are inclusive */
const char *string;
+ struct {
+ unsigned int is_auto:1;
+ } options;
};
#define __type_integer(_type, _size, _alignment, _signedness, \
};
#define __type_integer(_type, _size, _alignment, _signedness, \
@@
-181,8
+187,13
@@
union lttng_ctx_value {
* lttng_ctx_field because cpu hotplug needs fixed-location addresses.
*/
struct lttng_perf_counter_field {
* lttng_ctx_field because cpu hotplug needs fixed-location addresses.
*/
struct lttng_perf_counter_field {
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0))
+ struct lttng_cpuhp_node cpuhp_prepare;
+ struct lttng_cpuhp_node cpuhp_online;
+#else
struct notifier_block nb;
int hp_enable;
struct notifier_block nb;
int hp_enable;
+#endif
struct perf_event_attr *attr;
struct perf_event **e; /* per-cpu array */
};
struct perf_event_attr *attr;
struct perf_event **e; /* per-cpu array */
};
@@
-195,6
+206,9
@@
struct lttng_probe_ctx {
struct lttng_ctx_field {
struct lttng_event_field event_field;
size_t (*get_size)(size_t offset);
struct lttng_ctx_field {
struct lttng_event_field event_field;
size_t (*get_size)(size_t offset);
+ size_t (*get_size_arg)(size_t offset, struct lttng_ctx_field *field,
+ struct lib_ring_buffer_ctx *ctx,
+ struct lttng_channel *chan);
void (*record)(struct lttng_ctx_field *field,
struct lib_ring_buffer_ctx *ctx,
struct lttng_channel *chan);
void (*record)(struct lttng_ctx_field *field,
struct lib_ring_buffer_ctx *ctx,
struct lttng_channel *chan);
@@
-205,6
+219,12
@@
struct lttng_ctx_field {
struct lttng_perf_counter_field *perf_counter;
} u;
void (*destroy)(struct lttng_ctx_field *field);
struct lttng_perf_counter_field *perf_counter;
} u;
void (*destroy)(struct lttng_ctx_field *field);
+ /*
+ * Private data to keep state between get_size and record.
+ * User must perform its own synchronization to protect against
+ * concurrent and reentrant contexts.
+ */
+ void *priv;
};
struct lttng_ctx {
};
struct lttng_ctx {
@@
-266,6
+286,7
@@
struct lttng_bytecode_runtime {
const char *filter_stack_data);
int link_failed;
struct list_head node; /* list of bytecode runtime in event */
const char *filter_stack_data);
int link_failed;
struct list_head node; /* list of bytecode runtime in event */
+ struct lttng_event *event;
};
/*
};
/*
@@
-315,7
+336,7
@@
struct lttng_event {
};
enum lttng_enabler_type {
};
enum lttng_enabler_type {
- LTTNG_ENABLER_
WILDCARD
,
+ LTTNG_ENABLER_
STAR_GLOB
,
LTTNG_ENABLER_NAME,
};
LTTNG_ENABLER_NAME,
};
@@
-693,11
+714,18
@@
int lttng_add_migratable_to_ctx(struct lttng_ctx **ctx)
return -ENOSYS;
}
#endif
return -ENOSYS;
}
#endif
+
+int lttng_add_callstack_to_ctx(struct lttng_ctx **ctx, int type);
+
#if defined(CONFIG_PERF_EVENTS) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33))
int lttng_add_perf_counter_to_ctx(uint32_t type,
uint64_t config,
const char *name,
struct lttng_ctx **ctx);
#if defined(CONFIG_PERF_EVENTS) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33))
int lttng_add_perf_counter_to_ctx(uint32_t type,
uint64_t config,
const char *name,
struct lttng_ctx **ctx);
+int lttng_cpuhp_perf_counter_online(unsigned int cpu,
+ struct lttng_cpuhp_node *node);
+int lttng_cpuhp_perf_counter_dead(unsigned int cpu,
+ struct lttng_cpuhp_node *node);
#else
static inline
int lttng_add_perf_counter_to_ctx(uint32_t type,
#else
static inline
int lttng_add_perf_counter_to_ctx(uint32_t type,
@@
-707,6
+735,18
@@
int lttng_add_perf_counter_to_ctx(uint32_t type,
{
return -ENOSYS;
}
{
return -ENOSYS;
}
+static inline
+int lttng_cpuhp_perf_counter_online(unsigned int cpu,
+ struct lttng_cpuhp_node *node)
+{
+ return 0;
+}
+static inline
+int lttng_cpuhp_perf_counter_dead(unsigned int cpu,
+ struct lttng_cpuhp_node *node)
+{
+ return 0;
+}
#endif
int lttng_logger_init(void);
#endif
int lttng_logger_init(void);
@@
-785,7
+825,7
@@
int lttng_kretprobes_event_enable_state(struct lttng_event *event,
}
#endif
}
#endif
-#if
def CONFIG_DYNAMIC_FTRACE
+#if
defined(CONFIG_DYNAMIC_FTRACE) && !defined(LTTNG_FTRACE_MISSING_HEADER)
int lttng_ftrace_register(const char *name,
const char *symbol_name,
struct lttng_event *event);
int lttng_ftrace_register(const char *name,
const char *symbol_name,
struct lttng_event *event);
This page took
0.028884 seconds
and
4
git commands to generate.