summaryrefslogtreecommitdiff
path: root/src/boot/libc64/sleep.c
blob: ff1be8a089ecda8317ba5e30b46a55772238f2d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "libc64/sleep.h"
#include "macros.h"

void csleep(OSTime t) {
    OSMesgQueue mq;
    OSMesg msg[1];
    OSTimer timer;

    osCreateMesgQueue(&mq, msg, ARRAY_COUNT(msg));
    osSetTimer(&timer, t, 0, &mq, NULL);
    osRecvMesg(&mq, NULL, OS_MESG_BLOCK);
}

void nsleep(u32 t) {
    csleep(OS_NSEC_TO_CYCLES(t));
}

void usleep(u32 t) {
    csleep(OS_USEC_TO_CYCLES(t));
}

void msleep(u32 t) {
    csleep((t * OS_CPU_COUNTER) / 1000ULL);
}

void sleep(u32 t) {
    csleep(t * OS_CPU_COUNTER);
}