diff options
author | Yuxuan Shui <yshuiv7@gmail.com> | 2020-05-03 19:21:17 +0100 |
---|---|---|
committer | Yuxuan Shui <yshuiv7@gmail.com> | 2020-05-05 10:29:31 +0100 |
commit | 5bc48bd428303aabe19c196a47d1d89a605397be (patch) | |
tree | 10d75608bf415e37810e7846c80193218e35b4e5 /linux/preempt.c | |
parent | 6e9f4602408e9bcdb33bce6ab3a2d8562613d6ce (diff) |
Fix building on musl
* Add missing linux/stddef.h includes
* Explicitly cast PAGE_SIZE to size_t. PAGE_SIZE is defined without UL
suffix in musl
* Musl doesn't define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP, so
initialize the mutexes with pthread_once.
Diffstat (limited to 'linux/preempt.c')
-rw-r--r-- | linux/preempt.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/linux/preempt.c b/linux/preempt.c index aa092c1d..72eceed3 100644 --- a/linux/preempt.c +++ b/linux/preempt.c @@ -15,7 +15,16 @@ * correct to instead guarantee mutual exclusion for the critical sections. */ -static pthread_mutex_t preempt_lock = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; +static pthread_mutex_t preempt_lock; + +__attribute__((constructor)) +static void preempt_init(void) { + pthread_mutexattr_t attr; + pthread_mutexattr_init(&attr); + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); + pthread_mutex_init(&preempt_lock, &attr); + pthread_mutexattr_destroy(&attr); +} void preempt_disable(void) { |