27 lines
572 B
C
27 lines
572 B
C
#ifndef KERNEL_FUTEX_H_
|
|
#define KERNEL_FUTEX_H_
|
|
|
|
#include <kernel/btree.h>
|
|
#include <kernel/wait.h>
|
|
#include <mango/types.h>
|
|
|
|
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
|