在vmlinux中添加一个section

本文介绍了如何在vmlinux中添加一个名为.nkvmmem的section,通过代码声明使变量放入该section而非默认的数据段。成功添加后,创建nkvm目录,建立nkvmmem.h头文件,并添加测试代码。编译安装新内核并在启动后通过日志验证.nkvmmem section的生效。
摘要由CSDN通过智能技术生成
在vmlinux中添加一个section

最近需要做一些实验,需要在编译出来的linux中新添加一个section, 我在x86_64平台下做的, 具体做法如下

首先呢, 在arch/x86/kernel/vmlinux.lds.S里面, 添加这样一段, 我在.bss之前添加的,当然应该在哪里都无所谓
#if defined(CONFIG_X86_64) && defined(CONFIG_NKVMMEM)
       . = ALIGN(PAGE_SIZE);
       .nkvmmem : AT(ADDR(.nkvmmem) - LOAD_OFFSET) {
               __nkvmmem_start = .;
               nkvmpages = .;
               . = . + 4194304;
               *(NKVMMEM)
               . = ALIGN(PAGE_SIZE);
               __nkvmmem_end = .;
       }
#endif


这里,我把这个section的名字叫.nkvmmem, 那么下面那个没有.的nkvmmem是啥呢,是在代码里面的声明, 这样编译器就会把有这个声明的变量放到.nkvmmem段中而不是到.data或者.bss或者.rodata段。

最终编译出来的文件查看一下其section,发现第58个section就是。nkvmmem section, 添加成功

[57] .data_nosave      PROGBITS         ffffffff820
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值