|
PatchworkOS
|
#include <kernel/cpu/syscalls.h>#include <kernel/log/log.h>#include <kernel/proc/process.h>#include <kernel/sched/sched.h>#include <kernel/sched/thread.h>#include <kernel/sched/timer.h>#include <kernel/sched/wait.h>#include <kernel/sync/futex.h>#include <kernel/sync/lock.h>#include <kernel/utils/map.h>#include <errno.h>#include <stdlib.h>Go to the source code of this file.
Functions | |
| void | futex_ctx_init (futex_ctx_t *ctx) |
| Initialize a per-process futex context. | |
| void | futex_ctx_deinit (futex_ctx_t *ctx) |
| Deinitialize a per-process futex context. *. | |
| static futex_t * | futex_ctx_get (futex_ctx_t *ctx, void *addr) |
| SYSCALL_DEFINE (SYS_FUTEX, uint64_t, atomic_uint64_t *addr, uint64_t val, futex_op_t op, clock_t timeout) | |
|
static |
Definition at line 38 of file futex.c.
References CONTAINER_OF, futex(), futex_ctx_t::futexes, futex_ctx_t::lock, LOCK_SCOPE, malloc(), map_entry_init(), map_get(), map_insert(), map_key_uint64(), NULL, and wait_queue_init().
Referenced by SYSCALL_DEFINE().
| SYSCALL_DEFINE | ( | SYS_FUTEX | , |
| uint64_t | , | ||
| atomic_uint64_t * | addr, | ||
| uint64_t | val, | ||
| futex_op_t | op, | ||
| clock_t | timeout | ||
| ) |
Definition at line 62 of file futex.c.
References CLOCKS_NEVER, EAGAIN, EINVAL, EOK, ERR, errno, futex(), futex_ctx_get(), FUTEX_WAIT, FUTEX_WAKE, process_t::futexCtx, thread_t::id, LOG_DEBUG, NULL, thread_t::process, sched_thread(), process_t::space, thread_load_atomic_from_user(), timer_uptime(), uptime(), wait_block_cancel(), wait_block_commit(), wait_block_setup(), and wait_unblock().