|
在linux内核编程时,进行系统调用(如文件操作)时如果要访问用户空间的参数,可以用set_fs,get_ds等函数实现访问。get_ds获得kernel的内存访问地址范围(IA32是4GB),set_fs是设置当前的地址访问限制值,get_fs是取得当前的地址访问限制值。进程由用户态进入核态,linux进程的task_struct结构中的成员addr_limit也应该由0xBFFFFFFF变为0xFFFFFFFF(addr_limit规定了进程有用户态核内核态情况下的虚拟地址空间访问范围,在用户态,addr_limit成员值是0xBFFFFFFF也就是有3GB的虚拟内存空间,在核心态,是0xFFFFFFFF,范围扩展了1GB)。使用这三个函数是为了安全性。为了保证用户态的地址所指向空间有效,函数会做一些检查工作。
|
关于get_ds, set_fs, get_fs函数的使用
最新推荐文章于 2023-09-01 07:21:01 发布
本文详细介绍了在Linux内核编程时如何通过set_fs、get_ds和get_fs函数进行系统调用,并确保用户空间参数的有效访问。重点阐述了地址访问限制的调整,包括addr_limit成员的作用及安全性的保证。

1438

被折叠的 条评论
为什么被折叠?



