25,11 → 25,11 |
***************************************/ |
|
/* |
* CVS : $Id: mutex.h,v 1.2 2003-03-13 13:37:58 pj Exp $ |
* CVS : $Id: mutex.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 $ |
*/ |
|
/* |
84,34 → 84,7 |
/*+ Signal a semaphore +*/ |
#define __mutex_unlock(ptr) (internal_sem_post(ptr)) |
|
#if 0 |
/* start old implementation */ |
|
#include <kernel/model.h> |
#include <kernel/func.h> |
#include <fs/assert.h> |
|
/*+ a mutex object +*/ |
typedef mutex_t __mutex_t; |
|
/* |
The following macros require a pointer to a mutex object and |
return nothing. |
*/ |
|
/* Initialize a mutex object +*/ |
#define __mutex_init(ptr,attr) _assert(mutex_init(ptr,attr)==0) |
/*+ Lock a mutex object +*/ |
#define __mutex_lock(ptr) _assert(mutex_lock(ptr)==0) |
/*+ Try to lock a mutex (return 0 on success locking) +*/ |
#define __mutex_trylock(ptr) (mutex_trylock((ptr))) |
/*+ Unlock a mutex +*/ |
#define __mutex_unlock(ptr) _assert(mutex_unlock(ptr)==0) |
|
/* end old implementation */ |
#endif |
|
/* |
* fast mutex |
*/ |
|
123,64 → 96,6 |
#define __fastmutex_lock(ptr) *ptr=kern_fsave() |
#define __fastmutex_unlock(ptr) kern_frestore(*ptr) |
|
#if 0 |
|
/* Hartik 3.x implemantation */ |
|
/* |
#include <hartik/const.h> |
|
typedef struct { |
QUEUE queue; |
int value; |
} __mutex_t; |
|
void __mutex_init(__mytex_t *); |
void __mutex_lock(__mytex_t *); |
int __mutex_trylock(__mytex_t *); |
void __mutex_unlock(__mytex_t *); |
*/ |
|
/* |
* temporary hack |
*/ |
|
#include <h/sys/kern.h> |
#include <h/sys/const.h> |
|
/*+ a mutex object +*/ |
typedef SEM __mutex_t; |
|
/* |
The following macros require a pointer to a mutex object and |
return nothing. |
*/ |
|
#ifdef FSCHECKMUTEX |
#include <fs/assert.h> |
#define checkmutex(x) assert((x)>=0&&(x)<MAX_SEM) |
#else |
#define checkmutex(x) |
#endif |
|
/* Initialize a mutex object +*/ |
#define __mutex_init(ptr) { *(ptr)=sem_create(1); checkmutex(*ptr); } |
|
/*+ Lock a mutex object +*/ |
#define __mutex_lock(ptr) { checkmutex(*ptr); sem_wait(*(ptr),BLOCK); } |
|
/*+ Try to lock a mutex (return 0 on success locking) +*/ |
#define __mutex_trylock(ptr) { checkmutex(*ptr); sem_wait(*(ptr),NON_BLOCK); } |
|
/*+ Unlock a mutex +*/ |
#define __mutex_unlock(ptr) { checkmutex(*ptr); sem_signal(*(ptr)); } |
|
#endif |
|
|
|
|
|
__END_DECLS |
#endif |
|