Merge pull request #4800 from mysterywolf/sleep
[sleep] 加入调度器尚未运行时的延时情况
This commit is contained in:
commit
c3afd9cc23
|
@ -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)
|
||||||
|
{
|
||||||
|
rt_thread_delay(seconds * RT_TICK_PER_SECOND);
|
||||||
|
}
|
||||||
|
else /* scheduler has not run yet */
|
||||||
|
{
|
||||||
|
while(seconds > 0)
|
||||||
|
{
|
||||||
|
rt_hw_us_delay(1000000u);
|
||||||
|
seconds --;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
delta_tick = rt_tick_get();
|
return 0;
|
||||||
rt_thread_delay(seconds * RT_TICK_PER_SECOND);
|
|
||||||
delta_tick = rt_tick_get() - delta_tick;
|
|
||||||
|
|
||||||
return seconds - delta_tick/RT_TICK_PER_SECOND;
|
|
||||||
}
|
}
|
||||||
RTM_EXPORT(sleep);
|
RTM_EXPORT(sleep);
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue