It is recommended that each startup framework encapsulate a layer of its own calling interface. 建议每个启动框架都封装一层自己的调用接口
71 PRINTK(
"-------- %s Module Init... level = %u --------\n",
name, level);
89 if (module->
hook != NULL) {
95 singleTime = endNsec - startNsec;
96 totalTime += singleTime;
97 PRINTK(
"Starting %s module consumes %llu ns. Run on cpu %u\n", module->
name, singleTime,
ArchCurrCpuid());
104 PRINT_ERR(
"%s initialization failed at module %s, function addr at 0x%x, ret code is %u\n",
110 if (level >= LOS_INIT_LEVEL_KMOD_TASK) {
117 PRINTK(
"%s initialization at level %u consumes %lluns on cpu %u.\n",
name, level, totalTime,
ArchCurrCpuid());
STATIC INLINE VOID LOS_AtomicInc(Atomic *v)
Atomic addSelf.
STATIC INLINE INT32 LOS_AtomicRead(const Atomic *v)
Atomic read. | 读取32bit原子数据
LITE_OS_SEC_TEXT_MINOR UINT64 LOS_CurrNanosec(VOID)
获取自系统启动以来的纳秒数
STATIC INLINE UINT32 ArchCurrCpuid(VOID)
STATIC volatile UINT32 g_initCurrentLevel
STATIC volatile struct ModuleInitInfo * g_initCurrentModule
STATIC Atomic g_initCount
VOID LOS_SpinLock(SPIN_LOCK_S *lock)
VOID LOS_SpinUnlock(SPIN_LOCK_S *lock)