# 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 ; };