Subversion Repositories HelenOS

Rev

Rev 2927 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2927 Rev 3191
Line 37... Line 37...
37
 
37
 
38
#include <arch/types.h>
38
#include <arch/types.h>
39
#include <synch/semaphore.h>
39
#include <synch/semaphore.h>
40
#include <synch/synch.h>
40
#include <synch/synch.h>
41
 
41
 
-
 
42
typedef enum {
-
 
43
    MUTEX_PASSIVE,
-
 
44
    MUTEX_ACTIVE
-
 
45
} mutex_type_t;
-
 
46
 
42
typedef struct {
47
typedef struct {
-
 
48
    mutex_type_t type;
43
    semaphore_t sem;
49
    semaphore_t sem;
44
} mutex_t;
50
} mutex_t;
45
 
51
 
46
#define mutex_lock(mtx) \
52
#define mutex_lock(mtx)         \
47
    _mutex_lock_timeout((mtx), SYNCH_NO_TIMEOUT, SYNCH_FLAGS_NONE)
53
    _mutex_lock_timeout((mtx), SYNCH_NO_TIMEOUT, SYNCH_FLAGS_NONE)
48
#define mutex_trylock(mtx) \
54
#define mutex_trylock(mtx)      \
49
    _mutex_lock_timeout((mtx), SYNCH_NO_TIMEOUT, SYNCH_FLAGS_NON_BLOCKING)
55
    _mutex_lock_timeout((mtx), SYNCH_NO_TIMEOUT, SYNCH_FLAGS_NON_BLOCKING)
50
#define mutex_lock_timeout(mtx, usec) \
56
#define mutex_lock_timeout(mtx, usec)   \
51
    _mutex_lock_timeout((mtx), (usec), SYNCH_FLAGS_NON_BLOCKING)
57
    _mutex_lock_timeout((mtx), (usec), SYNCH_FLAGS_NON_BLOCKING)
52
 
58
 
53
extern void mutex_initialize(mutex_t *mtx);
59
extern void mutex_initialize(mutex_t *, mutex_type_t);
54
extern int _mutex_lock_timeout(mutex_t *mtx, uint32_t usec, int flags);
60
extern int _mutex_lock_timeout(mutex_t *, uint32_t, int);
55
extern void mutex_unlock(mutex_t *mtx);
61
extern void mutex_unlock(mutex_t *);
56
 
62
 
57
#endif
63
#endif
58
 
64
 
59
/** @}
65
/** @}
60
 */
66
 */