linux 系统调用源码分析
tiantao2012
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
系统调用之sys_stime
asmlinkage long sys_stime(time_t __user *tptr);用于设置系统的时间其源码分析如下:SYSCALL_DEFINE1(stime, time_t __user *, tptr){ struct timespec64 tv; int err; #获得user space 设置的time值,这个值保存在tptr这个buffer中 if (get...原创 2018-04-23 15:11:31 · 827 阅读 · 0 评论 -
系统调用之sys32_quotactl
这个函数在kernel space中从当前进程的用户空间申请一段内存空间并从kernel中的到quote 信息后,然后copy到用户空间中其中的quote信息如下:struct if_dqblk { __u64 dqb_bhardlimit; __u64 dqb_bsoftlimit; __u64 dqb_curspace; __u64 dqb_ihardlimit; __u64 d...原创 2018-04-19 16:36:15 · 1392 阅读 · 0 评论 -
系统调用之sys_gettimeofday
这个函数以timeval 结构体返回当前系统时间和当前的时区其源码分析如下:SYSCALL_DEFINE2(gettimeofday, struct timeval __user *, tv, struct timezone __user *, tz){ #这里用likely修饰可以知道大部分情形下下tv 不为null,所以这里会调用do_gettimeofday 返回时间 #然后通...原创 2018-04-25 08:43:42 · 2340 阅读 · 0 评论 -
系统调用之sys_nanosleep
这个系统调用会sleep 一段时间其源码分析如下:SYSCALL_DEFINE2(nanosleep, struct timespec __user *, rqtp, struct timespec __user *, rmtp){ struct timespec64 tu; #得到user space需要设置sleep的时间 if (get_timespec64(&tu,...原创 2018-05-09 19:25:31 · 2747 阅读 · 0 评论 -
系统调用之sys_time
asmlinkage long sys_time(time_t __user *tloc); 这个函数从当前kernel 获得当前的秒数,返回给用户空间其源码分析如下:SYSCALL_DEFINE1(time, time_t __user *, tloc){ #通过timekeeper 获得当前的秒数 time_t i = get_seconds(); #如果用户空间提供的buf不为n...原创 2018-04-21 16:37:14 · 2658 阅读 · 0 评论 -
系统调用之sys_settimeofday
这个函数用于设置系统当前时间。其源码分析如下:SYSCALL_DEFINE1(stime, time_t __user *, tptr){ struct timespec64 tv; int err; #从user space的buffer中copy要设置的时间到tv.tv_sec中 if (get_user(tv.tv_sec, tptr)) return -EFAULT;...原创 2018-05-04 19:37:37 · 1607 阅读 · 0 评论 -
系统调用之sys_adjtimex
这个函数主要用于读取kernel时间,如果是superuser的话,则可以写kernel时间。其源码分析如下:SYSCALL_DEFINE1(adjtimex, struct timex __user *, txc_p){ struct timex txc; /* Local copy of parameter */ int ret; /* Copy the user data s...原创 2018-05-07 19:20:21 · 1448 阅读 · 0 评论 -
系统调用之getpid
这个函数用于获得线程组的领导线程的pid其源码分析如下:SYSCALL_DEFINE0(getpid){ #这里可以看是当前进程 return task_tgid_vnr(current);}static inline pid_t task_tgid_vnr(struct task_struct *tsk){ #走到这一步,就和gettid的实现一模一样 return __ta...原创 2018-05-14 20:25:31 · 4467 阅读 · 0 评论 -
系统调用之sys_gettid
这个系统调用返回当前进程当前namespace中leader线程的pid其源码分析如下:SYSCALL_DEFINE0(gettid){ #从这里可以看出是返回当前进程current return task_pid_vnr(current);}static inline pid_t task_pid_vnr(struct task_struct *tsk){ #读取的是PID ...原创 2018-05-08 19:33:31 · 1952 阅读 · 0 评论
分享