BeRTOS
|
00001 00040 #ifndef MWARE_RESOURCE_H 00041 #define MWARE_RESOURCE_H 00042 00043 #include <drv/timer.h> // time_t 00044 #include <kern/sem.h> 00045 00046 #warning FIXME:Revise me! 00047 00048 /* 00049 * Abstract locking primitives used by host OS. 00050 */ 00051 typedef Semaphore ResourceLock; 00052 #define ResMan_sleep() timer_delay(1) 00053 #define ResMan_time_t mtime_t 00054 00055 00056 00057 // Forward decl 00058 struct Observer; 00059 00078 typedef struct Resource 00079 { 00080 //Private 00082 Semaphore lock; 00083 00085 struct Observer *owner; 00086 00088 int pri; 00089 00091 List queue; 00092 } Resource; 00093 00095 enum { EVENT_RELEASE = 1 }; 00096 00098 bool ResMan_Alloc(Resource *res, int pri, ResMan_time_t timeout, struct Observer *releaseRequest); 00099 00101 void ResMan_Free(Resource *res); 00102 00103 void ResMan_Init(Resource *res); 00104 00105 #endif /* MWARE_RESOURCE_H */