From 616b7afb724a32df41eebfaf95402d008c60b411 Mon Sep 17 00:00:00 2001 From: Graydon Hoare Date: Wed, 8 Sep 2010 19:13:49 -0700 Subject: Tidy up the sync dir, remove dead or mis-designed code in favour of OS primitives, switch rust_kernel to use a lock/signal pair and wait rather than spin. --- src/rt/sync/interrupt_transparent_queue.cpp | 56 ----------------------------- 1 file changed, 56 deletions(-) delete mode 100644 src/rt/sync/interrupt_transparent_queue.cpp (limited to 'src/rt/sync/interrupt_transparent_queue.cpp') diff --git a/src/rt/sync/interrupt_transparent_queue.cpp b/src/rt/sync/interrupt_transparent_queue.cpp deleted file mode 100644 index 064b25f1..00000000 --- a/src/rt/sync/interrupt_transparent_queue.cpp +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Interrupt transparent queue, Schoen et. al, "On Interrupt-Transparent - * Synchronization in an Embedded Object-Oriented Operating System", 2000. - * enqueue() is allowed to interrupt enqueue() and dequeue(), however, - * dequeue() is not allowed to interrupt itself. - */ - -#include "../globals.h" -#include "interrupt_transparent_queue.h" - -interrupt_transparent_queue_node::interrupt_transparent_queue_node() : - next(NULL) { - -} - -interrupt_transparent_queue::interrupt_transparent_queue() : _tail(this) { - -} - -void -interrupt_transparent_queue::enqueue(interrupt_transparent_queue_node *item) { - lock.lock(); - item->next = (interrupt_transparent_queue_node *) NULL; - interrupt_transparent_queue_node *last = _tail; - _tail = item; - while (last->next) { - last = last->next; - } - last->next = item; - lock.unlock(); -} - -interrupt_transparent_queue_node * -interrupt_transparent_queue::dequeue() { - lock.lock(); - interrupt_transparent_queue_node *item = next; - if (item && !(next = item->next)) { - _tail = (interrupt_transparent_queue_node *) this; - if (item->next) { - interrupt_transparent_queue_node *lost = item->next; - interrupt_transparent_queue_node *help; - do { - help = lost->next; - enqueue(lost); - } while ((lost = help) != - (interrupt_transparent_queue_node *) NULL); - } - } - lock.unlock(); - return item; -} - -bool -interrupt_transparent_queue::is_empty() { - return next == NULL; -} -- cgit v1.2.3