函数逻辑报告 |
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 插件可实现:逻辑报告 代码生成和批量转换代码 |