Chinaunix首页 | 论坛 | 博客
  • 博客访问: 738259
  • 博文数量: 251
  • 博客积分: 10367
  • 博客等级: 上将
  • 技术积分: 2750
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-10 14:43
文章分类

全部博文(251)

文章存档

2009年(2)

2008年(86)

2007年(163)

分类: LINUX

2007-07-16 22:33:34

核心如何使用用户空间的参数:

    在使用系统调用时,有些参数是指针,这些指针所指向的是用户空间DS寄存器
 
的段选择子所描述段中的地址,而在2.2之前的版本中,核心态的DS段寄存器的中的
 
段选择子和用户态的段选择子描述的段地址不同(前者为0xC0000000, 后者为
 
0x00000000),这样在使用这些参数时就不能读取到正确的位置。所以需要通过特
 
殊的核心函数(如:memcpy_fromfs, mencpy_tofs)来从用户空间数据段读取
 
参数,在这些函数中,是使用FS寄存器来作为读取参数的段寄存器的,FS寄存器在
 
系统调用进入核心态时被设成了USER_DS(DS被设成了KERNEL_DS)。在2.2之
 
后的版本用户态和核心态使用的DS中段选择子描述的段地址是一样的(都是
 
0x00000000),所以不需要再经过上面那样烦琐的过程而直接使用参数了。
阅读(876) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~