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 }