#ifndef KERNEL_FUTEX_H_ #define KERNEL_FUTEX_H_ #include #include #include struct task; struct address_space; typedef uintptr_t futex_key_t; struct futex { struct btree_node f_node; futex_key_t f_key; struct waitqueue f_waiters; }; extern kern_status_t futex_init(void); extern kern_status_t futex_get( kern_futex_t *futex, futex_key_t *out, unsigned int flags); extern kern_status_t futex_wait( futex_key_t futex, kern_futex_t new_val, unsigned int flags); extern kern_status_t futex_wake( futex_key_t futex, size_t nwaiters, unsigned int flags); #endif