about summary refs log tree commit diff
path: root/nptl/DESIGN-barrier.txt
diff options
context:
space:
mode:
Diffstat (limited to 'nptl/DESIGN-barrier.txt')
-rw-r--r--nptl/DESIGN-barrier.txt44
1 files changed, 0 insertions, 44 deletions
diff --git a/nptl/DESIGN-barrier.txt b/nptl/DESIGN-barrier.txt
deleted file mode 100644
index 23463c6b7e..0000000000
--- a/nptl/DESIGN-barrier.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-Barriers pseudocode
-===================
-
-    int pthread_barrier_wait(barrier_t *barrier);
-
-struct barrier_t {
-
-   unsigned int lock:
-         - internal mutex
-
-   unsigned int left;
-         - current barrier count, # of threads still needed.
-
-   unsigned int init_count;
-         - number of threads needed for the barrier to continue.
-
-   unsigned int curr_event;
-         - generation count
-}
-
-pthread_barrier_wait(barrier_t *barrier)
-{
-  unsigned int event;
-  result = 0;
-
-  lll_lock(barrier->lock);
-  if (!--barrier->left) {
-    barrier->curr_event++;
-    futex_wake(&barrier->curr_event, INT_MAX)
-
-    result = BARRIER_SERIAL_THREAD;
-  } else {
-    event = barrier->curr_event;
-    lll_unlock(barrier->lock);
-    do {
-      futex_wait(&barrier->curr_event, event)
-    } while (event == barrier->curr_event);
-  }
-
-  if (atomic_increment_val (barrier->left) == barrier->init_count)
-    lll_unlock(barrier->lock);
-
-  return result;
-}