因科研课题需要, 我需要在Linux分区内存页管理机制中增加一个分区(即zone)。今天把这个zone基本加好了, 大致流程记录如下:
- 在
include/linux/mmzone.h
的enum zone_type
里增加相应zone, 如ZONE_FOO
。 - 在
mm/page_alloc.c
的sysctl_lowmem_reserve_ratio
及zone_names
等数组中添加相应的zone的属性。 - 在
include/linux/gfp.h
中增加相应的___GFP_FOO
、__GFP_FOO
以及GFP_FOO
标志位, 方便后续实现业务逻辑。 - 在合适的地方通过
free_area_init
函数来初始化新zone的大小。例如, 对于RISC-V架构, 在arch/riscv/mm/init.c
文件的zone_sizes_init
函数中。 - 实现需要的业务逻辑。
发表评论