mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-06-30 16:28:30 +00:00
Test recursive mutex code more
This commit is contained in:
parent
d50d954a3c
commit
95fee8614d
4 changed files with 95 additions and 11 deletions
|
@ -2,17 +2,33 @@
|
|||
#define COSMOPOLITAN_LIBC_THREAD_LOCK_H_
|
||||
COSMOPOLITAN_C_START_
|
||||
|
||||
#define MUTEX_DEPTH_MIN 0x00000010ull
|
||||
#define MUTEX_DEPTH_MAX 0x000003f0ull
|
||||
//
|
||||
// ┌depth
|
||||
// │
|
||||
// COSMOPOLITAN MUTEXES │ ┌waited
|
||||
// │ │
|
||||
// │ │┌locked
|
||||
// │ ││
|
||||
// │ ││┌pshared
|
||||
// owner │ │││
|
||||
// tid │ │││┌type
|
||||
// │ │ ││││
|
||||
// ┌──────────────┴───────────────┐ ┌─┴──┐│││├┐
|
||||
// 0b0000000000000000000000000000000000000000000000000000000000000000
|
||||
|
||||
#define MUTEX_DEPTH_MIN 0x00000020ull
|
||||
#define MUTEX_DEPTH_MAX 0x000007e0ull
|
||||
|
||||
#define MUTEX_TYPE(word) ((word) & 3)
|
||||
#define MUTEX_PSHARED(word) ((word) & 4)
|
||||
#define MUTEX_LOCKED(word) ((word) & 8)
|
||||
#define MUTEX_WAITED(word) ((word) & 16)
|
||||
#define MUTEX_DEPTH(word) ((word) & MUTEX_DEPTH_MAX)
|
||||
#define MUTEX_OWNER(word) ((word) >> 32)
|
||||
|
||||
#define MUTEX_LOCK(word) (((word) & 7) | 8)
|
||||
#define MUTEX_UNLOCK(word) ((word) & 7)
|
||||
#define MUTEX_SET_WAITED(word) ((word) | 16)
|
||||
#define MUTEX_SET_TYPE(word, type) (((word) & ~3ull) | (type))
|
||||
#define MUTEX_SET_PSHARED(word, pshared) (((word) & ~4ull) | (pshared))
|
||||
#define MUTEX_INC_DEPTH(word) ((word) + MUTEX_DEPTH_MIN)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue