From e7fb6df203f83fd5dd22a6306613005211408d44 Mon Sep 17 00:00:00 2001 From: fslongjin Date: Mon, 18 Jul 2022 21:19:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=85=E6=A0=B8=E6=80=81usleep?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/common/time.h | 8 ++++++++ kernel/time/sleep.c | 18 +++++++++++++++++- kernel/time/sleep.h | 7 +++++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/kernel/common/time.h b/kernel/common/time.h index d6fdaeb8..a7b0ae89 100644 --- a/kernel/common/time.h +++ b/kernel/common/time.h @@ -37,6 +37,14 @@ struct timespec */ extern int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); +/** + * @brief 睡眠指定时间 + * + * @param usec 微秒 + * @return int + */ +extern int usleep(useconds_t usec); + /** * @brief 获取当前的CPU时间 * diff --git a/kernel/time/sleep.c b/kernel/time/sleep.c index 90df0353..6646c205 100644 --- a/kernel/time/sleep.c +++ b/kernel/time/sleep.c @@ -59,4 +59,20 @@ int nanosleep(const struct timespec *rqtp, struct timespec *rmtp) } return 0; -} \ No newline at end of file +} + +/** + * @brief 睡眠指定时间 + * + * @param usec 微秒 + * @return int + */ +int usleep(useconds_t usec) +{ + struct timespec ts = { + tv_sec : (long int)(usec / 1000000), + tv_nsec : (long int)(usec % 1000000) * 1000UL + }; + + return nanosleep(&ts, NULL); +} diff --git a/kernel/time/sleep.h b/kernel/time/sleep.h index a256222c..986e9628 100644 --- a/kernel/time/sleep.h +++ b/kernel/time/sleep.h @@ -14,3 +14,10 @@ */ int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); +/** + * @brief 睡眠指定时间 + * + * @param usec 微秒 + * @return int + */ +int usleep(useconds_t usec); \ No newline at end of file