summaryrefslogtreecommitdiff
path: root/starts/meaning-vm
diff options
context:
space:
mode:
authorolpc user <olpc@xo-5d-f7-86.localdomain>2019-12-08 07:05:40 -0800
committerolpc user <olpc@xo-5d-f7-86.localdomain>2019-12-08 07:05:40 -0800
commit65c656eb18216d54d753df2a62eb6d2f5eaa0edc (patch)
treeb46eb1b692484ab299d23c27f2dcd973a44df3db /starts/meaning-vm
parent866a37a12e722f4aa89df56d05ac8666c308a63d (diff)
downloadstandingwithresilience-65c656eb18216d54d753df2a62eb6d2f5eaa0edc.tar.gz
standingwithresilience-65c656eb18216d54d753df2a62eb6d2f5eaa0edc.zip
move habit macro into level-2
Diffstat (limited to 'starts/meaning-vm')
-rw-r--r--starts/meaning-vm/habit-starts/rhythm.cpp3
-rw-r--r--starts/meaning-vm/level-2/level-2.hpp3
-rw-r--r--starts/meaning-vm/level-2/sugar.hpp (renamed from starts/meaning-vm/habit-starts/habit.hpp)10
3 files changed, 12 insertions, 4 deletions
diff --git a/starts/meaning-vm/habit-starts/rhythm.cpp b/starts/meaning-vm/habit-starts/rhythm.cpp
index 3085da0..56172e8 100644
--- a/starts/meaning-vm/habit-starts/rhythm.cpp
+++ b/starts/meaning-vm/habit-starts/rhythm.cpp
@@ -4,7 +4,7 @@
// Ideally, a human would run the rhythm.
#include "../level-1/level-1.hpp"
-#include "habit.hpp"
+#include "../level-2/level-2.hpp"
#include <iostream>
@@ -121,7 +121,6 @@ int main()
});
ahabit(wait-habit,
{
- habitdelay;
usleep(micros);
});
diff --git a/starts/meaning-vm/level-2/level-2.hpp b/starts/meaning-vm/level-2/level-2.hpp
new file mode 100644
index 0000000..29ab89e
--- /dev/null
+++ b/starts/meaning-vm/level-2/level-2.hpp
@@ -0,0 +1,3 @@
+#pragma once
+
+#include "sugar.hpp"
diff --git a/starts/meaning-vm/habit-starts/habit.hpp b/starts/meaning-vm/level-2/sugar.hpp
index 5c6f5e8..2fa9414 100644
--- a/starts/meaning-vm/habit-starts/habit.hpp
+++ b/starts/meaning-vm/level-2/sugar.hpp
@@ -1,10 +1,9 @@
#pragma once
#include <stdlib.h> // int rand(); void srand(int seed);
-#include <time.h> // int time(0);
+#include <time.h> // int time(0); int clock_gettime(CLOCK_REALTIME, struct timespec *tp{tv_sec,tv_nsec})
#include <unistd.h> // usleep(unsigned int usecs)
-__attribute__ ((visibility ("hidden"))) int __seed = (srand(time(0)), time(0));
#define habitdelay \
static int thisdelay = (double(rand()) / RAND_MAX * 400000 + 200000); \
usleep(thisdelay)
@@ -21,3 +20,10 @@ __attribute__ ((visibility ("hidden"))) int __seed = (srand(time(0)), time(0));
__VA_ARGS__ \
return intellect::level1::concepts::nothing; \
});
+
+// seed random number generator statically, for habitdelay
+namespace __internal {
+static struct timespec __tp;
+static int __timeres = clock_gettime(CLOCK_REALTIME, &__tp);
+static int __seed = (srand(__tp.tv_nsec), __tp.tv_nsec);
+}