函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:__e820__range_update

函数原型:static u64 __init __e820__range_update(struct e820_table *table, u64 start, u64 size, enum e820_type old_type, enum e820_type new_type)

返回类型:u64

参数:

类型参数名称
struct e820_table *table
u64start
u64size
enum e820_typeold_type
enum e820_typenew_type
453  real_updated_size等于0
455  BUG_ON(old_type == new_type)
457  如果size大于ULLONG_MAXstartsize等于ULLONG_MAXstart
460  end等于startsize
461  printk(debug-level messages "e820: update [mem %#010Lx-%#010Lx] ", start, end - 1)
462  e820_print_type(old_type)
463  打印标准信息(" ==> ")
464  e820_print_type(new_type)
465  打印标准信息("\n")
467 i小于nr_entries循环
468  entry等于entries[i]
472  如果type不等于old_type则继续下一循环
475  entry_end等于addrsize
478  如果addr大于等于startentry_end小于等于end
479  type等于new_type
480  real_updated_size加等于size
481  继续下一循环
485  如果addr小于startentry_end大于end
488  size等于startaddr
489  real_updated_size加等于size
490  继续下一循环
494  final_start等于两数取大(start, addr)
495  final_end等于两数取小(end, entry_end)
496  如果final_start大于等于final_end则继续下一循环
499  Add a memory region to the kernel E820 map.
501  real_updated_size加等于final_endfinal_start
507  size减等于final_endfinal_start
508  如果addr小于final_start则继续下一循环
511  addr等于final_end
513  返回:real_updated_size
调用者
名称描述
e820__range_update
e820__range_update_kexec