diff options
author | Siddhesh Poyarekar <siddhesh@redhat.com> | 2013-11-20 07:46:48 +0530 |
---|---|---|
committer | Siddhesh Poyarekar <siddhesh@redhat.com> | 2013-11-20 07:46:48 +0530 |
commit | f3fd2628d8e86343f2add6de5be602cfc2cb8e00 (patch) | |
tree | 340ba983d4bbca3e2eaa24c0c5657c071da039db | |
parent | b2f386c18f1e8c832c673bd813d56a07391c666d (diff) | |
download | glibc-f3fd2628d8e86343f2add6de5be602cfc2cb8e00.tar.gz glibc-f3fd2628d8e86343f2add6de5be602cfc2cb8e00.tar.xz glibc-f3fd2628d8e86343f2add6de5be602cfc2cb8e00.zip |
Add systemtap probe markers for sin, cos, asin and acos
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | manual/probes.texi | 42 | ||||
-rw-r--r-- | sysdeps/ieee754/dbl-64/sincos32.c | 5 |
3 files changed, 57 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index 677adead08..a138e0bc3f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2013-11-20 Siddhesh Poyarekar <siddhesh@redhat.com> + + * manual/probes.texi (Mathematical Function Probes): Add + documentation for sin, cos, asin and acos probes. + * sysdeps/ieee754/dbl-64/sincos32.c: Include stap-probe.h. + (__sin32): Add slowasin probe. + (__cos32): Add slowacos probe. + (__mpsin): Add slowsin probe. + (__mpcos): Add slowcos probe. + 2013-11-19 Joseph Myers <joseph@codesourcery.com> [BZ #15483] diff --git a/manual/probes.texi b/manual/probes.texi index 5492bb79ff..108f460148 100644 --- a/manual/probes.texi +++ b/manual/probes.texi @@ -353,3 +353,45 @@ results in multiple precision computation with precision 32. Argument @var{$arg1} is the input to the function and @var{$arg2} is the computed result. @end deftp + +@deftp Probe slowasin (double @var{$arg1}, double @var{$arg2}) +This probe is hit when the @code{asin} function is called with an input that +results in multiple precision computation with precision 32. Argument +@var{$arg1} is the input to the function and @var{$arg2} is the computed +result. +@end deftp + +@deftp Probe slowacos (double @var{$arg1}, double @var{$arg2}) +This probe is hit when the @code{acos} function is called with an input that +results in multiple precision computation with precision 32. Argument +@var{$arg1} is the input to the function and @var{$arg2} is the computed +result. +@end deftp + +@deftp Probe slowsin (double @var{$arg1}, double @var{$arg2}) +This probe is hit when the @code{sin} function is called with an input that +results in multiple precision computation with precision 32. Argument +@var{$arg1} is the input to the function and @var{$arg2} is the computed +result. +@end deftp + +@deftp Probe slowcos (double @var{$arg1}, double @var{$arg2}) +This probe is hit when the @code{cos} function is called with an input that +results in multiple precision computation with precision 32. Argument +@var{$arg1} is the input to the function and @var{$arg2} is the computed +result. +@end deftp + +@deftp Probe slowsin_dx (double @var{$arg1}, double @var{$arg2}, double @var{$arg3}) +This probe is hit when the @code{sin} function is called with an input that +results in multiple precision computation with precision 32. Argument +@var{$arg1} is the input to the function, @var{$arg2} is the error bound of +@var{$arg1} and @var{$arg3} is the computed result. +@end deftp + +@deftp Probe slowcos_dx (double @var{$arg1}, double @var{$arg2}, double @var{$arg3}) +This probe is hit when the @code{cos} function is called with an input that +results in multiple precision computation with precision 32. Argument +@var{$arg1} is the input to the function, @var{$arg2} is the error bound of +@var{$arg1} and @var{$arg3} is the computed result. +@end deftp diff --git a/sysdeps/ieee754/dbl-64/sincos32.c b/sysdeps/ieee754/dbl-64/sincos32.c index 49aa148953..e42fd27250 100644 --- a/sysdeps/ieee754/dbl-64/sincos32.c +++ b/sysdeps/ieee754/dbl-64/sincos32.c @@ -43,6 +43,7 @@ #include "mpa.h" #include "sincos32.h" #include <math_private.h> +#include <stap-probe.h> #ifndef SECTION # define SECTION @@ -149,6 +150,7 @@ __sin32 (double x, double res, double res1) /* if a > 0 return min (res, res1), otherwise return max (res, res1). */ if ((a.d[0] > 0 && res >= res1) || (a.d[0] <= 0 && res <= res1)) res = res1; + LIBC_PROBE (slowasin, 2, &res, &x); return res; } @@ -182,6 +184,7 @@ __cos32 (double x, double res, double res1) /* if a > 0 return max (res, res1), otherwise return min (res, res1). */ if ((a.d[0] > 0 && res <= res1) || (a.d[0] <= 0 && res >= res1)) res = res1; + LIBC_PROBE (slowacos, 2, &res, &x); return res; } @@ -240,6 +243,7 @@ __mpsin (double x, double dx, bool reduce_range) default: __mp_dbl (&s, &y, p); } + LIBC_PROBE (slowsin, 3, &x, &dx, &y); return y; } @@ -298,6 +302,7 @@ __mpcos (double x, double dx, bool reduce_range) default: __mp_dbl (&c, &y, p); } + LIBC_PROBE (slowcos, 3, &x, &dx, &y); return y; } |