函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:mm\memblock.c Create Date:2022-07-27 16:40:49
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:__next_mem_range_rev

函数原型:void __attribute__((__section__(".meminit.text"))) __attribute__((__cold__)) __attribute__((__no_instrument_function__))__next_mem_range_rev(u64 *idx, int nid, enum memblock_flags flags, struct memblock_type *type_a, struct memblock_type *type_b, phys_addr_t *out_start, phys_addr_t *out_end, int *out_nid)

返回类型:void

参数:

类型参数名称
u64 *idx
intnid
enum memblock_flagsflags
struct memblock_type *type_a
struct memblock_type *type_b
phys_addr_t *out_start
phys_addr_t *out_end
int *out_nid
1114  idx_a等于idx按位与0xffffffff
1115  idx_b等于idx右移32位
1117  如果WARN_ONCE(nid == MAX_NUMNODES, "Usage of MAX_NUMNODES is deprecated. Use NUMA_NO_NODE instead\n")则nid等于NUMA_NO_NODE
1120  如果idx恒等于ULLONG_MAX
1121  idx_a等于cnt减1
1122  如果(type_b != NULL)则idx_b等于cnt
1124  否则idx_b等于0
1128 idx_a大于等于0循环
1129  m等于regions[idx_a]
1131  m_start等于base
1132  m_end等于basesize
1133  m_nid等于memblock_get_region_node(m)
1135  如果should_skip_region(m, nid, flags)则继续下一循环
1138  如果非type_b
1139  如果out_startout_start等于m_start
1141  如果out_endout_end等于m_end
1143  如果out_nidout_nid等于m_nid
1145  idx_a自减
1146  idx等于idx_a按位或idx_b左移32位
1147  返回
1151 idx_b大于等于0循环
1156  r等于regions[idx_b]
1157  r_start等于如果idx_bbasesize否则0
1158  r_end等于如果idx_b小于cntbase否则PHYS_ADDR_MAX
1165  如果r_end小于等于m_start退出
1168  如果m_end大于r_start
1171  如果out_endout_end等于两数取小(m_end, r_end)
1173  如果out_nidout_nid等于m_nid
1175  如果m_start大于等于r_startidx_a自减
1177  否则idx_b自减
1179  idx等于idx_a按位或idx_b左移32位
1180  返回
1185  idx等于ULLONG_MAX