]> pd.if.org Git - nbds/blob - runtime/runtime.c
work in progress
[nbds] / runtime / runtime.c
1 /*
2  * Written by Josh Dybnis and released to the public domain, as explained at
3  * http://creativecommons.org/licenses/publicdomain
4  */
5 #include <stdlib.h>
6 #include <pthread.h>
7 #include "common.h"
8 #include "runtime.h"
9 #include "rlocal.h"
10 #include "mem.h"
11 #include "tls.h"
12
13 DECLARE_THREAD_LOCAL(ThreadId, int);
14 static int ThreadIndex
15
16 static int MaxThreadId = 0;
17
18 __attribute__ ((constructor)) void nbd_init (void) {
19     rnd_init();
20     mem_init();
21 }
22
23 void nbd_thread_init (void) {
24     LOCALIZE_THREAD_LOCAL(ThreadId, int);
25
26     if (ThreadId == 0) {
27         ++MaxThreadId; // TODO: reuse thread id's of threads that have been destroyed
28         ASSERT(MaxThreadId <= MAX_NUM_THREADS);
29         SET_THREAD_LOCAL(ThreadId, MaxThreadId);
30         rnd_thread_init();
31     } 
32
33     lwt_thread_init();
34     rcu_thread_init();
35 }