File tree Expand file tree Collapse file tree 2 files changed +15
-29
lines changed
components/libc/compilers/common Expand file tree Collapse file tree 2 files changed +15
-29
lines changed Original file line number Diff line number Diff line change @@ -79,6 +79,10 @@ char* ctime(const time_t* tim_p);
7979time_t time (time_t * t );
8080#endif
8181
82+ #ifdef RT_USING_POSIX_DELAY
83+ int nanosleep (const struct timespec * rqtp , struct timespec * rmtp );
84+ #endif /* RT_USING_POSIX_DELAY */
85+
8286#ifdef RT_USING_POSIX_CLOCK
8387/* POSIX clock and timer */
8488#define MILLISECOND_PER_SECOND 1000UL
@@ -110,7 +114,6 @@ int clock_getres (clockid_t clockid, struct timespec *res);
110114int clock_gettime (clockid_t clockid , struct timespec * tp );
111115int clock_settime (clockid_t clockid , const struct timespec * tp );
112116int clock_nanosleep (clockid_t clockid , int flags , const struct timespec * rqtp , struct timespec * rmtp );
113- int nanosleep (const struct timespec * rqtp , struct timespec * rmtp );
114117int rt_timespec_to_tick (const struct timespec * time );
115118#endif /* RT_USING_POSIX_CLOCK */
116119
Original file line number Diff line number Diff line change @@ -488,8 +488,18 @@ RTM_EXPORT(settimeofday);
488488RTM_EXPORT (difftime );
489489RTM_EXPORT (strftime );
490490
491- #ifdef RT_USING_POSIX_CLOCK
491+ #ifdef RT_USING_POSIX_DELAY
492492#include <delay.h>
493+ int nanosleep (const struct timespec * rqtp , struct timespec * rmtp )
494+ {
495+ sleep (rqtp -> tv_sec );
496+ ndelay (rqtp -> tv_nsec );
497+ return 0 ;
498+ }
499+ RTM_EXPORT (nanosleep );
500+ #endif /* RT_USING_POSIX_DELAY */
501+
502+ #ifdef RT_USING_POSIX_CLOCK
493503#ifdef RT_USING_RTC
494504static volatile struct timeval _timevalue ;
495505static int _rt_clock_time_system_init ()
@@ -670,33 +680,6 @@ int clock_settime(clockid_t clockid, const struct timespec *tp)
670680}
671681RTM_EXPORT (clock_settime );
672682
673- int nanosleep (const struct timespec * rqtp , struct timespec * rmtp )
674- {
675- uint32_t time_ms = rqtp -> tv_sec * 1000 ;
676- uint32_t time_us = rqtp -> tv_nsec / 1000 ;
677-
678- time_ms += time_us / 1000 ;
679- time_us = time_us % 1000 ;
680-
681- if (rt_thread_self () != RT_NULL )
682- {
683- rt_thread_mdelay (time_ms );
684- }
685- else /* scheduler has not run yet */
686- {
687- while (time_ms > 0 )
688- {
689- udelay (1000u );
690- time_ms -= 1 ;
691- }
692- }
693-
694- udelay (time_us );
695-
696- return 0 ;
697- }
698- RTM_EXPORT (nanosleep );
699-
700683int rt_timespec_to_tick (const struct timespec * time )
701684{
702685 int tick ;
You can’t perform that action at this time.
0 commit comments