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 */