volatile int * mutex_get_contended_event(mutex_t *lock) { if (!ksynch_var_initialized(&lock->contended_event)) { /* We just don't want to clobber an in-use event */ atomic_compare_exchange_int((int*)&lock->contended_event, -1, (int)0); } return &lock->contended_event; }
/* returns true if var was equal to compare */ static inline bool atomic_compare_exchange(volatile int *var, int compare, int exchange) { return (atomic_compare_exchange_int(var, compare, exchange) == (compare)); }