函数逻辑报告 |
Source Code:arch\x86\kernel\smpboot.c |
Create Date:2022-07-27 09:24:24 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
首页 | 函数Tree |
注解内核,赢得工具 | 下载SCCT | English |
函数名称:wakeup_secondary_cpu_via_init
函数原型:static int wakeup_secondary_cpu_via_init(int phys_apicid, unsigned long start_eip)
返回类型:int
参数:
类型 | 参数 | 名称 |
---|---|---|
int | phys_apicid | |
unsigned long | start_eip |
782 | send_status等于0, accept_status等于0 |
790 | 如果APIC_INTEGRATED(boot_cpu_apic_version)则 |
791 | 如果maxlvt大于3则apic_write(APIC_ESR, 0) |
796 | pr_debug("Asserting INIT\n") |
807 | pr_debug("Waiting for send to finish...\n") |
812 | pr_debug("Deasserting INIT\n") |
818 | pr_debug("Waiting for send to finish...\n") |
829 | 如果APIC_INTEGRATED(boot_cpu_apic_version)则num_starts等于2 |
831 | 否则num_starts等于0 |
837 | pr_debug("#startup loops: %d\n", num_starts) |
839 | 以j小于等于num_starts循环 |
841 | 如果maxlvt大于3则apic_write(APIC_ESR, 0) |
844 | pr_debug("After apic_write\n") |
853 | apic_icr_write(APIC_DM_STARTUP | (start_eip >> 12), phys_apicid) |
859 | 如果init_udelay恒等于0则0x10c7 is 2**32 / 1000000 (rounded up) (10) |
861 | 否则0x10c7 is 2**32 / 1000000 (rounded up) (300) |
864 | pr_debug("Startup point 1\n") |
866 | pr_debug("Waiting for send to finish...\n") |
872 | 如果init_udelay恒等于0则0x10c7 is 2**32 / 1000000 (rounded up) (10) |
874 | 否则0x10c7 is 2**32 / 1000000 (rounded up) (200) |
877 | 如果maxlvt大于3则apic_write(APIC_ESR, 0) |
879 | accept_status等于apic_read(APIC_ESR)按位与0xEF |
880 | 如果send_status或accept_status则退出 |
883 | pr_debug("After Startup\n") |
885 | 如果send_status则打印错误信息("APIC never delivered???\n") |
887 | 如果accept_status则打印错误信息("APIC delivery error (%lx)\n", accept_status) |
890 | 返回:send_status按位或accept_status |
名称 | 描述 |
---|---|
wakeup_cpu_via_init_nmi | Wake up AP by INIT, INIT, STARTUP sequence.* Instead of waiting for STARTUP after INITs, BSP will execute the BIOS* boot-strap code which is not a desired behavior for waking up BSP. To* void the boot-strap code, wake up CPU0 by NMI instead. |
源代码转换工具 开放的插件接口 | X |
---|---|
支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |