Fix: writeback probe on RHEL >= 3.10.0-327.10.1
[deliverable/lttng-modules.git] / probes / lttng-tracepoint-event-impl.h
index a2b87a3be487936be3676de3cf2e8c500e3dde2a..a87d146af23e701349f5fa259f4fe0b823ae2168 100644 (file)
 #include <linux/debugfs.h>
 #include <linux/rculist.h>
 #include <asm/byteorder.h>
-#include "lttng.h"
-#include "lttng-types.h"
-#include "lttng-probe-user.h"
-#include "../wrapper/vmalloc.h"        /* for wrapper_vmalloc_sync_all() */
-#include "../wrapper/ringbuffer/frontend_types.h"
-#include "../wrapper/rcu.h"
-#include "../lttng-events.h"
-#include "../lttng-tracer-core.h"
+
+#include <probes/lttng.h>
+#include <probes/lttng-types.h>
+#include <probes/lttng-probe-user.h>
+#include <wrapper/vmalloc.h>   /* for wrapper_vmalloc_sync_all() */
+#include <wrapper/ringbuffer/frontend_types.h>
+#include <wrapper/ringbuffer/backend.h>
+#include <wrapper/rcu.h>
+#include <lttng-events.h>
+#include <lttng-tracer-core.h>
 
 /*
  * Macro declarations used for all stages.
  */
 
 /* Reset all macros within TRACEPOINT_EVENT */
-#include "lttng-events-reset.h"
+#include <probes/lttng-events-reset.h>
 
 #undef TP_PROTO
 #define TP_PROTO(...)  __VA_ARGS__
@@ -150,7 +152,7 @@ void trace_##_name(void);
  * class and the instance using the class actually match.
  */
 
-#include "lttng-events-reset.h"        /* Reset all macros within TRACE_EVENT */
+#include <probes/lttng-events-reset.h> /* Reset all macros within TRACE_EVENT */
 
 #undef TP_PROTO
 #define TP_PROTO(...)  __VA_ARGS__
@@ -184,9 +186,9 @@ void __event_template_proto___##_name(void);
  */
 
 /* Reset all macros within TRACEPOINT_EVENT */
-#include "lttng-events-reset.h"
-#include "lttng-events-write.h"
-#include "lttng-events-nowrite.h"
+#include <probes/lttng-events-reset.h>
+#include <probes/lttng-events-write.h>
+#include <probes/lttng-events-nowrite.h>
 
 #undef _ctf_integer_ext
 #define _ctf_integer_ext(_type, _item, _src, _byte_order, _base, _user, _nowrite) \
@@ -322,7 +324,7 @@ void __event_template_proto___##_name(void);
  */
 
 /* Reset all macros within TRACEPOINT_EVENT */
-#include "lttng-events-reset.h"
+#include <probes/lttng-events-reset.h>
 
 #undef TP_PROTO
 #define TP_PROTO(...)  __VA_ARGS__
@@ -344,8 +346,8 @@ static void __event_probe__##_name(void *__data);
  */
 
 /* Reset all macros within TRACEPOINT_EVENT */
-#include "lttng-events-reset.h"
-#include "lttng-events-write.h"
+#include <probes/lttng-events-reset.h>
+#include <probes/lttng-events-write.h>
 
 #undef _ctf_integer_ext
 #define _ctf_integer_ext(_type, _item, _src, _byte_order, _base, _user, _nowrite) \
@@ -437,9 +439,9 @@ static inline size_t __event_get_size__##_name(size_t *__dynamic_len,             \
  */
 
 /* Reset all macros within TRACEPOINT_EVENT */
-#include "lttng-events-reset.h"
-#include "lttng-events-write.h"
-#include "lttng-events-nowrite.h"
+#include <probes/lttng-events-reset.h>
+#include <probes/lttng-events-write.h>
+#include <probes/lttng-events-nowrite.h>
 
 #undef _ctf_integer_ext_fetched
 #define _ctf_integer_ext_fetched(_type, _item, _src, _byte_order, _base, _nowrite) \
@@ -514,11 +516,15 @@ static inline size_t __event_get_size__##_name(size_t *__dynamic_len,           \
 
 #undef _ctf_integer_ext_isuser1
 #define _ctf_integer_ext_isuser1(_type, _item, _user_src, _byte_order, _base, _nowrite) \
