]> rtime.felk.cvut.cz Git - l4.git/blob - kernel/fiasco/src/jdb/jdb_handler_queue.cpp
Inital import
[l4.git] / kernel / fiasco / src / jdb / jdb_handler_queue.cpp
1 INTERFACE:
2
3 // XXX If there is a constructor needed for this class make sure that it is
4 //     called with a priority higher than JDB_MODULE_INIT_PRIO!
5
6 class Jdb_handler
7 {
8   friend class Jdb_handler_queue;
9   
10 public:
11   Jdb_handler( void (*handler)() ) : handler(handler), next(0) {}
12   void execute() { handler(); }
13
14 private:
15   void (*handler)();
16   Jdb_handler *next;
17 };
18
19 class Jdb_handler_queue
20 {
21 private:
22   Jdb_handler *first;
23 };
24
25 IMPLEMENTATION:
26
27 PUBLIC inline
28 void
29 Jdb_handler_queue::add (Jdb_handler *handler)
30 {
31   handler->next = first;
32   first = handler;
33 }
34
35 PUBLIC
36 void
37 Jdb_handler_queue::execute () const
38 {
39   Jdb_handler *h = first;
40   while(h)
41     {
42       h->execute();
43       h = h->next;
44     }
45 }
46