+ int myflag = event->done;
+ event->thread_counter = 0;
+ event->work++;
+ futex_wake(&event->work, event->threads_to_wait);
+ futex_wait(&event->done, myflag);
+}
+
+void xbt_event_wait(xbt_event_t event)
+{
+ int myflag;
+ unsigned int mycount;
+
+ myflag = event->work;
+ mycount = __sync_add_and_fetch(&event->thread_counter, 1);
+ if(mycount == event->threads_to_wait){
+ event->done++;
+ futex_wake(&event->done, 1);
+ }
+
+ futex_wait(&event->work, myflag);