resource.h

Go to the documentation of this file.
00001 
00041 #ifndef MWARE_RESOURCE_H
00042 #define MWARE_RESOURCE_H
00043 
00044 #include <drv/timer.h> // time_t
00045 #include <kern/sem.h>
00046 
00047 #warning FIXME:Revise me!
00048 
00049 /*
00050  * Abstract locking primitives used by host OS.
00051  */
00052 typedef Semaphore ResourceLock;
00053 #define ResMan_sleep()         timer_delay(1)
00054 #define ResMan_time_t          mtime_t
00055 
00056 
00057 
00058 // Forward decl
00059 struct Observer;
00060 
00079 typedef struct Resource
00080 {
00081 //Private
00083     Semaphore lock;
00084 
00086     struct Observer *owner;
00087 
00089     int pri;
00090 
00092     List queue;
00093 } Resource;
00094 
00096 enum { EVENT_RELEASE = 1 };
00097 
00099 bool ResMan_Alloc(Resource *res, int pri, ResMan_time_t timeout, struct Observer *releaseRequest);
00100 
00102 void ResMan_Free(Resource *res);
00103 
00104 void ResMan_Init(Resource *res);
00105 
00106 #endif /* MWARE_RESOURCE_H */