-void nbd_thread_init (int id) {
- SET_THREAD_LOCAL(tid_, id);
- lwt_thread_init(id);
- rcu_thread_init(id);
+void nbd_thread_init (void) {
+ LOCALIZE_THREAD_LOCAL(ThreadId, int);
+
+ if (ThreadId == 0) {
+ ++MaxThreadId; // TODO: reuse thread id's of threads that have been destroyed
+ ASSERT(MaxThreadId <= MAX_NUM_THREADS);
+ SET_THREAD_LOCAL(ThreadId, MaxThreadId);
+ rnd_thread_init();
+ }
+
+ lwt_thread_init();
+ rcu_thread_init();