void odp_ticketlock_unlock(odp_ticketlock_t *ticketlock) { /* Release the lock by incrementing 'cur_ticket'. As we are the * lock owner and thus the only thread that is allowed to write * 'cur_ticket', we don't need to do this with an (expensive) * atomic RMW operation. Instead load-relaxed the current value * and a store-release of the incremented value */ uint32_t cur = odp_atomic_load_u32(&ticketlock->cur_ticket); odp_atomic_store_rel_u32(&ticketlock->cur_ticket, cur + 1); #if defined __OCTEON__ odp_sync_stores(); /* SYNCW to flush write buffer */ #endif }
void odp_rwlock_write_unlock(odp_rwlock_t *rwlock) { odp_atomic_store_rel_u32(&rwlock->cnt, 0); }