summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@elastic.org>2010-03-10 11:18:11 -0500
committerFrank Ch. Eigler <fche@elastic.org>2010-03-10 11:18:11 -0500
commit87d85b96a2f7719c1f5f580cf643c47433bfdf63 (patch)
treed778eb16c7f5c63d8d15637cffe8be2434203fe0
parentad12c5928bcfe3f1bf6f335d96a9c29f6fda5fd0 (diff)
downloadsystemtap-steved-87d85b96a2f7719c1f5f580cf643c47433bfdf63.tar.gz
systemtap-steved-87d85b96a2f7719c1f5f580cf643c47433bfdf63.tar.xz
systemtap-steved-87d85b96a2f7719c1f5f580cf643c47433bfdf63.zip
sdt.h: rename volatile-control macro to STAP_SDT_VOLATILE. Document in NEWS.
-rw-r--r--NEWS4
-rw-r--r--includes/sys/sdt.h120
2 files changed, 64 insertions, 60 deletions
diff --git a/NEWS b/NEWS
index fbdb2f67..e9ded314 100644
--- a/NEWS
+++ b/NEWS
@@ -5,7 +5,9 @@
ordinary system functions.
- User space marker arguments no longer use volatile if the version of gcc,
- which must be at least 4.4.4, supports richer DWARF debuginfo.
+ which must be at least 4.4.4, supports richer DWARF debuginfo. Use cflags
+ -DSTAP_SDT_VOLATILE=volatile or -DSTAP_SDT_VOLATILE= when building
+ the sys/sdt.h application to override this one way or another.
- A new construct for error handling is available. It is similar to c++
exception catching, using try and catch as new keywords. Within a handler
diff --git a/includes/sys/sdt.h b/includes/sys/sdt.h
index 971b0c8b..ed4b4af6 100644
--- a/includes/sys/sdt.h
+++ b/includes/sys/sdt.h
@@ -83,13 +83,15 @@
#ifndef __GNUC_RH_RELEASE__
#define __GNUC_RH_RELEASE__ 0
#endif
+
+#ifndef STAP_SDT_VOLATILE /* allow users to override */
#define GNUC_VERSION (__GNUC__ * 1000000 + __GNUC_MINOR__ * 10000 + __GNUC_PATCHLEVEL__ * 100 + __GNUC_RH_RELEASE__)
-#if GNUC_VERSION >= 4040400 && ! defined VOLATILE
-#define VOLATILE_ARG
+#if GNUC_VERSION >= 4040400
+#define STAP_SDT_VOLATILE
#else
-#define VOLATILE_ARG volatile
+#define STAP_SDT_VOLATILE volatile
+#endif
#endif
-
#define STAP_PROBE_(probe) \
do { \
STAP_PROBE_DATA(probe,STAP_UPROBE_GUARD,2f); \
@@ -99,7 +101,7 @@ do { \
#define STAP_PROBE1_(probe,label,parm1) \
do STAP_SEMAPHORE(probe) { \
- VOLATILE_ARG __typeof__((parm1)) arg1 = parm1; \
+ STAP_SDT_VOLATILE __typeof__((parm1)) arg1 = parm1; \
STAP_UNINLINE; \
STAP_PROBE_DATA(probe,STAP_UPROBE_GUARD,2f); \
__asm__ volatile ("2:\n" \
@@ -108,8 +110,8 @@ do STAP_SEMAPHORE(probe) { \
#define STAP_PROBE2_(probe,label,parm1,parm2) \
do STAP_SEMAPHORE(probe) { \
- VOLATILE_ARG __typeof__((parm1)) arg1 = parm1; \
- VOLATILE_ARG __typeof__((parm2)) arg2 = parm2; \
+ STAP_SDT_VOLATILE __typeof__((parm1)) arg1 = parm1; \
+ STAP_SDT_VOLATILE __typeof__((parm2)) arg2 = parm2; \
STAP_UNINLINE; \
STAP_PROBE_DATA(probe,STAP_UPROBE_GUARD,2f); \
__asm__ volatile ("2:\n" \
@@ -118,9 +120,9 @@ do STAP_SEMAPHORE(probe) { \
#define STAP_PROBE3_(probe,label,parm1,parm2,parm3) \
do STAP_SEMAPHORE(probe) { \
- VOLATILE_ARG __typeof__((parm1)) arg1 = parm1; \
- VOLATILE_ARG __typeof__((parm2)) arg2 = parm2; \
- VOLATILE_ARG __typeof__((parm3)) arg3 = parm3; \
+ STAP_SDT_VOLATILE __typeof__((parm1)) arg1 = parm1; \
+ STAP_SDT_VOLATILE __typeof__((parm2)) arg2 = parm2; \
+ STAP_SDT_VOLATILE __typeof__((parm3)) arg3 = parm3; \
STAP_UNINLINE; \
STAP_PROBE_DATA(probe,STAP_UPROBE_GUARD,2f); \
__asm__ volatile ("2:\n" \
@@ -129,10 +131,10 @@ do STAP_SEMAPHORE(probe) { \
#define STAP_PROBE4_(probe,label,parm1,parm2,parm3,parm4) \
do STAP_SEMAPHORE(probe) { \
- VOLATILE_ARG __typeof__((parm1)) arg1 = parm1; \
- VOLATILE_ARG __typeof__((parm2)) arg2 = parm2; \
- VOLATILE_ARG __typeof__((parm3)) arg3 = parm3; \
- VOLATILE_ARG __typeof__((parm4)) arg4 = parm4; \
+ STAP_SDT_VOLATILE __typeof__((parm1)) arg1 = parm1; \
+ STAP_SDT_VOLATILE __typeof__((parm2)) arg2 = parm2; \
+ STAP_SDT_VOLATILE __typeof__((parm3)) arg3 = parm3; \
+ STAP_SDT_VOLATILE __typeof__((parm4)) arg4 = parm4; \
STAP_UNINLINE; \
STAP_PROBE_DATA(probe,STAP_UPROBE_GUARD,2f); \
__asm__ volatile ("2:\n" \
@@ -141,11 +143,11 @@ do STAP_SEMAPHORE(probe) { \
#define STAP_PROBE5_(probe,label,parm1,parm2,parm3,parm4,parm5) \
do STAP_SEMAPHORE(probe) { \
- VOLATILE_ARG __typeof__((parm1)) arg1 = parm1; \
- VOLATILE_ARG __typeof__((parm2)) arg2 = parm2; \
- VOLATILE_ARG __typeof__((parm3)) arg3 = parm3; \
- VOLATILE_ARG __typeof__((parm4)) arg4 = parm4; \
- VOLATILE_ARG __typeof__((parm5)) arg5 = parm5; \
+ STAP_SDT_VOLATILE __typeof__((parm1)) arg1 = parm1; \
+ STAP_SDT_VOLATILE __typeof__((parm2)) arg2 = parm2; \
+ STAP_SDT_VOLATILE __typeof__((parm3)) arg3 = parm3; \
+ STAP_SDT_VOLATILE __typeof__((parm4)) arg4 = parm4; \
+ STAP_SDT_VOLATILE __typeof__((parm5)) arg5 = parm5; \
STAP_UNINLINE; \
STAP_PROBE_DATA(probe,STAP_UPROBE_GUARD,2f); \
__asm__ volatile ("2:\n" \
@@ -154,12 +156,12 @@ do STAP_SEMAPHORE(probe) { \
#define STAP_PROBE6_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6) \
do STAP_SEMAPHORE(probe) { \
- VOLATILE_ARG __typeof__((parm1)) arg1 = parm1; \
- VOLATILE_ARG __typeof__((parm2)) arg2 = parm2; \
- VOLATILE_ARG __typeof__((parm3)) arg3 = parm3; \
- VOLATILE_ARG __typeof__((parm4)) arg4 = parm4; \
- VOLATILE_ARG __typeof__((parm5)) arg5 = parm5; \
- VOLATILE_ARG __typeof__((parm6)) arg6 = parm6; \
+ STAP_SDT_VOLATILE __typeof__((parm1)) arg1 = parm1; \
+ STAP_SDT_VOLATILE __typeof__((parm2)) arg2 = parm2; \
+ STAP_SDT_VOLATILE __typeof__((parm3)) arg3 = parm3; \
+ STAP_SDT_VOLATILE __typeof__((parm4)) arg4 = parm4; \
+ STAP_SDT_VOLATILE __typeof__((parm5)) arg5 = parm5; \
+ STAP_SDT_VOLATILE __typeof__((parm6)) arg6 = parm6; \
STAP_UNINLINE; \
STAP_PROBE_DATA(probe,STAP_UPROBE_GUARD,2f); \
__asm__ volatile ("2:\n" \
@@ -168,13 +170,13 @@ do STAP_SEMAPHORE(probe) { \
#define STAP_PROBE7_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6,parm7) \
do STAP_SEMAPHORE(probe) { \
- VOLATILE_ARG __typeof__((parm1)) arg1 = parm1; \
- VOLATILE_ARG __typeof__((parm2)) arg2 = parm2; \
- VOLATILE_ARG __typeof__((parm3)) arg3 = parm3; \
- VOLATILE_ARG __typeof__((parm4)) arg4 = parm4; \
- VOLATILE_ARG __typeof__((parm5)) arg5 = parm5; \
- VOLATILE_ARG __typeof__((parm6)) arg6 = parm6; \
- VOLATILE_ARG __typeof__((parm7)) arg7 = parm7; \
+ STAP_SDT_VOLATILE __typeof__((parm1)) arg1 = parm1; \
+ STAP_SDT_VOLATILE __typeof__((parm2)) arg2 = parm2; \
+ STAP_SDT_VOLATILE __typeof__((parm3)) arg3 = parm3; \
+ STAP_SDT_VOLATILE __typeof__((parm4)) arg4 = parm4; \
+ STAP_SDT_VOLATILE __typeof__((parm5)) arg5 = parm5; \
+ STAP_SDT_VOLATILE __typeof__((parm6)) arg6 = parm6; \
+ STAP_SDT_VOLATILE __typeof__((parm7)) arg7 = parm7; \
STAP_UNINLINE; \
STAP_PROBE_DATA(probe,STAP_UPROBE_GUARD,2f); \
__asm__ volatile ("2:\n" \
@@ -183,14 +185,14 @@ do STAP_SEMAPHORE(probe) { \
#define STAP_PROBE8_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8) \
do STAP_SEMAPHORE(probe) { \
- VOLATILE_ARG __typeof__((parm1)) arg1 = parm1; \
- VOLATILE_ARG __typeof__((parm2)) arg2 = parm2; \
- VOLATILE_ARG __typeof__((parm3)) arg3 = parm3; \
- VOLATILE_ARG __typeof__((parm4)) arg4 = parm4; \
- VOLATILE_ARG __typeof__((parm5)) arg5 = parm5; \
- VOLATILE_ARG __typeof__((parm6)) arg6 = parm6; \
- VOLATILE_ARG __typeof__((parm7)) arg7 = parm7; \
- VOLATILE_ARG __typeof__((parm8)) arg8 = parm8; \
+ STAP_SDT_VOLATILE __typeof__((parm1)) arg1 = parm1; \
+ STAP_SDT_VOLATILE __typeof__((parm2)) arg2 = parm2; \
+ STAP_SDT_VOLATILE __typeof__((parm3)) arg3 = parm3; \
+ STAP_SDT_VOLATILE __typeof__((parm4)) arg4 = parm4; \
+ STAP_SDT_VOLATILE __typeof__((parm5)) arg5 = parm5; \
+ STAP_SDT_VOLATILE __typeof__((parm6)) arg6 = parm6; \
+ STAP_SDT_VOLATILE __typeof__((parm7)) arg7 = parm7; \
+ STAP_SDT_VOLATILE __typeof__((parm8)) arg8 = parm8; \
STAP_UNINLINE; \
STAP_PROBE_DATA(probe,STAP_UPROBE_GUARD,2f); \
__asm__ volatile ("2:\n" \
@@ -199,15 +201,15 @@ do STAP_SEMAPHORE(probe) { \
#define STAP_PROBE9_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9) \
do STAP_SEMAPHORE(probe) { \
- VOLATILE_ARG __typeof__((parm1)) arg1 = parm1; \
- VOLATILE_ARG __typeof__((parm2)) arg2 = parm2; \
- VOLATILE_ARG __typeof__((parm3)) arg3 = parm3; \
- VOLATILE_ARG __typeof__((parm4)) arg4 = parm4; \
- VOLATILE_ARG __typeof__((parm5)) arg5 = parm5; \
- VOLATILE_ARG __typeof__((parm6)) arg6 = parm6; \
- VOLATILE_ARG __typeof__((parm7)) arg7 = parm7; \
- VOLATILE_ARG __typeof__((parm8)) arg8 = parm8; \
- VOLATILE_ARG __typeof__((parm9)) arg9 = parm9; \
+ STAP_SDT_VOLATILE __typeof__((parm1)) arg1 = parm1; \
+ STAP_SDT_VOLATILE __typeof__((parm2)) arg2 = parm2; \
+ STAP_SDT_VOLATILE __typeof__((parm3)) arg3 = parm3; \
+ STAP_SDT_VOLATILE __typeof__((parm4)) arg4 = parm4; \
+ STAP_SDT_VOLATILE __typeof__((parm5)) arg5 = parm5; \
+ STAP_SDT_VOLATILE __typeof__((parm6)) arg6 = parm6; \
+ STAP_SDT_VOLATILE __typeof__((parm7)) arg7 = parm7; \
+ STAP_SDT_VOLATILE __typeof__((parm8)) arg8 = parm8; \
+ STAP_SDT_VOLATILE __typeof__((parm9)) arg9 = parm9; \
STAP_UNINLINE; \
STAP_PROBE_DATA(probe,STAP_UPROBE_GUARD,2f); \
__asm__ volatile ("2:\n" \
@@ -216,16 +218,16 @@ do STAP_SEMAPHORE(probe) { \
#define STAP_PROBE10_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9,parm10) \
do STAP_SEMAPHORE(probe) { \
- VOLATILE_ARG __typeof__((parm1)) arg1 = parm1; \
- VOLATILE_ARG __typeof__((parm2)) arg2 = parm2; \
- VOLATILE_ARG __typeof__((parm3)) arg3 = parm3; \
- VOLATILE_ARG __typeof__((parm4)) arg4 = parm4; \
- VOLATILE_ARG __typeof__((parm5)) arg5 = parm5; \
- VOLATILE_ARG __typeof__((parm6)) arg6 = parm6; \
- VOLATILE_ARG __typeof__((parm7)) arg7 = parm7; \
- VOLATILE_ARG __typeof__((parm8)) arg8 = parm8; \
- VOLATILE_ARG __typeof__((parm9)) arg9 = parm9; \
- VOLATILE_ARG __typeof__((parm10)) arg10 = parm10; \
+ STAP_SDT_VOLATILE __typeof__((parm1)) arg1 = parm1; \
+ STAP_SDT_VOLATILE __typeof__((parm2)) arg2 = parm2; \
+ STAP_SDT_VOLATILE __typeof__((parm3)) arg3 = parm3; \
+ STAP_SDT_VOLATILE __typeof__((parm4)) arg4 = parm4; \
+ STAP_SDT_VOLATILE __typeof__((parm5)) arg5 = parm5; \
+ STAP_SDT_VOLATILE __typeof__((parm6)) arg6 = parm6; \
+ STAP_SDT_VOLATILE __typeof__((parm7)) arg7 = parm7; \
+ STAP_SDT_VOLATILE __typeof__((parm8)) arg8 = parm8; \
+ STAP_SDT_VOLATILE __typeof__((parm9)) arg9 = parm9; \
+ STAP_SDT_VOLATILE __typeof__((parm10)) arg10 = parm10; \
STAP_UNINLINE; \
STAP_PROBE_DATA(probe,STAP_UPROBE_GUARD,2f); \
__asm__ volatile ("2:\n" \