-{                                                                             \
-       __typeof__(_user_src) _src;                                            \
-       if (get_user(_src, &(_user_src)))                                      \
-               _src = 0;                                                      \
-       _ctf_integer_ext_fetched(_type, _item, _src, _byte_order, _base, _nowrite) \
+{                                                                                      \
+       union {                                                                         \
+               char __array[sizeof(_user_src)];                                        \
+               __typeof__(_user_src) __v;                                              \
+       } __tmp_fetch;                                                                  \
+       if (lib_ring_buffer_copy_from_user_check_nofault(__tmp_fetch.__array,           \
+                               &(_user_src), sizeof(_user_src)))                       \
+               memset(__tmp_fetch.__array, 0, sizeof(__tmp_fetch.__array));            \
+       _ctf_integer_ext_fetched(_type, _item, __tmp_fetch.__v, _byte_order, _base, _nowrite) \
 }
 
 #undef _ctf_integer_ext
@@ -607,8 +613,8 @@ void __event_prepare_filter_stack__##_name(char *__stack_data,                    \
  */
 
 /* Reset all macros within TRACEPOINT_EVENT */
-#include "lttng-events-reset.h"
-#include "lttng-events-write.h"
+#include <probes/lttng-events-reset.h>
+#include <probes/lttng-events-write.h>
 
 #undef _ctf_integer_ext
 #define _ctf_integer_ext(_type, _item, _src, _byte_order, _base, _user, _nowrite) \
@@ -679,8 +685,8 @@ static inline size_t __event_get_align__##_name(void *__tp_locvar)        \
  */
 
 /* Reset all macros within TRACEPOINT_EVENT */
-#include "lttng-events-reset.h"
-#include "lttng-events-write.h"
+#include <probes/lttng-events-reset.h>
+#include <probes/lttng-events-write.h>
 
 #undef _ctf_integer_ext_fetched
 #define _ctf_integer_ext_fetched(_type, _item, _src, _byte_order, _base, _nowrite) \
@@ -697,10 +703,14 @@ static inline size_t __event_get_align__##_name(void *__tp_locvar)              \
 #undef _ctf_integer_ext_isuser1
 #define _ctf_integer_ext_isuser1(_type, _item, _user_src, _byte_order, _base, _nowrite) \
 {                                                                             \
-       __typeof__(_user_src) _src;                                            \
-       if (get_user(_src, &(_user_src)))                                      \
-               _src = 0;                                                      \
-       _ctf_integer_ext_fetched(_type, _item, _src, _byte_order, _base, _nowrite) \
+       union {                                                                         \
+               char __array[sizeof(_user_src)];                                        \
+               __typeof__(_user_src) __v;                                              \
+       } __tmp_fetch;                                                                  \
+       if (lib_ring_buffer_copy_from_user_check_nofault(__tmp_fetch.__array,           \
+                               &(_user_src), sizeof(_user_src)))                       \
+               memset(__tmp_fetch.__array, 0, sizeof(__tmp_fetch.__array));            \
+       _ctf_integer_ext_fetched(_type, _item, __tmp_fetch.__v, _byte_order, _base, _nowrite) \
 }
 
 #undef _ctf_integer_ext
@@ -1040,7 +1050,7 @@ __post:                                                                         \
 
 /* Named field types must be defined in lttng-types.h */
 
-#include "lttng-events-reset.h"        /* Reset all macros within LTTNG_TRACEPOINT_EVENT */
+#include <probes/lttng-events-reset.h> /* Reset all macros within LTTNG_TRACEPOINT_EVENT */
 
 #ifndef TP_PROBE_CB
 #define TP_PROBE_CB(_template) &__event_probe__##_template
@@ -1069,7 +1079,7 @@ static const struct lttng_event_desc __event_desc___##_map = {            \
  * Create an array of event description pointers.
  */
 
-#include "lttng-events-reset.h"        /* Reset all macros within LTTNG_TRACEPOINT_EVENT */
+#include <probes/lttng-events-reset.h> /* Reset all macros within LTTNG_TRACEPOINT_EVENT */
 
 #undef LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP_NOARGS
 #define LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP_NOARGS(_template, _name, _map) \
@@ -1117,7 +1127,7 @@ static __used struct lttng_probe_desc TP_ID(__probe_desc___, TRACE_SYSTEM) = {
  * Register/unregister probes at module load/unload.
  */
 
-#include "lttng-events-reset.h"        /* Reset all macros within LTTNG_TRACEPOINT_EVENT */
+#include <probes/lttng-events-reset.h> /* Reset all macros within LTTNG_TRACEPOINT_EVENT */
 
 #define TP_ID1(_token, _system)        _token##_system
 #define TP_ID(_token, _system) TP_ID1(_token, _system)
This page took 0.037687 seconds and 5 git commands to generate.