函数逻辑报告 |
Source Code:arch\x86\kernel\espfix_64.c |
Create Date:2022-07-27 08:42:12 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| 首页 | 函数Tree |
| 注解内核,赢得工具 | 下载SCCT | English |
函数名称:init_espfix_ap
函数原型:void init_espfix_ap(int cpu)
返回类型:void
参数:
| 类型 | 参数 | 名称 |
|---|---|---|
| int | cpu |
| 150 | stack_page等于READ_ONCE(espfix_pages[page]) |
| 151 | 如果此条件成立可能性大(为编译器优化)(stack_page)则转到:done |
| 157 | stack_page等于READ_ONCE(espfix_pages[page]) |
| 158 | 如果stack_page则转到:unlock_done |
| 161 | node等于cpu_to_node(cpu) |
| 164 | pud_p等于espfix_pud_page[pud_index(addr)] |
| 166 | 如果非pud_present(pud)则 |
| 167 | page等于Allocate pages, preferring the node given as nid. When nid == NUMA_NO_NODE,* prefer the current CPU's closest node. Otherwise node must be valid and* online. |
| 169 | pmd_p等于page_address(page) |
| 171 | paravirt_alloc_pmd( & init_mm, __pa(pmd_p) >> PAGE_SHIFT determines the page size ) |
| 176 | pmd_p等于pmd_offset( & pud, addr) |
| 178 | 如果非pmd_present(pmd)则 |
| 179 | page等于Allocate pages, preferring the node given as nid. When nid == NUMA_NO_NODE,* prefer the current CPU's closest node. Otherwise node must be valid and* online. |
| 181 | pte_p等于page_address(page) |
| 183 | paravirt_alloc_pte( & init_mm, __pa(pte_p) >> PAGE_SHIFT determines the page size ) |
| 188 | pte_p等于pte_offset_kernel( & pmd, addr) |
| 189 | stack_page等于page_address(Allocate pages, preferring the node given as nid. When nid == NUMA_NO_NODE,* prefer the current CPU's closest node. Otherwise node must be valid and* online.) |
| 194 | pte等于__pte(__pa(stack_page) | ((__PAGE_KERNEL_RO | _PAGE_ENC) & ptemask)) |
| 195 | 以n小于ESPFIX_PTE_CLONES循环set_pte( & pte_p[n * PTE_STRIDE], pte) |
| 199 | WRITE_ONCE(espfix_pages[page], stack_page) |
| 201 | unlock_done : |
| 203 | done : |
| 205 | per_cpu(espfix_waddr, cpu)等于stack_page加addr按位与PAGE_MASK的反的值 |
| 名称 | 描述 |
|---|---|
| init_espfix_bsp | |
| do_boot_cpu | NOTE - on most systems this is a PHYSICAL apic ID, but on multiquad* (ie clustered apic addressing mode), this is a LOGICAL apic ID.* Returns zero if CPU booted OK, else error code from* ->wakeup_secondary_cpu. |
| 源代码转换工具 开放的插件接口 | X |
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |