#include #include #include #include kern_status_t sys_futex_wait( kern_futex_t *futex, kern_futex_t new_val, unsigned int flags) { struct task *self = current_task(); if (!validate_access_r(self, futex, sizeof *futex)) { return KERN_MEMORY_FAULT; } futex_key_t key; kern_status_t status = futex_get(futex, &key, flags); if (status != KERN_OK) { return status; } return futex_wait(key, new_val, flags); } kern_status_t sys_futex_wake( kern_futex_t *futex, unsigned int nr_waiters, unsigned int flags) { futex_key_t key; kern_status_t status = futex_get(futex, &key, flags); if (status != KERN_OK) { return status; } return futex_wake(key, nr_waiters, flags); }