关于进程创建函数 do_fork 的疑问

tang_123_ 2015-08-08 08:56:46
在linux中进程创建用到了do_fork 函数,声明如下:


long do_fork(unsigned long clone_flags,
unsigned long stack_start,
struct pt_regs *regs,
unsigned long stack_size,
int __user *parent_tidptr,
int __user *child_tidptr)


其中,最后两行不明白什么意思。__user 代表什么意思?
...全文
144 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sean-zhao 2015-08-18
  • 打赏
  • 举报
回复
引用 2 楼 nswcfd 的回复:
在内核代码里,起到标注作用(类似于用in/out区分入参和出参)。 __user说明参数指向的buffer来自用户态,合法性尚未经过验证。 这意味着,在最内层的函数里,通常有get_user、copy_from_user之类的函数, 进行范围检查(防止用户态传入恶意的地址,比如(void *)1之类的),并复制到kernel space的buffer中。
是这么个意思,看编译器怎么处理的__usr吧
nswcfd 2015-08-10
  • 打赏
  • 举报
回复
在内核代码里,起到标注作用(类似于用in/out区分入参和出参)。 __user说明参数指向的buffer来自用户态,合法性尚未经过验证。 这意味着,在最内层的函数里,通常有get_user、copy_from_user之类的函数, 进行范围检查(防止用户态传入恶意的地址,比如(void *)1之类的),并复制到kernel space的buffer中。
瑞卡哥哥 2015-08-08
  • 打赏
  • 举报
回复
man do_fork

4,441

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