about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSiddhesh Poyarekar <siddhesh@redhat.com>2013-11-20 07:46:48 +0530
committerSiddhesh Poyarekar <siddhesh@redhat.com>2013-11-20 07:46:48 +0530
commitf3fd2628d8e86343f2add6de5be602cfc2cb8e00 (patch)
tree340ba983d4bbca3e2eaa24c0c5657c071da039db
parentb2f386c18f1e8c832c673bd813d56a07391c666d (diff)
downloadglibc-f3fd2628d8e86343f2add6de5be602cfc2cb8e00.tar.gz
glibc-f3fd2628d8e86343f2add6de5be602cfc2cb8e00.tar.xz
glibc-f3fd2628d8e86343f2add6de5be602cfc2cb8e00.zip
Add systemtap probe markers for sin, cos, asin and acos
-rw-r--r--ChangeLog10
-rw-r--r--manual/probes.texi42
-rw-r--r--sysdeps/ieee754/dbl-64/sincos32.c5
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;
 }