Files
mango/include/kernel/futex.h

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