X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=lttng-events.h;h=cdb520e8dd91fe07ae3f121a02f5fefe8ba52704;hb=c88f762e4c83e3ff148f8e7962d3d9c52d64ff4e;hp=8b0803e40b4c22ebd6129c790596393af4629808;hpb=9f36eaed6f91d5897924b551b44d1edd8cee00e2;p=lttng-modules.git diff --git a/lttng-events.h b/lttng-events.h index 8b0803e4..cdb520e8 100644 --- a/lttng-events.h +++ b/lttng-events.h @@ -15,7 +15,8 @@ #include #include #include -#include +#include +#include #include #include #include @@ -284,6 +285,13 @@ struct lttng_enabler_ref { struct lttng_enabler *ref; /* backward ref */ }; +struct lttng_uprobe_handler { + struct lttng_event *event; + loff_t offset; + struct uprobe_consumer up_consumer; + struct list_head node; +}; + /* * lttng_event structure is referred to by the tracing fast path. It must be * kept small. @@ -309,6 +317,10 @@ struct lttng_event { struct { char *symbol_name; } ftrace; + struct { + struct inode *inode; + struct list_head head; + } uprobe; } u; struct list_head list; /* Event list in session */ unsigned int metadata_dumped:1; @@ -509,6 +521,8 @@ struct lttng_session { struct list_head enablers_head; /* Hash table of events */ struct lttng_event_ht events_ht; + char name[LTTNG_KERNEL_SESSION_NAME_LEN]; + char creation_time[LTTNG_KERNEL_SESSION_CREATION_TIME_ISO8601_LEN]; }; struct lttng_metadata_cache { @@ -704,7 +718,98 @@ int lttng_add_migratable_to_ctx(struct lttng_ctx **ctx) 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)) +#if defined(CONFIG_CGROUPS) && \ + ((LINUX_VERSION_CODE >= KERNEL_VERSION(4,6,0)) || \ + LTTNG_UBUNTU_KERNEL_RANGE(4,4,0,0, 4,5,0,0)) +int lttng_add_cgroup_ns_to_ctx(struct lttng_ctx **ctx); +#else +static inline +int lttng_add_cgroup_ns_to_ctx(struct lttng_ctx **ctx) +{ + return -ENOSYS; +} +#endif + +#if defined(CONFIG_IPC_NS) && \ + (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) +int lttng_add_ipc_ns_to_ctx(struct lttng_ctx **ctx); +#else +static inline +int lttng_add_ipc_ns_to_ctx(struct lttng_ctx **ctx) +{ + return -ENOSYS; +} +#endif + +#if !defined(LTTNG_MNT_NS_MISSING_HEADER) && \ + (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) +int lttng_add_mnt_ns_to_ctx(struct lttng_ctx **ctx); +#else +static inline +int lttng_add_mnt_ns_to_ctx(struct lttng_ctx **ctx) +{ + return -ENOSYS; +} +#endif + +#if defined(CONFIG_NET_NS) && \ + (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) +int lttng_add_net_ns_to_ctx(struct lttng_ctx **ctx); +#else +static inline +int lttng_add_net_ns_to_ctx(struct lttng_ctx **ctx) +{ + return -ENOSYS; +} +#endif + +#if defined(CONFIG_PID_NS) && \ + (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) +int lttng_add_pid_ns_to_ctx(struct lttng_ctx **ctx); +#else +static inline +int lttng_add_pid_ns_to_ctx(struct lttng_ctx **ctx) +{ + return -ENOSYS; +} +#endif + +#if defined(CONFIG_USER_NS) && \ + (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) +int lttng_add_user_ns_to_ctx(struct lttng_ctx **ctx); +#else +static inline +int lttng_add_user_ns_to_ctx(struct lttng_ctx **ctx) +{ + return -ENOSYS; +} +#endif + +#if defined(CONFIG_UTS_NS) && \ + (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) +int lttng_add_uts_ns_to_ctx(struct lttng_ctx **ctx); +#else +static inline +int lttng_add_uts_ns_to_ctx(struct lttng_ctx **ctx) +{ + return -ENOSYS; +} +#endif + +int lttng_add_uid_to_ctx(struct lttng_ctx **ctx); +int lttng_add_euid_to_ctx(struct lttng_ctx **ctx); +int lttng_add_suid_to_ctx(struct lttng_ctx **ctx); +int lttng_add_gid_to_ctx(struct lttng_ctx **ctx); +int lttng_add_egid_to_ctx(struct lttng_ctx **ctx); +int lttng_add_sgid_to_ctx(struct lttng_ctx **ctx); +int lttng_add_vuid_to_ctx(struct lttng_ctx **ctx); +int lttng_add_veuid_to_ctx(struct lttng_ctx **ctx); +int lttng_add_vsuid_to_ctx(struct lttng_ctx **ctx); +int lttng_add_vgid_to_ctx(struct lttng_ctx **ctx); +int lttng_add_vegid_to_ctx(struct lttng_ctx **ctx); +int lttng_add_vsgid_to_ctx(struct lttng_ctx **ctx); + +#if defined(CONFIG_PERF_EVENTS) int lttng_add_perf_counter_to_ctx(uint32_t type, uint64_t config, const char *name, @@ -771,6 +876,42 @@ void lttng_kprobes_destroy_private(struct lttng_event *event) } #endif +int lttng_event_add_callsite(struct lttng_event *event, + struct lttng_kernel_event_callsite *callsite); + +#ifdef CONFIG_UPROBES +int lttng_uprobes_register(const char *name, + int fd, struct lttng_event *event); +int lttng_uprobes_add_callsite(struct lttng_event *event, + struct lttng_kernel_event_callsite *callsite); +void lttng_uprobes_unregister(struct lttng_event *event); +void lttng_uprobes_destroy_private(struct lttng_event *event); +#else +static inline +int lttng_uprobes_register(const char *name, + int fd, struct lttng_event *event) +{ + return -ENOSYS; +} + +static inline +int lttng_uprobes_add_callsite(struct lttng_event *event, + struct lttng_kernel_event_callsite *callsite) +{ + return -ENOSYS; +} + +static inline +void lttng_uprobes_unregister(struct lttng_event *event) +{ +} + +static inline +void lttng_uprobes_destroy_private(struct lttng_event *event) +{ +} +#endif + #ifdef CONFIG_KRETPROBES int lttng_kretprobes_register(const char *name, const char *symbol_name, @@ -843,8 +984,6 @@ int lttng_calibrate(struct lttng_kernel_calibrate *calibrate); extern const struct file_operations lttng_tracepoint_list_fops; extern const struct file_operations lttng_syscall_list_fops; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) #define TRACEPOINT_HAS_DATA_ARG -#endif #endif /* _LTTNG_EVENTS_H */