本文共 500 字,大约阅读时间需要 1 分钟。
asmlinkage long sys_time(time_t __user *tloc); 这个函数从当前kernel 获得当前的秒数,返回给用户空间其源码分析如下:SYSCALL_DEFINE1(time, time_t __user *, tloc){ #通过timekeeper 获得当前的秒数 time_t i = get_seconds(); #如果用户空间提供的buf不为null的话,则通过put_user 将秒数写到用户空间的buf中 if (tloc) { if (put_user(i,tloc)) return -EFAULT; } force_successful_syscall_return(); #同时系统调用返回当前的秒数 return i;}通过timekeeper 获得当前系统秒数的实现如下:unsigned long get_seconds(void){ struct timekeeper *tk = &tk_core.timekeeper; return tk->xtime_sec;}可见秒数是保存在timekeeper中的xtime_sec中的
转载地址:http://vcnmi.baihongyu.com/