summaryrefslogtreecommitdiffstats
path: root/tapset
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@elastic.org>2009-09-23 16:41:40 -0400
committerFrank Ch. Eigler <fche@elastic.org>2009-09-23 16:41:40 -0400
commitd098276239dd9f2e1ad031b48519a5a21779c369 (patch)
tree9b288ad5fcf9ac9b7a13f3bdc986621230d60dc2 /tapset
parent09846ceb72c27dfe87f0b5c8d0a6296fc09bbc36 (diff)
downloadsystemtap-steved-d098276239dd9f2e1ad031b48519a5a21779c369.tar.gz
systemtap-steved-d098276239dd9f2e1ad031b48519a5a21779c369.tar.xz
systemtap-steved-d098276239dd9f2e1ad031b48519a5a21779c369.zip
PR10632: simplify randint() implementation
* tapset/random.stp (randint): Make it 1-arity (imply min=0). Document with kerneldoc. * doc/Systemtap_Tapset_Reference/tapsets.tmpl: Extract the docs. * runtime/arith.c (_stp_random_pm_u): Rename without _pm. (_stp_random_pm): Rewrite in terms of ..._u. * testsuite/random.stp: Adapt & simplify.
Diffstat (limited to 'tapset')
-rw-r--r--tapset/random.stp28
1 files changed, 12 insertions, 16 deletions
diff --git a/tapset/random.stp b/tapset/random.stp
index e0a89d19..ada94216 100644
--- a/tapset/random.stp
+++ b/tapset/random.stp
@@ -1,18 +1,14 @@
-/** @addtogroup library
-* The library tapset is a collection of standard functions.
-* @{
-*/
-
-function randint:long(min:long, max:long)
+/**
+ * sfunction randint - Return a random number between [0,n)
+ * @n: Number past upper limit of range, not larger than 2**20.
+ */
+function randint:long(n:long)
%{
-
- unsigned long difference = (unsigned long)(THIS->max - THIS->min);
-
- if ( THIS->min >= THIS->max || (THIS->max -THIS->min) > (1024*1024) ){
- CONTEXT->last_error = "either first argument was not strictly less than the second argument, or their difference was greater than (1024*1024)";
- }
- THIS->__retvalue = THIS->min + ( _stp_random_pm_u(2147483646) % (difference + 1) );
-
+#define RANDMAX (1024*1024)
+ if (THIS->n > RANDMAX)
+ CONTEXT->last_error = "range too wide";
+ else {
+ THIS->__retvalue = (uint64_t) _stp_random_u((unsigned long) THIS->n);
+ }
+#undef RANDMAX
%}
-
-/** @} */