aboutsummaryrefslogtreecommitdiff
path: root/src/rt/sync/interrupt_transparent_queue.h
blob: 7c02d0c83888e4e7269c0a5db59e24e95bbc2107 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#ifndef INTERRUPT_TRANSPARENT_QUEUE_H
#define INTERRUPT_TRANSPARENT_QUEUE_H

#include "spin_lock.h"

class interrupt_transparent_queue_node {
public:
    interrupt_transparent_queue_node *next;
    interrupt_transparent_queue_node();
};

class interrupt_transparent_queue : interrupt_transparent_queue_node {
    spin_lock lock;
    interrupt_transparent_queue_node *_tail;
public:
    interrupt_transparent_queue();
    void enqueue(interrupt_transparent_queue_node *item);
    interrupt_transparent_queue_node *dequeue();
    bool is_empty();
};

#endif /* INTERRUPT_TRANSPARENT_QUEUE_H */