| 35 | } rw_lock_t; |
| 36 | |
| 37 | inline static rw_lock_t * lock_init_rw(void) |
| 38 | { |
| 39 | rw_lock_t * new_lock; |
| 40 | new_lock = (rw_lock_t*)shm_malloc(sizeof(rw_lock_t)); |
| 41 | |
| 42 | if (!new_lock) |
| 43 | goto error; |
| 44 | memset(new_lock, 0, sizeof(rw_lock_t)); |
| 45 | new_lock->lock = lock_alloc(); |
| 46 | |
| 47 | if (!new_lock->lock) |
| 48 | goto error; |
| 49 | if (!lock_init(new_lock->lock)) |
| 50 | goto error; |
| 51 | |
| 52 | return new_lock; |
| 53 | error: |
| 54 | if (new_lock!=NULL && new_lock->lock) |
| 55 | lock_dealloc(new_lock->lock); |
| 56 | if (new_lock) |
| 57 | shm_free(new_lock); |
| 58 | return NULL; |
| 59 | } |
| 60 | |
| 61 | inline static void lock_destroy_rw(rw_lock_t *_lock) |
| 62 | { |
no test coverage detected