楼主最近在做操作系统的实验:需要调用系统调用,再把自定义函数植入建立自定义软中断
其中函数如下:
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
浙公网安备 33010602011771号