函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:arch\x86\kernel\e820.c Create Date:2022-07-27 08:43:02
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:Remove a range of memory from the E820 table:

函数原型:u64 __init e820__range_remove(u64 start, u64 size, enum e820_type old_type, bool check_type)

返回类型:u64

参数:

类型参数名称
u64start
u64size
enum e820_typeold_type
boolcheck_type
531  real_removed_size等于0
533  如果size大于ULLONG_MAXstartsize等于ULLONG_MAXstart
536  end等于startsize
537  printk(debug-level messages "e820: remove [mem %#010Lx-%#010Lx] ", start, end - 1)
538  如果check_typee820_print_type(old_type)
540  打印标准信息("\n")
542 i小于nr_entries循环
543  entry等于entries[i]
547  如果check_typetype不等于old_type则继续下一循环
550  entry_end等于addrsize
553  如果addr大于等于startentry_end小于等于end
554  real_removed_size加等于size
555  memset(entry, 0, entry的长度)
556  继续下一循环
560  如果addr小于startentry_end大于end
562  size等于startaddr
563  real_removed_size加等于size
564  继续下一循环
568  final_start等于两数取大(start, addr)
569  final_end等于两数取小(end, entry_end)
570  如果final_start大于等于final_end则继续下一循环
573  real_removed_size加等于final_endfinal_start
579  size减等于final_endfinal_start
580  如果addr小于final_start则继续下一循环
583  addr等于final_end
585  返回:real_removed_size
调用者
名称描述
e820_add_kernel_rangealled before trim_bios_range() to spare extra sanitize
parse_memoptThe "mem=nopentium" boot option disables 4MB page tables on 32-bit kernels:
parse_memmap_one
trim_bios_range