Rev 623 | Rev 1702 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 623 | Rev 1502 | ||
|---|---|---|---|
| Line 46... | Line 46... | ||
| 46 | mutex_t exclusive; /**< Mutex for writers, readers can bypass it if readers_in is positive. */ |
46 | mutex_t exclusive; /**< Mutex for writers, readers can bypass it if readers_in is positive. */ |
| 47 | count_t readers_in; /**< Number of readers in critical section. */ |
47 | count_t readers_in; /**< Number of readers in critical section. */ |
| 48 | }; |
48 | }; |
| 49 | 49 | ||
| 50 | #define rwlock_write_lock(rwl) \ |
50 | #define rwlock_write_lock(rwl) \ |
| 51 | _rwlock_write_lock_timeout((rwl),SYNCH_NO_TIMEOUT,SYNCH_BLOCKING) |
51 | _rwlock_write_lock_timeout((rwl),SYNCH_NO_TIMEOUT,SYNCH_FLAGS_NONE) |
| 52 | #define rwlock_read_lock(rwl) \ |
52 | #define rwlock_read_lock(rwl) \ |
| 53 | _rwlock_read_lock_timeout((rwl),SYNCH_NO_TIMEOUT,SYNCH_BLOCKING) |
53 | _rwlock_read_lock_timeout((rwl),SYNCH_NO_TIMEOUT,SYNCH_FLAGS_NONE) |
| 54 | #define rwlock_write_trylock(rwl) \ |
54 | #define rwlock_write_trylock(rwl) \ |
| 55 | _rwlock_write_lock_timeout((rwl),SYNCH_NO_TIMEOUT,SYNCH_NON_BLOCKING) |
55 | _rwlock_write_lock_timeout((rwl),SYNCH_NO_TIMEOUT,SYNCH_FLAGS_NON_BLOCKING) |
| 56 | #define rwlock_read_trylock(rwl) \ |
56 | #define rwlock_read_trylock(rwl) \ |
| 57 | _rwlock_read_lock_timeout((rwl),SYNCH_NO_TIMEOUT,SYNCH_NON_BLOCKING) |
57 | _rwlock_read_lock_timeout((rwl),SYNCH_NO_TIMEOUT,SYNCH_FLAGS_NON_BLOCKING) |
| 58 | #define rwlock_write_lock_timeout(rwl,usec) \ |
58 | #define rwlock_write_lock_timeout(rwl,usec) \ |
| 59 | _rwlock_write_lock_timeout((rwl),(usec),SYNCH_NON_BLOCKING) |
59 | _rwlock_write_lock_timeout((rwl),(usec),SYNCH_FLAGS_NONE) |
| 60 | #define rwlock_read_lock_timeout(rwl,usec) \ |
60 | #define rwlock_read_lock_timeout(rwl,usec) \ |
| 61 | _rwlock_read_lock_timeout((rwl),(usec),SYNCH_NON_BLOCKING) |
61 | _rwlock_read_lock_timeout((rwl),(usec),SYNCH_FLAGS_NONE) |
| 62 | 62 | ||
| 63 | extern void rwlock_initialize(rwlock_t *rwl); |
63 | extern void rwlock_initialize(rwlock_t *rwl); |
| 64 | extern void rwlock_read_unlock(rwlock_t *rwl); |
64 | extern void rwlock_read_unlock(rwlock_t *rwl); |
| 65 | extern void rwlock_write_unlock(rwlock_t *rwl); |
65 | extern void rwlock_write_unlock(rwlock_t *rwl); |
| 66 | extern int _rwlock_read_lock_timeout(rwlock_t *rwl, __u32 usec, int trylock); |
66 | extern int _rwlock_read_lock_timeout(rwlock_t *rwl, __u32 usec, int flags); |
| 67 | extern int _rwlock_write_lock_timeout(rwlock_t *rwl, __u32 usec, int trylock); |
67 | extern int _rwlock_write_lock_timeout(rwlock_t *rwl, __u32 usec, int flags); |
| 68 | 68 | ||
| 69 | #endif |
69 | #endif |
| - | 70 | ||