#ifndef KERNEL_FUTEX_H_ #define KERNEL_FUTEX_H_ #include #include #include struct address_space; typedef phys_addr_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( struct address_space *space, kern_futex_t *futex, futex_key_t *out); extern kern_status_t futex_wait(futex_key_t futex, kern_futex_t new_val); extern kern_status_t futex_wake(futex_key_t futex, size_t nwaiters); #endif