函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:__next_mem_range

函数原型:void __attribute__((__section__(".meminit.text"))) __attribute__((__cold__)) __attribute__((__no_instrument_function__))__next_mem_range(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
1017  idx_a等于idx按位与0xffffffff
1018  idx_b等于idx右移32位
1020  如果WARN_ONCE(nid == MAX_NUMNODES, "Usage of MAX_NUMNODES is deprecated. Use NUMA_NO_NODE instead\n")则nid等于NUMA_NO_NODE
1024 idx_a小于cnt循环
1025  m等于regions[idx_a]
1027  m_start等于base
1028  m_end等于basesize
1029  m_nid等于memblock_get_region_node(m)
1031  如果should_skip_region(m, nid, flags)则继续下一循环
1034  如果非type_b
1035  如果out_startout_start等于m_start
1037  如果out_endout_end等于m_end
1039  如果out_nidout_nid等于m_nid
1041  idx_a自加
1042  idx等于idx_a按位或idx_b左移32位
1043  返回
1047 idx_b小于cnt加1循环
1052  r等于regions[idx_b]
1053  r_start等于如果idx_bbasesize否则0
1054  r_end等于如果idx_b小于cntbase否则PHYS_ADDR_MAX
1061  如果r_start大于等于m_end退出
1064  如果m_start小于r_end
1068  如果out_endout_end等于两数取小(m_end, r_end)
1070  如果out_nidout_nid等于m_nid
1076  如果m_end小于等于r_endidx_a自加
1078  否则idx_b自加
1080  idx等于idx_a按位或idx_b左移32位
1081  返回
1087  idx等于ULLONG_MAX