kernel: finish implementation of private and shared futexes

This commit is contained in:
2026-03-18 20:57:51 +00:00
parent b774415f64
commit 2a1a0cf14d
10 changed files with 254 additions and 29 deletions

View File

@@ -5,22 +5,30 @@
#include <kernel/wait.h>
#include <mango/types.h>
struct task;
struct address_space;
typedef phys_addr_t futex_key_t;
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(
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);
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