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