提交 bad8c3d5 编写于 作者: 星e雨's avatar 星e雨

IssueNo:#I3IK07

Description:LOS_SysCycleGet replace HalCpuCycleGet
Sig:kernel
Feature or Bugfix:Feature
Binary Source:No

Change-Id: Ife3a4d351818f718f58d3624b5ee6dd127113378
上级 c5f51766
......@@ -33,7 +33,8 @@
#include "securec.h"
#include "los_memory.h"
#include "los_debug.h"
#include "los_timer.h"
#include "los_tick.h"
#ifdef __cplusplus
#if __cplusplus
extern "C" {
......@@ -61,15 +62,6 @@ LITE_OS_SEC_BSS OsCpupCB *g_cpup = NULL;
LITE_OS_SEC_BSS UINT64 g_lastRecordTime;
LITE_OS_SEC_BSS UINT16 g_hisPos; /* <current Sampling point of historyTime */
LITE_OS_SEC_TEXT_MINOR STATIC INLINE UINT64 OsGetCurrentCyclesCount(VOID)
{
UINT32 high = 0;
UINT32 low = 0;
HalGetCpuCycle(&high, &low);
return (((UINT64)high << 32) + low); // 32 means bits of word
}
/*****************************************************************************
Function : OsCpupInit
Description: initialization of CPUP
......@@ -110,7 +102,7 @@ LITE_OS_SEC_TEXT_MINOR VOID OsTskCycleStart(VOID)
taskID = g_losTask.newTask->taskID;
g_cpup[taskID].cpupID = taskID;
g_cpup[taskID].startTime = OsGetCurrentCyclesCount();
g_cpup[taskID].startTime = LOS_SysCycleGet();
return;
}
......@@ -135,7 +127,7 @@ LITE_OS_SEC_TEXT_MINOR VOID OsTskCycleEnd(VOID)
return;
}
cpuCycle = OsGetCurrentCyclesCount();
cpuCycle = LOS_SysCycleGet();
if (cpuCycle < g_cpup[taskID].startTime) {
cpuCycle += g_cyclesPerTick;
......@@ -163,7 +155,7 @@ LITE_OS_SEC_TEXT_MINOR VOID OsTskCycleEndStart(VOID)
}
taskID = g_losTask.runTask->taskID;
cpuCycle = OsGetCurrentCyclesCount();
cpuCycle = LOS_SysCycleGet();
if (g_cpup[taskID].startTime != 0) {
if (cpuCycle < g_cpup[taskID].startTime) {
......
......@@ -38,7 +38,7 @@
#include <los_sem.h>
#include <los_mux.h>
#include "cmsis_os2.h"
#include <los_timer.h>
#include <los_tick.h>
#include <los_config.h>
#ifndef LOSCFG_KERNEL_SMP
......@@ -82,8 +82,7 @@ sys_thread_t sys_thread_new(const char *name, lwip_thread_fn thread, void *arg,
void sys_init(void)
{
/* set rand seed to make random sequence diff on every startup */
UINT32 seedhsb, seedlsb;
HalGetCpuCycle(&seedhsb, &seedlsb);
UINT32 seedlsb = (UINT32)LOS_SysCycleGet();
srand(seedlsb);
}
......
......@@ -264,12 +264,11 @@ uint32_t osKernelGetTickFreq(void)
uint32_t osKernelGetSysTimerCount(void)
{
uint32_t countHigh = 0;
uint32_t countLow = 0;
if (OS_INT_ACTIVE) {
countLow = 0U;
} else {
HalGetCpuCycle((UINT32 *)&countHigh, (UINT32 *)&countLow);
countLow = (UINT32)LOS_SysCycleGet();
}
return countLow;
}
......
......@@ -40,7 +40,7 @@
#include "los_debug.h"
#include "los_task.h"
#include "los_swtmr.h"
#include "los_timer.h"
#include "los_tick.h"
#include "los_context.h"
/* accumulative time delta from discontinuous modify */
......@@ -244,13 +244,10 @@ int timer_getoverrun(timer_t timerID)
STATIC VOID OsGetHwTime(struct timespec *hwTime)
{
UINT64 nowNsec;
UINT32 countHigh = 0;
UINT32 countLow = 0;
HalGetCpuCycle(&countHigh, &countLow);
nowNsec = (((UINT64)countHigh * OS_SYS_NS_PER_SECOND / OS_SYS_CLOCK) << 32) +
((((UINT64)countHigh * OS_SYS_NS_PER_SECOND % OS_SYS_CLOCK) << 32) / OS_SYS_CLOCK) +
((UINT64)countLow * OS_SYS_NS_PER_SECOND / OS_SYS_CLOCK);
UINT64 cycle = LOS_SysCycleGet();
UINT64 nowNsec = (cycle / OS_SYS_CLOCK) * OS_SYS_NS_PER_SECOND +
(cycle % OS_SYS_CLOCK) * OS_SYS_NS_PER_SECOND / OS_SYS_CLOCK;
hwTime->tv_sec = nowNsec / OS_SYS_NS_PER_SECOND;
hwTime->tv_nsec = nowNsec % OS_SYS_NS_PER_SECOND;
}
......
......@@ -109,19 +109,6 @@ WEAK VOID HalTickUnlock(VOID)
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
}
VOID HalGetCpuCycle(UINT32 *cntHi, UINT32 *cntLo)
{
UINT64 cycle;
if ((cntHi == NULL) || (cntLo == NULL)) {
return;
}
cycle = OsGetCurrSchedTimeCycle();
*cntHi = cycle >> SHIFT_32_BIT;
*cntLo = cycle & CYCLE_CHECK;
return;
}
VOID HalEnterSleep(LOS_SysSleepEnum sleep)
{
#if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1)
......
......@@ -108,19 +108,6 @@ WEAK VOID HalTickUnlock(VOID)
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
}
VOID HalGetCpuCycle(UINT32 *cntHi, UINT32 *cntLo)
{
UINT64 cycle;
if ((cntHi == NULL) || (cntLo == NULL)) {
return;
}
cycle = OsGetCurrSchedTimeCycle();
*cntHi = cycle >> SHIFT_32_BIT;
*cntLo = cycle & CYCLE_CHECK;
return;
}
VOID HalEnterSleep(LOS_SysSleepEnum sleep)
{
#if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1)
......
......@@ -108,19 +108,6 @@ WEAK VOID HalTickUnlock(VOID)
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
}
VOID HalGetCpuCycle(UINT32 *cntHi, UINT32 *cntLo)
{
UINT64 cycle;
if ((cntHi == NULL) || (cntLo == NULL)) {
return;
}
cycle = OsGetCurrSchedTimeCycle();
*cntHi = cycle >> SHIFT_32_BIT;
*cntLo = cycle & CYCLE_CHECK;
return;
}
VOID HalEnterSleep(LOS_SysSleepEnum sleep)
{
#if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1)
......
......@@ -108,19 +108,6 @@ WEAK VOID HalTickUnlock(VOID)
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
}
VOID HalGetCpuCycle(UINT32 *cntHi, UINT32 *cntLo)
{
UINT64 cycle;
if ((cntHi == NULL) || (cntLo == NULL)) {
return;
}
cycle = OsGetCurrSchedTimeCycle();
*cntHi = cycle >> SHIFT_32_BIT;
*cntLo = cycle & CYCLE_CHECK;
return;
}
VOID HalEnterSleep(LOS_SysSleepEnum sleep)
{
#if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1)
......
......@@ -108,19 +108,6 @@ WEAK VOID HalTickUnlock(VOID)
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
}
VOID HalGetCpuCycle(UINT32 *cntHi, UINT32 *cntLo)
{
UINT64 cycle;
if ((cntHi == NULL) || (cntLo == NULL)) {
return;
}
cycle = OsGetCurrSchedTimeCycle();
*cntHi = cycle >> SHIFT_32_BIT;
*cntLo = cycle & CYCLE_CHECK;
return;
}
VOID HalEnterSleep(LOS_SysSleepEnum sleep)
{
#if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1)
......
......@@ -108,19 +108,6 @@ WEAK VOID HalTickUnlock(VOID)
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
}
VOID HalGetCpuCycle(UINT32 *cntHi, UINT32 *cntLo)
{
UINT64 cycle;
if ((cntHi == NULL) || (cntLo == NULL)) {
return;
}
cycle = OsGetCurrSchedTimeCycle();
*cntHi = cycle >> SHIFT_32_BIT;
*cntLo = cycle & CYCLE_CHECK;
return;
}
VOID HalEnterSleep(LOS_SysSleepEnum sleep)
{
#if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1)
......
......@@ -113,29 +113,6 @@ UINT64 HalGetTickCycle(UINT32 *period);
*/
extern VOID HalSysTickReload(UINT64 nextResponseTime);
/* *
* @ingroup los_hwi
* @brief Get value from xPSR register.
*
* @par Description:
* <ul>
* <li>This API is used to Get value from xPSR register.</li>
* </ul>
* @attention
* <ul>
* <li>None.</li>
* </ul>
*
* @param cntHi [IN] CpuTick High 4 byte
* @param cntLo [IN] CpuTick Low 4 byte
*
* @retval None.
* @par Dependency:
* <ul><li>los_hwi.h: the header file that contains the API declaration.</li></ul>
* @see LOS_IntRestore
*/
extern VOID HalGetCpuCycle(UINT32 *cntHi, UINT32 *cntLo);
#ifdef __cplusplus
#if __cplusplus
}
......
......@@ -44,7 +44,6 @@ extern "C" {
#endif /* __cplusplus */
#endif /* __cplusplus */
WEAK UINT32 HalTickStart(OS_TICK_HANDLER handler)
{
g_sysClock = OS_SYS_CLOCK;
......@@ -82,20 +81,6 @@ WEAK UINT64 HalGetTickCycle(UINT32 *period)
return OS_COMBINED_64(timerH, timerL);
}
WEAK VOID HalGetCpuCycle(UINT32 *cntHi, UINT32 *cntLo)
{
UINT64 cycle;
if ((cntHi == NULL) || (cntLo == NULL)) {
return;
}
cycle = OsGetCurrSchedTimeCycle();
*cntHi = cycle >> SHIFT_32_BIT;
*cntLo = cycle & CYCLE_CHECK;
return;
}
VOID HalEnterSleep(LOS_SysSleepEnum sleep)
{
#if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1)
......
......@@ -79,24 +79,24 @@ extern "C" {
/**
* @ingroup los_tick
* @brief: System clock get function.
* @brief: System timer cycles get function.
*
* @par Description:
* This API is used to get system clock.
* This API is used to get system timer cycles.
*
* @attention:
* <ul><li>None.</li></ul>
*
* @param: None.
*
* @retval: system clock.
* @retval: current system cycles.
*
* @par Dependency:
* <ul><li>los_tick.h: the header file that contains the API declaration.</li></ul>
* @see None.
*
* */
extern UINT32 LOS_SysClockGet(VOID);
extern UINT64 LOS_SysCycleGet(VOID);
/**
* @ingroup los_sys
......
......@@ -63,12 +63,11 @@ LITE_OS_SEC_TEXT VOID OsTickHandler(VOID)
LOS_SchedTickHandler();
}
UINT32 LOS_SysClockGet(VOID)
UINT64 LOS_SysCycleGet(VOID)
{
return g_sysClock;
return OsGetCurrSchedTimeCycle();
}
/*****************************************************************************
Function : LOS_TickCountGet
Description : get current tick
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册