Rev 3022 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 3022 | Rev 4055 | ||
|---|---|---|---|
| Line 80... | Line 80... | ||
| 80 | * |
80 | * |
| 81 | * @param rwl Reader/Writer lock. |
81 | * @param rwl Reader/Writer lock. |
| 82 | */ |
82 | */ |
| 83 | void rwlock_initialize(rwlock_t *rwl) { |
83 | void rwlock_initialize(rwlock_t *rwl) { |
| 84 | spinlock_initialize(&rwl->lock, "rwlock_t"); |
84 | spinlock_initialize(&rwl->lock, "rwlock_t"); |
| 85 | mutex_initialize(&rwl->exclusive); |
85 | mutex_initialize(&rwl->exclusive, MUTEX_PASSIVE); |
| 86 | rwl->readers_in = 0; |
86 | rwl->readers_in = 0; |
| 87 | } |
87 | } |
| 88 | 88 | ||
| 89 | /** Acquire reader/writer lock for reading |
89 | /** Acquire reader/writer lock for reading |
| 90 | * |
90 | * |
| Line 229... | Line 229... | ||
| 229 | * events happen atomically when rwl->lock is held.) |
229 | * events happen atomically when rwl->lock is held.) |
| 230 | */ |
230 | */ |
| 231 | interrupts_restore(ipl); |
231 | interrupts_restore(ipl); |
| 232 | break; |
232 | break; |
| 233 | case ESYNCH_OK_ATOMIC: |
233 | case ESYNCH_OK_ATOMIC: |
| 234 | panic("_mutex_lock_timeout()==ESYNCH_OK_ATOMIC\n"); |
234 | panic("_mutex_lock_timeout() == ESYNCH_OK_ATOMIC."); |
| 235 | break; |
235 | break; |
| 236 | default: |
236 | default: |
| 237 | panic("invalid ESYNCH\n"); |
237 | panic("Invalid ESYNCH."); |
| 238 | break; |
238 | break; |
| 239 | } |
239 | } |
| 240 | return rc; |
240 | return rc; |
| 241 | } |
241 | } |
| 242 | 242 | ||