Linux 内核 内存管理memblock 分配器 ④ ( memblockmemblock_typememblock_region 结构体的关系 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 内核 内存管理memblock 分配器 ④ ( memblockmemblock_typememblock_region 结构体的关系 )相关的知识,希望对你有一定的参考价值。

文章目录





一、memblock、memblock_type、memblock_region 结构体的关系




1、memblock、memblock_type 关系


memblock 分配器 定义在 Linux 内核源码的 linux-4.12\\include\\linux\\memblock.h#48 位置 ;

struct memblock 
	bool bottom_up;  /* is bottom up direction? */
	phys_addr_t current_limit;
	struct memblock_type memory;
	struct memblock_type reserved;
#ifdef CONFIG_HAVE_MEMBLOCK_PHYS_MAP
	struct memblock_type physmem;
#endif
;

源码路径 : linux-4.12\\include\\linux\\memblock.h#48

memblock 结构体中的 memory ( 内存类型 ) , reserved ( 预留类型 ) , physmem ( 物理页内存类型 ) 这 3 3 3 个成员都是 memblock_type 结构体实例 ;


2、memblock_type、memblock_region 关系


struct memblock_type 结构体 定义在 Linux 内核源码的 linux-4.12\\include\\linux\\memblock.h#40 位置 ;

struct memblock_type 
	unsigned long cnt;	/* number of regions */
	unsigned long max;	/* size of the allocated array */
	phys_addr_t total_size;	/* size of all regions */
	struct memblock_region *regions;
	char *name;
;

源码路径 : linux-4.12\\include\\linux\\memblock.h#40

其中的 regions 成员是 struct memblock_region 结构体类型的指针 ;





二、上述数据结构关系图示



以上是关于Linux 内核 内存管理memblock 分配器 ④ ( memblockmemblock_typememblock_region 结构体的关系 )的主要内容,如果未能解决你的问题,请参考以下文章

Linux 内核 内存管理memblock 分配器 ② ( memblock_type 内存块类型 | memblock_type 结构体成员分析 )

Linux 内核 内存管理memblock 分配器编程接口 ⑤ ( memblock_free 函数 | memblock_remove_range 函数 )

Linux 内核 内存管理memblock 分配器 ③ ( memblock_region 内存块区域 | memblock_region 结构体成员分析 | memblock 分配器标志位 )

Linux 内核 内存管理memblock 分配器编程接口 ① ( memblock 分配器编程接口简介 | memblock_add 函数原型分析 | memblock_add 函数源码 )

Linux 内核 内存管理memblock 分配器编程接口 ③ ( memblock_remove 函数 | memblock_remove_range 函数 )

Linux 内核 内存管理memblock 分配器编程接口 ④ ( memblock_alloc 函数 | memblock_alloc_base 函数 )