楼主最近在做操作系统的实验:需要调用系统调用,再把自定义函数植入建立自定义软中断

其中函数如下:

 1 asmlinkage long sys_pedagogictime(struct timeval *tv) //获取当前系统时间并返回
 2 {
 3     if(likely(tv)) {
 4         struct timeval ktv;
 5         do_gettimeofday(&ktv);
 6         if(copy_to_user(tv,&ktv, sizeof(ktv)))
 7             return -EFAULT;
 8     }
 9     return 0;
10 }

PPT中的Linux版本:

 

 

 

楼主的环境:

 

 

 

 

装填完函数,写上对应的系统调用号,然后开始make内核,各种报错,提示不识别timeval ,OK那我在sys.c加上#include <linux\time.h>

结果又报不识别do_gettimeofday

lz突然急了,开始find -name 'time.h',逐一看源代码,确实没发现这函数的任何声明,

然后在中文互联网上苦苦搜寻,也没人提这回事,反而一堆复制粘贴怪,粘还粘不好,人都笑死

最后终于在stack overflow上找到元凶了

原来这些函数在 linux kernel 5.x之后已经淘汰了,有安全风险

 

 原文:linux - How can i print current time in kernel? - Stack Overflow

不禁感叹,so ,中文互联网,fXXXXXk U