/* SPDX-License-Identifier: GPL-2.0 */ #ifndef PERF_SHARDED_MUTEX_H #define PERF_SHARDED_MUTEX_H #include "mutex.h" #include "hashmap.h" /* * In a situation where a lock is needed per object, having a mutex can be * relatively memory expensive (40 bytes on x86-64). If the object can be * constantly hashed, a sharded mutex is an alternative global pool of mutexes * where the mutex is looked up from a hash value. This can lead to collisions * if the number of shards isn't large enough. */ struct sharded_mutex { /* mutexes array is 1<mutexes[hash_bits(hash, sm->cap_bits)]; } #endif /* PERF_SHARDED_MUTEX_H */