00001
00002
00003 #ifndef irq_i_h
00004 #define irq_i_h
00005 #include "globals.h"
00006
00007 #include "entry_frame.h"
00008 #include "globalconfig.h"
00009 #include "l4_types.h"
00010 #include "receiver.h"
00011 #include "thread_state.h"
00012
00013
00014
00015
00016
00017
00018
00019
00024 inline int
00025 Irq::consume()
00026 {
00027 int old;
00028
00029 do
00030 {
00031 old = _queued;
00032 }
00033 while (!cas (&_queued, old, old - 1));
00034
00035 return old - 1;
00036 }
00037
00038 #endif // irq_i_h