|
当我看到系统调用内核代码时,一直有个问题似是而非:
书上说:系统调用时,如果参数太大,用户态调用的函数可以用指针传递给内核参数的地址。内核中的具体服务函数可以用__from_user把该地址的数据读出来。但是,各位是否想过,用户态时的DS和内核用的ds(_KERNEL_DS)不是一码事,我看了一下原码,__from_user其实是直接用movl来读传来的其实是用户
态DS下的指针值的,难道这不会让人怀疑吗?
我想出的解释就是:两者的DS其实就是一个ds,用户态和内核的地址空间基址是重合的,但是范围不同。(我还没看到内存)
请给我点指导吧 |
|