41#ifdef LOSCFG_KERNEL_SMP
65 LOS_ASSERT(ops != NULL);
68 ret = ops->
SmpCpuOn(cpuNum, startEntry);
70 PRINT_ERR(
"cpu start failed, cpu num: %u, ret: %d\n", cpuNum, ret);
89#ifdef LOSCFG_KERNEL_MMU
GIC(Generic Interrupt Controller)是ARM公司提供的一个通用的中断控制器 http://weharmonyos.com/blog/44....
VOID HalIrqInitPercpu(VOID)
中断控制器与CPU之间的关系初始化
STATIC INLINE INT32 LOS_AtomicRead(const Atomic *v)
Atomic read. | 读取32bit原子数据
STATIC INLINE VOID LOS_AtomicSet(Atomic *v, INT32 setVal)
Atomic setting.
https://blog.csdn.net/qq_38410730/article/details/81036768
VOID OsArchMmuInitPerCPU(VOID)
原子操作 http://weharmonyos.com/openharmony/zh-cn/device-dev/kernel/kernel-small-basic-atomic....
VOID DCacheFlushRange(UINT32 start, UINT32 end)
STATIC INLINE UINT32 ArchCurrCpuid(VOID)
STATIC INLINE UINT64 OsHwIDGet(VOID)
获取CPU硬件ID,每个CPU都有自己的唯一标识
STATIC INLINE VOID OsCurrTaskSet(LosTaskCB *task)
注意任务地址由硬件保存,见于 CP15 | TPIDRPRW
LosTaskCB * OsGetMainTask()
VOID HalSecondaryCpuStart(VOID)
VOID HalArchCpuOn(UINT32 cpuNum, ArchCpuStartFunc func, struct SmpOps *ops, VOID *arg)
STATIC struct OsCpuInit g_cpuInit[CORE_NUM - 1]
VOID(* ArchCpuStartFunc)(VOID *arg)
ArchCpuStartFunc cpuStart
INT32(* SmpCpuOn)(UINT32 cpuNum, UINTPTR startEntry)