BeRTOS
resource.h
Go to the documentation of this file.
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 */