1 #include <time.h>
2 #include <errno.h>
3 #include <unistd.h>
4 #include <libsystem/syscall.h>
5 
6 /**
7  * @brief 休眠指定时间
8  *
9  * @param rqtp 指定休眠的时间
10  * @param rmtp 返回的剩余休眠时间
11  * @return int
12  */
nanosleep(const struct timespec * rqtp,struct timespec * rmtp)13 int nanosleep(const struct timespec *rqtp, struct timespec *rmtp)
14 {
15     return syscall_invoke(SYS_NANOSLEEP, (uint64_t)rqtp, (uint64_t)rmtp, 0, 0, 0, 0, 0, 0);
16 }
17 
18 /**
19  * @brief 睡眠指定时间
20  *
21  * @param usec 微秒
22  * @return int
23  */
usleep(useconds_t usec)24 int usleep(useconds_t usec)
25 {
26     struct timespec ts = {
27         tv_sec : (long int)(usec / 1000000),
28         tv_nsec : (long int)(usec % 1000000) * 1000UL
29     };
30 
31     return nanosleep(&ts, NULL);
32 }
33 
34 /**
35  * @brief 获取系统当前cpu时间
36  *
37  * @return clock_t
38  */
clock()39 clock_t clock()
40 {
41     return (clock_t)syscall_invoke(SYS_CLOCK, 0,0,0,0,0,0,0,0);
42 }