Anwser
решаемые !! Благодаря @ IanAbbott
заголовок должен быть:
#include <linux/ktime.h>
#include <linux/timekeeping.h>
, а не <linux/time.h>
.
Подробнее см. Обсуждение.
Оригинальный вопрос
Я пишу имена системных вызовов sys_my_time.c
, которые будут использовать getnstimeofday()
. Я импортировал <linux/time.h>
. Код вроде этого:
#include <linux/kernel.h>
#include <linux/linkage.h>
#include <linux/time.h>
asmlinkage int sys_my_time() {
struct timespec t;
getnstimeofday(&t);
// ...
return 0;
}
Но при компиляции ошибка показывает:
CC kernel/sys_my_time.o
kernel/sys_my_time.c: In function ‘sys_my_time’:
kernel/sys_my_time.c:8:3: error: implicit declaration of function ‘getnstimeofday’ [-Werror=implicit-function-declaration]
getnstimeofday(&t);
^
cc1: some warnings being treated as errors
scripts/Makefile.build:320: recipe for target 'kernel/sys_my_time.o' failed
make[1]: *** [kernel/sys_my_time.o] Error 1
Makefile:1029: recipe for target 'kernel' failed
make: *** [kernel] Error 2
Понятия не имею, почему происходит ошибка?
пс. компилирование ядра V4.14.25 в Ubuntu 16.04