Rev 3022 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3022 | Rev 4055 | ||
---|---|---|---|
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 | */ |