diff options
Diffstat (limited to 'src/include/kernel/msg.H')
-rw-r--r-- | src/include/kernel/msg.H | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/include/kernel/msg.H b/src/include/kernel/msg.H new file mode 100644 index 000000000..7a32197f5 --- /dev/null +++ b/src/include/kernel/msg.H @@ -0,0 +1,28 @@ +#ifndef __KERNEL_MSG_H +#define __KERNEL_MSG_H + +#include <kernel/types.h> +#include <sys/msg.h> +#include <util/locked/list.H> +#include <util/locked/queue.H> + +struct MessagePending +{ + typedef msg_t* key_type; + key_type key; + task_t* task; + + MessagePending* prev; + MessagePending* next; +}; + +class MessageQueue +{ + public: + Spinlock lock; + Util::Locked::List<MessagePending, MessagePending::key_type> messages; + Util::Locked::List<MessagePending, MessagePending::key_type> responses; + Util::Locked::Queue<task_t> waiting; +}; + +#endif |