this repo has no description
at fixPythonPipStalling 53 lines 989 B view raw
1#ifndef _XTRACE_LOCK_H_ 2#define _XTRACE_LOCK_H_ 3 4#include <darling/emulation/linux_premigration/ext/futex.h> 5#include <stdint.h> 6 7#include "base.h" 8 9// we also have to implement our own locks, because we can't rely on libplatform's or libpthread's locks 10// so we implement our own on top of Linux futexes 11 12XTRACE_DECLARATIONS_C_BEGIN 13 14// 15// lock 16// 17 18typedef struct xtrace_lock { 19 uint32_t state; 20} xtrace_lock_t; 21 22#define XTRACE_LOCK_INITIALIZER {0} 23 24XTRACE_INLINE 25void xtrace_lock_init(xtrace_lock_t* lock) { 26 lock->state = 0; 27}; 28 29void xtrace_lock_lock(xtrace_lock_t* lock); 30void xtrace_lock_unlock(xtrace_lock_t* lock); 31 32// 33// once 34// 35 36typedef struct xtrace_once { 37 uint32_t state; 38} xtrace_once_t; 39 40typedef void (*xtrace_once_callback)(void); 41 42#define XTRACE_ONCE_INITIALIZER {0} 43 44XTRACE_INLINE 45void xtrace_once_init(xtrace_once_t* once) { 46 once->state = 0; 47}; 48 49void xtrace_once(xtrace_once_t* once, xtrace_once_callback callback); 50 51XTRACE_DECLARATIONS_C_END 52 53#endif // _XTRACE_LOCK_H_