Changeset 22f7769 in mainline for src/synch/rwlock.c
- Timestamp:
- 2005-10-17T23:31:41Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 4b2c872d
- Parents:
- 75eacab
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/synch/rwlock.c
r75eacab r22f7769 97 97 int _rwlock_write_lock_timeout(rwlock_t *rwl, __u32 usec, int trylock) 98 98 { 99 pri_t pri;99 ipl_t ipl; 100 100 int rc; 101 101 102 pri = cpu_priority_high();102 ipl = interrupts_disable(); 103 103 spinlock_lock(&THREAD->lock); 104 104 THREAD->rwlock_holder_type = RWLOCK_WRITER; 105 105 spinlock_unlock(&THREAD->lock); 106 cpu_priority_restore(pri);106 interrupts_restore(ipl); 107 107 108 108 /* … … 119 119 */ 120 120 121 pri = cpu_priority_high();121 ipl = interrupts_disable(); 122 122 spinlock_lock(&rwl->lock); 123 123 /* … … 129 129 let_others_in(rwl, ALLOW_READERS_ONLY); 130 130 spinlock_unlock(&rwl->lock); 131 cpu_priority_restore(pri);131 interrupts_restore(ipl); 132 132 } 133 133 … … 152 152 { 153 153 int rc; 154 pri_t pri;155 156 pri = cpu_priority_high();154 ipl_t ipl; 155 156 ipl = interrupts_disable(); 157 157 spinlock_lock(&THREAD->lock); 158 158 THREAD->rwlock_holder_type = RWLOCK_READER; … … 205 205 /* 206 206 * The sleep timeouted. 207 * We just restore the cpu priority.207 * We just restore interrupt priority level. 208 208 */ 209 209 case ESYNCH_OK_BLOCKED: … … 216 216 * rwl->lock is held.) 217 217 */ 218 cpu_priority_restore(pri);218 interrupts_restore(ipl); 219 219 break; 220 220 case ESYNCH_OK_ATOMIC: … … 237 237 238 238 spinlock_unlock(&rwl->lock); 239 cpu_priority_restore(pri);239 interrupts_restore(ipl); 240 240 241 241 return ESYNCH_OK_ATOMIC; … … 252 252 void rwlock_write_unlock(rwlock_t *rwl) 253 253 { 254 pri_t pri;255 256 pri = cpu_priority_high();254 ipl_t ipl; 255 256 ipl = interrupts_disable(); 257 257 spinlock_lock(&rwl->lock); 258 258 let_others_in(rwl, ALLOW_ALL); 259 259 spinlock_unlock(&rwl->lock); 260 cpu_priority_restore(pri);260 interrupts_restore(ipl); 261 261 262 262 } … … 273 273 void rwlock_read_unlock(rwlock_t *rwl) 274 274 { 275 pri_t pri;276 277 pri = cpu_priority_high();275 ipl_t ipl; 276 277 ipl = interrupts_disable(); 278 278 spinlock_lock(&rwl->lock); 279 279 if (!--rwl->readers_in) 280 280 let_others_in(rwl, ALLOW_ALL); 281 281 spinlock_unlock(&rwl->lock); 282 cpu_priority_restore(pri);282 interrupts_restore(ipl); 283 283 } 284 284 … … 290 290 * 291 291 * Must be called with rwl->lock locked. 292 * Must be called with cpu_priority_high'ed.292 * Must be called with interrupts_disable()'d. 293 293 * 294 294 * @param rwl Reader/Writer lock.
Note:
See TracChangeset
for help on using the changeset viewer.