提交 57f6e1f1 编写于 作者: Z zhushengle

IssueNo:I3IK07

Description:liteos_m scheduling optimization and low power design.
Sig:kernel
Feature or Bugfix:Feature
Binary Source:No

Change-Id: I6ccbe267ec20f93f97032c5b006c3214eb099daa
上级 628cdcbe
...@@ -56,7 +56,7 @@ STATIC const UINT16 g_daysInMonth[2][13] = { ...@@ -56,7 +56,7 @@ STATIC const UINT16 g_daysInMonth[2][13] = {
STATIC const UINT8 g_montbl[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; STATIC const UINT8 g_montbl[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
static UINT64 g_rtcTimeBase = 0; static UINT64 g_rtcTimeBase = 0;
static UINT64 g_systickBase = 0; static UINT64 g_systickBase = (UINT64)-1;
/* /*
* Time zone information, stored in minutes, * Time zone information, stored in minutes,
...@@ -405,7 +405,7 @@ int clock_nanosleep(clockid_t clk, int flags, const struct timespec *req, struct ...@@ -405,7 +405,7 @@ int clock_nanosleep(clockid_t clk, int flags, const struct timespec *req, struct
clock_t clock(void) clock_t clock(void)
{ {
return HalGetExpandTick(); return LOS_TickCountGet() * OS_MS_PER_TICK;
} }
time_t time(time_t *timer) time_t time(time_t *timer)
...@@ -418,11 +418,11 @@ time_t time(time_t *timer) ...@@ -418,11 +418,11 @@ time_t time(time_t *timer)
if (rtcRet != 0) { if (rtcRet != 0) {
UINT64 currentTime; UINT64 currentTime;
UINT64 tickDelta; UINT64 tickDelta;
UINT64 currentTick = HalGetExpandTick(); UINT64 currentTick = LOS_TickCountGet();
if ((g_systickBase != 0) && (currentTick > g_systickBase)) { if (currentTick > g_systickBase) {
tickDelta = currentTick - g_systickBase; tickDelta = currentTick - g_systickBase;
} }
currentTime = g_rtcTimeBase + tickDelta; currentTime = g_rtcTimeBase + tickDelta * OS_MS_PER_TICK;
sec = currentTime / OS_SYS_MS_PER_SECOND; sec = currentTime / OS_SYS_MS_PER_SECOND;
} else { } else {
sec = usec / OS_SYS_US_PER_SECOND; sec = usec / OS_SYS_US_PER_SECOND;
...@@ -607,11 +607,11 @@ int gettimeofday(struct timeval *tv, void *ptz) ...@@ -607,11 +607,11 @@ int gettimeofday(struct timeval *tv, void *ptz)
if (tv != NULL) { if (tv != NULL) {
rtcRet = HalGetRtcTime(&usec); rtcRet = HalGetRtcTime(&usec);
if (rtcRet != 0) { if (rtcRet != 0) {
currentTick = HalGetExpandTick(); currentTick = LOS_TickCountGet();
if ((g_systickBase != 0) && (currentTick > g_systickBase)) { if (currentTick > g_systickBase) {
tickDelta = currentTick - g_systickBase; tickDelta = currentTick - g_systickBase;
} }
currentTime = g_rtcTimeBase + tickDelta; currentTime = g_rtcTimeBase + tickDelta * OS_MS_PER_TICK;
tv->tv_sec = currentTime / OS_SYS_MS_PER_SECOND; tv->tv_sec = currentTime / OS_SYS_MS_PER_SECOND;
tv->tv_usec = (currentTime % OS_SYS_MS_PER_SECOND) * OS_SYS_MS_PER_SECOND; tv->tv_usec = (currentTime % OS_SYS_MS_PER_SECOND) * OS_SYS_MS_PER_SECOND;
} else { } else {
...@@ -633,7 +633,7 @@ int settimeofday(const struct timeval *tv, const struct timezone *tz) ...@@ -633,7 +633,7 @@ int settimeofday(const struct timeval *tv, const struct timezone *tz)
return -1; return -1;
} }
g_rtcTimeBase = tv->tv_sec * OS_SYS_MS_PER_SECOND + tv->tv_usec / OS_SYS_MS_PER_SECOND; g_rtcTimeBase = tv->tv_sec * OS_SYS_MS_PER_SECOND + tv->tv_usec / OS_SYS_MS_PER_SECOND;
g_systickBase = HalGetExpandTick(); g_systickBase = LOS_TickCountGet();
if ((tz->tz_minuteswest > TIME_ZONE_MIN) && if ((tz->tz_minuteswest > TIME_ZONE_MIN) &&
(tz->tz_minuteswest < TIME_ZONE_MAX)) { (tz->tz_minuteswest < TIME_ZONE_MAX)) {
g_rtcTimeZone = tz->tz_minuteswest; g_rtcTimeZone = tz->tz_minuteswest;
...@@ -652,4 +652,4 @@ int usleep(unsigned useconds) ...@@ -652,4 +652,4 @@ int usleep(unsigned useconds)
specTime.tv_sec = (time_t)(nanoseconds / OS_SYS_NS_PER_SECOND); specTime.tv_sec = (time_t)(nanoseconds / OS_SYS_NS_PER_SECOND);
specTime.tv_nsec = (long)(nanoseconds % OS_SYS_NS_PER_SECOND); specTime.tv_nsec = (long)(nanoseconds % OS_SYS_NS_PER_SECOND);
return nanosleep(&specTime, NULL); return nanosleep(&specTime, NULL);
} }
\ No newline at end of file
...@@ -98,8 +98,6 @@ extern "C" { ...@@ -98,8 +98,6 @@ extern "C" {
* */ * */
extern UINT32 LOS_SysClockGet(VOID); extern UINT32 LOS_SysClockGet(VOID);
/** /**
* @ingroup los_sys * @ingroup los_sys
* Number of milliseconds in one second. * Number of milliseconds in one second.
...@@ -120,6 +118,8 @@ extern UINT32 LOS_SysClockGet(VOID); ...@@ -120,6 +118,8 @@ extern UINT32 LOS_SysClockGet(VOID);
#define OS_NS_PER_CYCLE (OS_SYS_NS_PER_SECOND / OS_SYS_CLOCK) #define OS_NS_PER_CYCLE (OS_SYS_NS_PER_SECOND / OS_SYS_CLOCK)
#define OS_MS_PER_TICK (OS_SYS_MS_PER_SECOND / LOSCFG_BASE_CORE_TICK_PER_SECOND)
#define OS_US_PER_TICK (OS_SYS_US_PER_SECOND / LOSCFG_BASE_CORE_TICK_PER_SECOND) #define OS_US_PER_TICK (OS_SYS_US_PER_SECOND / LOSCFG_BASE_CORE_TICK_PER_SECOND)
#define OS_NS_PER_TICK (OS_SYS_NS_PER_SECOND / LOSCFG_BASE_CORE_TICK_PER_SECOND) #define OS_NS_PER_TICK (OS_SYS_NS_PER_SECOND / LOSCFG_BASE_CORE_TICK_PER_SECOND)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册