static inline mm_segment_t snd_enter_user(void)
{
在linux内核中操作文件的方法--使用get_fs()和set_fs(KERNEL_DS)// get_fs()和set_fs()位于include/asm-generic/uaccess.h
mm_segment_t fs = get_fs(); // 获取current_thread_info()->addr_limit,正常的user用户空间所能访问的最大虚拟地址为0xc0000000[luther.gliethttp]
// get_ds()获取内核最大访问虚拟地址为MAKE_MM_SEG(~0UL),对于32bits处理器为0xffffffff.
set_fs(get_ds()); // 设置user用户空间所能访问的最大虚拟地址为current_thread_info()->addr_limit为0xffffffff.
return fs;
}
阅读(3399) | 评论(1) | 转发(0) |