25,11 → 25,11 |
***************************************/ |
|
/* |
* CVS : $Id: semaph.h,v 1.2 2003-03-13 13:37:58 pj Exp $ |
* CVS : $Id: semaph.h,v 1.3 2006-03-09 16:29:17 tullio Exp $ |
* |
* File: $File$ |
* Revision: $Revision: 1.2 $ |
* Last update: $Date: 2003-03-13 13:37:58 $ |
* Revision: $Revision: 1.3 $ |
* Last update: $Date: 2006-03-09 16:29:17 $ |
*/ |
|
/* |
80,63 → 80,6 |
/*+ Signal a semaphore +*/ |
#define __sem_signal(ptr) (internal_sem_post(ptr)) |
|
|
|
|
#if 0 |
|
/* |
#include <hartik/const.h> |
|
typedef struct { |
QUEUE queue; |
int value; |
} __semaph_t; |
|
void __semaph_init(__semaph_t *, int val); |
void __semaph_lock(__semaph_t *); |
int __semaph_trylock(__semaph_t *); |
void __semaph_unlock(__semaph_t *); |
*/ |
|
/* |
* temporary hack |
*/ |
|
#include <h/sys/kern.h> |
#include <h/sys/const.h> |
|
#ifdef FSCHECKSEMAPH |
#include <fs/assert.h> |
#define checksemaph(x) _assert((x)>=0&&(x)<MAX_SEM) |
#else |
#define checksemaph(x) |
#endif |
|
/*+ a semaphore object +*/ |
typedef SEM __sem_t; |
|
/* |
The following macros can be used to synchronize events; all |
require a pointer to a semaphore object and return nothing; |
a semaphore can have "val" resource free. |
*/ |
|
/*+ Initialize a semaphore (to integer val) +*/ |
#define __sem_init(ptr,val) {*(ptr)=sem_create(val); checksemaph(*ptr);} |
|
/*+ Wait for a semaphore +*/ |
#define __sem_wait(ptr) {checksemaph(*ptr); sem_wait(*(ptr),BLOCK);} |
|
/*+ Try to wait for a semaphore (return 0 on success) +*/ |
#define __sem_trywait(ptr) (!sem_wait(*(ptr),NON_BLOCK)) |
|
/*+ Signal a semaphore +*/ |
#define __sem_signal(ptr) {checksemaph(*ptr); sem_signal(*(ptr));} |
|
#endif |
|
|
__END_DECLS |
#endif |
|