summaryrefslogtreecommitdiffstats
path: root/includes/sys/sdt.h
diff options
context:
space:
mode:
Diffstat (limited to 'includes/sys/sdt.h')
-rw-r--r--includes/sys/sdt.h56
1 files changed, 41 insertions, 15 deletions
diff --git a/includes/sys/sdt.h b/includes/sys/sdt.h
index d68fed6c..ef0977ea 100644
--- a/includes/sys/sdt.h
+++ b/includes/sys/sdt.h
@@ -43,30 +43,33 @@ static volatile struct _probe_ ## probe _probe_ ## probe __attribute__ ((section
// The goto _probe_ prevents the label from "drifting"
#define STAP_PROBE(provider,probe) \
- { \
-STAP_LABEL(probe,__LINE__): \
+ {__label__ STAP_LABEL(probe,__LINE__); \
+STAP_LABEL(probe,__LINE__): \
asm volatile ("nop"); \
STAP_PROBE_STRUCT(probe,(size_t)&& STAP_LABEL(probe,__LINE__)) \
STAP_LABEL_REF(probe) \
}
#define STAP_PROBE1(provider,probe,parm1) \
- {volatile typeof((parm1)) arg1 __attribute__ ((unused)) = parm1; \
-STAP_LABEL(probe,__LINE__): \
+ {__label__ STAP_LABEL(probe,__LINE__); \
+ volatile typeof((parm1)) arg1 __attribute__ ((unused)) = parm1; \
+STAP_LABEL(probe,__LINE__): \
asm volatile ("nop /* %0 */" :: "g"( arg1)); \
STAP_PROBE_STRUCT(probe,(size_t)&& STAP_LABEL(probe,__LINE__)) \
STAP_LABEL_REF(probe);}
#define STAP_PROBE2(provider,probe,parm1,parm2) \
- {volatile typeof((parm1)) arg1 __attribute__ ((unused)) = parm1; \
- volatile typeof((parm2)) arg2 __attribute__ ((unused)) = parm2; \
+ {__label__ STAP_LABEL(probe,__LINE__); \
+ volatile typeof((parm1)) arg1 __attribute__ ((unused)) = parm1; \
+ volatile typeof((parm2)) arg2 __attribute__ ((unused)) = parm2; \
STAP_LABEL(probe,__LINE__): \
asm volatile ("nop /* %0 %1 */" :: "g"(arg1), "g"(arg2)); \
STAP_PROBE_STRUCT(probe,(size_t)&& STAP_LABEL(probe,__LINE__)) \
STAP_LABEL_REF(probe);}
#define STAP_PROBE3(provider,probe,parm1,parm2,parm3) \
- {volatile typeof((parm1)) arg1 __attribute__ ((unused)) = parm1; \
+ {__label__ STAP_LABEL(probe,__LINE__); \
+ volatile typeof((parm1)) arg1 __attribute__ ((unused)) = parm1; \
volatile typeof((parm2)) arg2 __attribute__ ((unused)) = parm2; \
volatile typeof((parm3)) arg3 __attribute__ ((unused)) = parm3; \
STAP_LABEL(probe,__LINE__): \
@@ -75,17 +78,19 @@ STAP_LABEL(probe,__LINE__): \
STAP_LABEL_REF(probe);}
#define STAP_PROBE4(provider,probe,parm1,parm2,parm3,parm4) \
- {volatile typeof((parm1)) arg1 __attribute__ ((unused)) = parm1; \
+ {__label__ STAP_LABEL(probe,__LINE__); \
+ volatile typeof((parm1)) arg1 __attribute__ ((unused)) = parm1; \
volatile typeof((parm2)) arg2 __attribute__ ((unused)) = parm2; \
volatile typeof((parm3)) arg3 __attribute__ ((unused)) = parm3; \
volatile typeof((parm4)) arg4 __attribute__ ((unused)) = parm4; \
STAP_LABEL(probe,__LINE__): \
asm volatile ("nop /* %0 %1 %2 %3 */" :: "g"(arg1), "g"(arg2), "g"(arg3), "g"(arg4)); \
- STAP_PROBE_STRUCT(probe,(size_t)&& STAP_LABEL(probe,__LINE__)) \
+ STAP_PROBE_STRUCT(probe,(size_t)&& STAP_LABEL(probe,__LINE__)) \
STAP_LABEL_REF(probe);}
#define STAP_PROBE5(provider,probe,parm1,parm2,parm3,parm4,parm5) \
- {volatile typeof((parm1)) arg1 __attribute__ ((unused)) = parm1; \
+ {__label__ STAP_LABEL(probe,__LINE__); \
+ volatile typeof((parm1)) arg1 __attribute__ ((unused)) = parm1; \
volatile typeof((parm2)) arg2 __attribute__ ((unused)) = parm2; \
volatile typeof((parm3)) arg3 __attribute__ ((unused)) = parm3; \
volatile typeof((parm4)) arg4 __attribute__ ((unused)) = parm4; \
@@ -96,7 +101,8 @@ STAP_LABEL(probe,__LINE__): \
STAP_LABEL_REF(probe);}
#define STAP_PROBE6(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6) \
- {volatile typeof((parm1)) arg1 __attribute__ ((unused)) = parm1; \
+ {__label__ STAP_LABEL(probe,__LINE__); \
+ volatile typeof((parm1)) arg1 __attribute__ ((unused)) = parm1; \
volatile typeof((parm2)) arg2 __attribute__ ((unused)) = parm2; \
volatile typeof((parm3)) arg3 __attribute__ ((unused)) = parm3; \
volatile typeof((parm4)) arg4 __attribute__ ((unused)) = parm4; \
@@ -108,7 +114,8 @@ STAP_LABEL(probe,__LINE__): \
STAP_LABEL_REF(probe);}
#define STAP_PROBE7(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7) \
- {volatile typeof((parm1)) arg1 __attribute__ ((unused)) = parm1; \
+ {__label__ STAP_LABEL(probe,__LINE__); \
+ volatile typeof((parm1)) arg1 __attribute__ ((unused)) = parm1; \
volatile typeof((parm2)) arg2 __attribute__ ((unused)) = parm2; \
volatile typeof((parm3)) arg3 __attribute__ ((unused)) = parm3; \
volatile typeof((parm4)) arg4 __attribute__ ((unused)) = parm4; \
@@ -121,7 +128,8 @@ STAP_LABEL(probe,__LINE__): \
STAP_LABEL_REF(probe);}
#define STAP_PROBE8(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8) \
- {volatile typeof((parm1)) arg1 __attribute__ ((unused)) = parm1; \
+ {__label__ STAP_LABEL(probe,__LINE__); \
+ volatile typeof((parm1)) arg1 __attribute__ ((unused)) = parm1; \
volatile typeof((parm2)) arg2 __attribute__ ((unused)) = parm2; \
volatile typeof((parm3)) arg3 __attribute__ ((unused)) = parm3; \
volatile typeof((parm4)) arg4 __attribute__ ((unused)) = parm4; \
@@ -135,7 +143,8 @@ STAP_LABEL(probe,__LINE__): \
STAP_LABEL_REF(probe);}
#define STAP_PROBE9(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9) \
- {volatile typeof((parm1)) arg1 __attribute__ ((unused)) = parm1; \
+ {__label__ STAP_LABEL(probe,__LINE__); \
+ volatile typeof((parm1)) arg1 __attribute__ ((unused)) = parm1; \
volatile typeof((parm2)) arg2 __attribute__ ((unused)) = parm2; \
volatile typeof((parm3)) arg3 __attribute__ ((unused)) = parm3; \
volatile typeof((parm4)) arg4 __attribute__ ((unused)) = parm4; \
@@ -149,6 +158,23 @@ STAP_LABEL(probe,__LINE__): \
STAP_PROBE_STRUCT(probe,(size_t)&& STAP_LABEL(probe,__LINE__)) \
STAP_LABEL_REF(probe);}
+#define STAP_PROBE10(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9,parm10) \
+ {__label__ STAP_LABEL(probe,__LINE__); \
+ volatile typeof((parm1)) arg1 __attribute__ ((unused)) = parm1; \
+ volatile typeof((parm2)) arg2 __attribute__ ((unused)) = parm2; \
+ volatile typeof((parm3)) arg3 __attribute__ ((unused)) = parm3; \
+ volatile typeof((parm4)) arg4 __attribute__ ((unused)) = parm4; \
+ volatile typeof((parm5)) arg5 __attribute__ ((unused)) = parm5; \
+ volatile typeof((parm6)) arg6 __attribute__ ((unused)) = parm6; \
+ volatile typeof((parm7)) arg7 __attribute__ ((unused)) = parm7; \
+ volatile typeof((parm8)) arg8 __attribute__ ((unused)) = parm8; \
+ volatile typeof((parm9)) arg9 __attribute__ ((unused)) = parm9; \
+ volatile typeof((parm10)) arg10 __attribute__ ((unused)) = parm9; \
+STAP_LABEL(probe,__LINE__): \
+ asm volatile ("nop" :: "X"(arg1), "X"(arg2), "X"(arg3), "X"(arg4), "X"(arg5), "X"(arg6), "X"(arg7), "X"(arg8), "X"(arg9), "X"(arg10)); \
+ STAP_PROBE_STRUCT(probe,(size_t)&& STAP_LABEL(probe,__LINE__)) \
+ STAP_LABEL_REF(probe);}
+
#define DTRACE_PROBE(provider,probe) \
STAP_PROBE(provider,probe)
#define DTRACE_PROBE1(provider,probe,parm1) \
@@ -169,5 +195,5 @@ STAP_PROBE7(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7)
STAP_PROBE8(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8)
#define DTRACE_PROBE9(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9) \
STAP_PROBE9(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9)
-
#endif /* sys/sdt.h */
+