|  | @@ -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 ;
 | 
	
		
			
				|  |  | +};
 |