提交 6697fa0f 编写于 作者: mysterywolf's avatar mysterywolf

[sleep] 加入调度器尚未运行时的延时情况

上级 ac50f519
...@@ -37,19 +37,26 @@ RTM_EXPORT(isatty); ...@@ -37,19 +37,26 @@ RTM_EXPORT(isatty);
char *ttyname(int fd) char *ttyname(int fd)
{ {
return "/dev/tty"; /*TODO: need to add more specific*/ return "/dev/tty"; /* TODO: need to add more specific */
} }
RTM_EXPORT(ttyname); RTM_EXPORT(ttyname);
unsigned int sleep(unsigned int seconds) unsigned int sleep(unsigned int seconds)
{ {
rt_tick_t delta_tick; if (rt_thread_self() != RT_NULL)
{
delta_tick = rt_tick_get();
rt_thread_delay(seconds * RT_TICK_PER_SECOND); rt_thread_delay(seconds * RT_TICK_PER_SECOND);
delta_tick = rt_tick_get() - delta_tick; }
else /* scheduler has not run yet */
{
while(seconds > 0)
{
rt_hw_us_delay(1000000u);
seconds --;
}
}
return seconds - delta_tick/RT_TICK_PER_SECOND; return 0;
} }
RTM_EXPORT(sleep); RTM_EXPORT(sleep);
...@@ -59,11 +66,12 @@ int usleep(useconds_t usec) ...@@ -59,11 +66,12 @@ int usleep(useconds_t usec)
{ {
rt_thread_mdelay(usec / 1000u); rt_thread_mdelay(usec / 1000u);
} }
else else /* scheduler has not run yet */
{ {
rt_hw_us_delay(usec / 1000u); rt_hw_us_delay(usec / 1000u);
} }
rt_hw_us_delay(usec % 1000u); rt_hw_us_delay(usec % 1000u);
return 0; return 0;
} }
RTM_EXPORT(usleep); RTM_EXPORT(usleep);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册