因科研课题需要, 我需要在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函数中。 - 实现需要的业务逻辑。

发表评论