diff options
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/ChangeLog | 6 | ||||
-rw-r--r-- | runtime/sduprobes.c | 8 | ||||
-rw-r--r-- | runtime/sduprobes.h | 39 | ||||
-rw-r--r-- | runtime/vsprintf.c | 43 |
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) |