-/*
+/*
* Written by Josh Dybnis and released to the public domain, as explained at
* http://creativecommons.org/licenses/publicdomain
*/
-#ifndef THREADS_H
-#define THREADS_H
+#ifndef RUNTIME_H
+#define RUNTIME_H
-void nbd_init (void);
+#include <pthread.h>
+#include "tls.h"
-int nbd_thread_create (pthread_t *restrict thread, int thread_id, void *(*start_routine)(void *), void *restrict arg);
+extern DECLARE_THREAD_LOCAL(tid_, int);
-void rcu_update (void);
+int nbd_thread_create (pthread_t *restrict thread, int thread_id, void *(*start_routine)(void *), void *restrict arg);
+uint64_t nbd_rand (void);
+uint64_t nbd_rand_seed (int i);
+int nbd_next_rand (uint64_t *r);
-#endif//THREADS_H
+#endif//RUNTIME_H