summaryrefslogtreecommitdiffstats
path: root/tapset/random.stp
diff options
context:
space:
mode:
Diffstat (limited to 'tapset/random.stp')
-rw-r--r--tapset/random.stp14
1 files changed, 14 insertions, 0 deletions
diff --git a/tapset/random.stp b/tapset/random.stp
new file mode 100644
index 00000000..9b2fdc70
--- /dev/null
+++ b/tapset/random.stp
@@ -0,0 +1,14 @@
+/**
+ * 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)
+%{ /* unprivileged */
+#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
+%}