免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6634 | 回复: 13
打印 上一主题 下一主题

[内存管理] 如何将linux kernel指定的一段内存设置为只读 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-12-09 17:56 |只看该作者 |倒序浏览
有谁指定如何将arm linux内核中的一段内存设置为只读?
多谢!!!

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
2 [报告]
发表于 2014-12-09 22:39 |只看该作者
你想要将那段内存设置为只读?

论坛徽章:
0
3 [报告]
发表于 2014-12-10 09:02 |只看该作者
自定义的一段缓冲区

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
4 [报告]
发表于 2014-12-10 12:56 |只看该作者
这个缓冲区是动态分配的还是静态保留的?

论坛徽章:
0
5 [报告]
发表于 2014-12-10 15:38 |只看该作者
静态保留的一段内存。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
6 [报告]
发表于 2014-12-10 23:31 |只看该作者
本帖最后由 arm-linux-gcc 于 2014-12-11 14:37 编辑

回复 5# gong_yue


    静态保留的又分为两种,事先知道虚拟地址的和事先不知道虚拟地址的


前者可以在paging_init阶段就建立为只读的,具体参考android的kernel,搜索CONFIG_DEBUG_RODATA





对于事先不知道虚拟地址的,一般都是通过mmap来使用
那么在mmap时,参数prot不要设置PROT_WRITE就能够设置为只读的(只设置PROT_READ)




论坛徽章:
0
7 [报告]
发表于 2014-12-11 09:41 |只看该作者
我的需求是在内核中定义了一个全局的缓冲区如:
char buf[4096];
将这段缓冲区设置为只读的,安照你的方法使用mmap是直接调用remap_pfn_range函数吗?
多谢!!!

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
8 [报告]
发表于 2014-12-11 14:42 |只看该作者
回复 7# gong_yue


    呃,这种保留的buffer不能用mmap的方法来设置只读,mmap只适合知道物理地址的情况,并且是设置为app访问这片物理内存时是只读的
你这种直接在内核中定义全局数组的方式,那么就属于内核空间了,我再看一下代码给你回答

论坛徽章:
2
酉鸡
日期:2013-09-26 11:11:15摩羯座
日期:2014-01-08 13:45:19
9 [报告]
发表于 2014-12-11 21:50 |只看该作者
是让内核只读,还是让用户空间只读?

论坛徽章:
0
10 [报告]
发表于 2014-12-15 10:47 |只看该作者
内核只读。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP