[an error occurred while processing this directive]
void lock (volatile lock_t *l) { |
while (test_and_set(l)) ; |
} |
void unlock (volatile lock_t *l) { |
*l = 0; |
} |
bool cond_lock (volatile lock_t *l) { |
if (test_and_set(l)) |
return FALSE; //couldn't lock |
else |
return TRUE; //acquired lock |
} |
void mutex_lock (volatile lock_t *l) { |
while (1) { |
for (int i=0; i<MUTEX_N; i++) |
if (!test_and_set(l)) |
return; |
yield(); |
} |
} |
void mp_spinlock (volatile lock_t *l) { |
cli(); // prevent local contention |
while (test_and_set(l)) ; // lock |
} |
void mp_unlock (volatile lock_t *l) { |
*l = 0; |
sti(); |
} |
void rw_rdlock (volatile lock_ *l); |
void rw_wrlock (volatile lock_ *l); |