|
@@ -0,0 +1,20 @@
|
|
|
+# include "task-list-32-tasks.h"
|
|
|
+
|
|
|
+class Semaphore {
|
|
|
+ protected: TaskList mWaitingTaskList ;
|
|
|
+ protected: uint32_t mValue ;
|
|
|
+
|
|
|
+ public: Semaphore (const uint32_t inInitialValue) ;
|
|
|
+
|
|
|
+ //$service semaphore.V
|
|
|
+ public: void V (USER_MODE) asm ("semaphore.V") ;
|
|
|
+ public: void sys_V (IRQ_MODE) asm ("service.semaphore.V") ;
|
|
|
+
|
|
|
+ //$service semaphore.P
|
|
|
+ public: void P (USER_MODE) asm ("semaphore.P") ;
|
|
|
+ public: void sys_P (KERNEL_MODE) asm ("service.semaphore.P") ;
|
|
|
+
|
|
|
+ // Disable copy
|
|
|
+ private: Semaphore (const Semaphore &) = delete ;
|
|
|
+ private: Semaphore & operator = (const Semaphore &) = delete ;
|
|
|
+};
|