]> rtime.felk.cvut.cz Git - l4.git/blob - kernel/fiasco/src/kern/cpu_mask.cpp
update
[l4.git] / kernel / fiasco / src / kern / cpu_mask.cpp
1 INTERFACE:
2
3 #include "bitmap.h"
4 #include "config.h"
5
6 class Cpu_mask
7 {
8 public:
9   enum class Init { Bss };
10   Cpu_mask(Init) {}
11   Cpu_mask() { _b.clear_all(); }
12
13   bool empty() const { return _b.is_empty(); }
14   bool get(unsigned cpu) const { return _b[cpu]; }
15   void clear(unsigned cpu) { return _b.clear_bit(cpu); }
16   void set(unsigned cpu) { _b.set_bit(cpu); };
17   void atomic_set(unsigned cpu) {_b.atomic_set_bit(cpu); }
18   void atomic_clear(unsigned cpu) {_b.atomic_clear_bit(cpu); }
19   bool atomic_get_and_clear(unsigned cpu)
20   { return _b.atomic_get_and_clear(cpu); }
21
22 private:
23   Bitmap<Config::Max_num_cpus> _b;
24 };