#include "Pledge.h"
#include "sys/Syscall.h"
#include "thread/Scheduler.h"
#include <sys/types.h>

Result<u64> sys_usleep(Registers*, SyscallArgs args)
{
    useconds_t us = (useconds_t)args[0];

    auto* current = Scheduler::current();
    TRY(check_pledge(current, Promise::p_stdio));

    // FIXME: Allow usleep() to use a more precise resolution.
    if (us < 1000) return 0;

    kernel_sleep(us / 1000);

    return current->sleep_ticks_left;
}