]> rtime.felk.cvut.cz Git - l4.git/blob - kernel/fiasco/src/kern/thread-ulock.cpp
3ae6056d19f47f6de22929121df759c4f21fabd9
[l4.git] / kernel / fiasco / src / kern / thread-ulock.cpp
1 INTERFACE [ulock]:
2
3 #include "prio_list.h"
4
5 EXTENSION class Thread
6 {
7 private:
8   Locked_prio_list *_wait_queue;
9 };
10
11
12 //------------------------------------------------------------------------
13 IMPLEMENTATION [ulock]:
14
15 PUBLIC inline
16 Locked_prio_list *
17 Thread::wait_queue() const
18 { return _wait_queue; }
19
20
21 PUBLIC inline
22 void
23 Thread::wait_queue(Locked_prio_list *wq)
24 { _wait_queue = wq; }
25
26
27 PRIVATE inline NEEDS[Thread::wait_queue]
28 void
29 Thread::wait_queue_kill()
30 {
31   while (Locked_prio_list *q = wait_queue())
32     {
33       Lock_guard<Spin_lock> g(q);
34       if (wait_queue() == q)
35         {
36           sender_dequeue(q);
37           wait_queue(0);
38           return;
39         }
40     }
41 }
42
43 //------------------------------------------------------------------------
44 IMPLEMENTATION [!ulock]:
45
46 PRIVATE inline
47 void
48 Thread::wait_queue_kill()
49 {}