summaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'runtime')
-rw-r--r--runtime/ChangeLog6
-rw-r--r--runtime/sduprobes.c8
-rw-r--r--runtime/sduprobes.h39
-rw-r--r--runtime/vsprintf.c43
4 files changed, 29 insertions, 67 deletions
diff --git a/runtime/ChangeLog b/runtime/ChangeLog
index 51d8d933..aaf39a04 100644
--- a/runtime/ChangeLog
+++ b/runtime/ChangeLog
@@ -1,3 +1,9 @@
+2008-12-04 Stan Cox <scox@redhat.com>
+
+ * sduprobes.c (STAP_PROBE_START): Remove.
+ * sduprobes.h (STAP_PROBE_START): Remove.
+ (DTRACE_PROBE): New.
+
2008-11-26 Stan Cox <scox@redhat.com>
* sduprobes.h (STAP_PROBE1): Add USE_STAP_DEBUGINFO_PROBE.
diff --git a/runtime/sduprobes.c b/runtime/sduprobes.c
index 4bee3bd7..83bc8e72 100644
--- a/runtime/sduprobes.c
+++ b/runtime/sduprobes.c
@@ -9,14 +9,6 @@
#include <stddef.h>
#define unused __attribute__ ((unused))
-int _stap_probe_sentinel = 0;
-
-void
-_stap_probe_start()
-{
- _stap_probe_sentinel = 1;
-}
-
int
_stap_probe_0 (char* probe unused)
{
diff --git a/runtime/sduprobes.h b/runtime/sduprobes.h
index 934f19e0..b91dea93 100644
--- a/runtime/sduprobes.h
+++ b/runtime/sduprobes.h
@@ -7,13 +7,6 @@
// later version.
#include <string.h>
-extern int _stap_probe_sentinel;
-
-#define STAP_PROBE_START() \
- char *stap_sdt = getenv("SYSTEMTAP_SDT"); \
- if (stap_sdt != NULL) \
- _stap_probe_start ()
-
#if _LP64
#define STAP_PROBE_STRUCT_ARG \
@@ -35,21 +28,20 @@ struct _probe_ ## probe \
#ifndef USE_STAP_DEBUGINFO_PROBE
#define STAP_PROBE(provider,probe) \
STAP_PROBE_STRUCT(probe,0,0) \
- if (__builtin_expect(_stap_probe_sentinel, 0))\
- _stap_probe_0 (_probe_ ## probe.probe_name);
+ _stap_probe_0 (_probe_ ## probe.probe_name);
#else
#define STAP_PROBE(provider,probe) \
_probe_ ## probe: \
asm volatile ("nop"); \
- STAP_PROBE_STRUCT(probe,1,(size_t)&& _probe_ ## probe)
+ STAP_PROBE_STRUCT(probe,1,(size_t)&& _probe_ ## probe) \
+ asm volatile ("# %0" :: "m" ((_probe_ ## probe.probe_type)));
#endif
#ifndef USE_STAP_DEBUGINFO_PROBE
#define STAP_PROBE1(provider,probe,arg1) \
STAP_PROBE_STRUCT(probe,0,1) \
- if (__builtin_expect(_stap_probe_sentinel, 0))\
- _stap_probe_1 (_probe_ ## probe.probe_name,(size_t)arg1);
+ _stap_probe_1 (_probe_ ## probe.probe_name,(size_t)arg1);
#else
#define STAP_PROBE1(provider,probe,parm1) \
_probe_ ## probe: \
@@ -64,8 +56,7 @@ _probe_ ## probe: \
#ifndef USE_STAP_DEBUGINFO_PROBE
#define STAP_PROBE2(provider,probe,arg1,arg2) \
STAP_PROBE_STRUCT(probe,0,2) \
- if (__builtin_expect(_stap_probe_sentinel, 0)) \
- _stap_probe_2 (_probe_ ## probe.probe_name,(size_t)arg1,(size_t)arg2);
+ _stap_probe_2 (_probe_ ## probe.probe_name,(size_t)arg1,(size_t)arg2);
#else
#define STAP_PROBE2(provider,probe,parm1,parm2) \
_probe_ ## probe: \
@@ -81,8 +72,7 @@ _probe_ ## probe: \
#ifndef USE_STAP_DEBUGINFO_PROBE
#define STAP_PROBE3(provider,probe,arg1,arg2,arg3) \
STAP_PROBE_STRUCT(probe,0,3) \
- if (__builtin_expect(_stap_probe_sentinel, 0)) \
- _stap_probe_3 (_probe_ ## probe.probe_name,(size_t)arg1,(size_t)arg2,(size_t)arg3);
+ _stap_probe_3 (_probe_ ## probe.probe_name,(size_t)arg1,(size_t)arg2,(size_t)arg3);
#else
#define STAP_PROBE3(provider,probe,parm1,parm2,parm3) \
_probe_ ## probe: \
@@ -100,8 +90,7 @@ _probe_ ## probe: \
#ifndef USE_STAP_DEBUGINFO_PROBE
#define STAP_PROBE4(provider,probe,arg1,arg2,arg3,arg4) \
STAP_PROBE_STRUCT(probe,0,4) \
- if (__builtin_expect(_stap_probe_sentinel, 0)) \
- _stap_probe_4 (_probe_ ## probe.probe_name,(size_t)arg1,(size_t)arg2,(size_t)arg3,(size_t)arg4);
+ _stap_probe_4 (_probe_ ## probe.probe_name,(size_t)arg1,(size_t)arg2,(size_t)arg3,(size_t)arg4);
#else
#define STAP_PROBE4(provider,probe,parm1,parm2,parm3) \
_probe_ ## probe: \
@@ -121,8 +110,7 @@ _probe_ ## probe: \
#ifndef USE_STAP_DEBUGINFO_PROBE
#define STAP_PROBE5(provider,probe,arg1,arg2,arg3,arg4,arg5) \
STAP_PROBE_STRUCT(probe,0,5) \
- if (__builtin_expect(_stap_probe_sentinel, 0))\
- _stap_probe_5 (_probe_ ## probe.probe_name,(size_t)arg1,(size_t)arg2,(size_t)arg3,(size_t)arg4,(size_t)arg5);
+ _stap_probe_5 (_probe_ ## probe.probe_name,(size_t)arg1,(size_t)arg2,(size_t)arg3,(size_t)arg4,(size_t)arg5);
#else
#define STAP_PROBE5(provider,probe,parm1,parm2,parm3,parm4,parm5) \
_probe_ ## probe: \
@@ -140,3 +128,14 @@ _probe_ ## probe: \
asm volatile ("# %0" :: "r"(arg5)); \
asm volatile ("# %0" :: "m" ((_probe_ ## probe.probe_type)));
#endif
+
+#define DTRACE_PROBE1(provider,probe,parm1,parm2,parm3,parm4,parm5) \
+STAP_PROBE1(provider,probe,parm1,parm2,parm3,parm4,parm5)
+#define DTRACE_PROBE2(provider,probe,parm1,parm2,parm3,parm4,parm5) \
+STAP_PROBE2(provider,probe,parm1,parm2,parm3,parm4,parm5)
+#define DTRACE_PROBE3(provider,probe,parm1,parm2,parm3,parm4,parm5) \
+STAP_PROBE3(provider,probe,parm1,parm2,parm3,parm4,parm5)
+#define DTRACE_PROBE4(provider,probe,parm1,parm2,parm3,parm4,parm5) \
+STAP_PROBE4(provider,probe,parm1,parm2,parm3,parm4,parm5)
+#define DTRACE_PROBE5(provider,probe,parm1,parm2,parm3,parm4,parm5) \
+STAP_PROBE5(provider,probe,parm1,parm2,parm3,parm4,parm5)
diff --git a/runtime/vsprintf.c b/runtime/vsprintf.c
index 4ffcf72e..831b7a2b 100644
--- a/runtime/vsprintf.c
+++ b/runtime/vsprintf.c
@@ -143,8 +143,6 @@ int _stp_vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
int precision; /* min. # of digits for integers; max
number of chars for from string */
int qualifier; /* 'h', 'l', or 'L' for integer fields */
- char *write_len_ptr = NULL;
- int write_len_width = 0;
/* Reject out-of-range values early */
if (unlikely((int) size < 0))
@@ -172,7 +170,7 @@ int _stp_vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
case '#': flags |= STP_SPECIAL; goto repeat;
case '0': flags |= STP_ZEROPAD; goto repeat;
}
-
+
/* get field width */
field_width = -1;
if (isdigit(*fmt))
@@ -190,7 +188,7 @@ int _stp_vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
/* get the precision */
precision = -1;
if (*fmt == '.') {
- ++fmt;
+ ++fmt;
if (isdigit(*fmt))
precision = skip_atoi(&fmt);
else if (*fmt == '*') {
@@ -283,7 +281,7 @@ int _stp_vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
++str;
}
continue;
-
+
case 's':
case 'm':
s = va_arg(args, char *);
@@ -332,7 +330,7 @@ int _stp_vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
flags |= STP_SIGN;
case 'u':
break;
-
+
case 'p':
/* Note that %p takes an int64_t argument. */
len = 2*sizeof(void *) + 2;
@@ -363,16 +361,6 @@ int _stp_vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
16, field_width, field_width, flags);
continue;
- case 'n':
- write_len_ptr = str;
- write_len_width = 2;
- if (field_width == 1)
- write_len_width = 1;
- else if (field_width == 4)
- write_len_width = 4;
- str += write_len_width;
- continue;
-
case '%':
if (str <= end)
*str = '%';
@@ -436,29 +424,6 @@ int _stp_vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
field_width, precision, flags);
}
- if (write_len_ptr) {
- int written;
- if (likely(str <= end))
- written = str - write_len_ptr - write_len_width;
- else
- written = end - write_len_ptr - write_len_width;
-
- if (likely(write_len_ptr + write_len_width < end)) {
- switch (write_len_width) {
- case 1:
- *(uint8_t *)write_len_ptr = (uint8_t)written;
- break;
- case 2:
- *(uint16_t *)write_len_ptr = (uint16_t)written;
- break;
-
- case 4:
- *(uint32_t *)write_len_ptr = (uint32_t)written;
- break;
- }
- }
- }
-
if (likely(str <= end))
*str = '\0';
else if (size > 0)