Я пытаюсь добавить новый системный вызов helloworld в новую версию ядра Linux Ubuntu.Я просматривал Интернет, но не могу найти непротиворечивый пример, показывающий, какие файлы мне придется изменить, чтобы разрешить добавление системного вызова helloworld в ядро.
Я перепробовал много и ошибка компиляциипроизошло.Я знаю, как скомпилировать ядро, но я просто не знаю, куда я добавляю системный вызов моей программы на c, и где я добавляю этот вызов в таблицу системных вызовов и все остальное, что мне нужно сделать.
IЯ работаю над новейшим ядром Linux Ubuntu.
Я скомпилировал ядро с введенным новым системным вызовом, простым вызовом mycall, теперь я получаю ошибки компиляции в заголовочном файле моего приложения, которое будет проверять вызовниже находится мой заголовочный файл
#include<linux/unistd.h>
#define __NR_mycall 317
_syscall1(long, mycall, int, i)
Это синтаксическая ошибка, которую я получаю
stef@ubuntu:~$ gcc -o testmycall testmycall.c
In file included from testmycall.c:3:
testmycall.h:7: error: expected declaration specifiers or ‘...’ before ‘mycall’
testmycall.h:7: error: expected declaration specifiers or ‘...’ before ‘i’
testmycall.c: In function ‘_syscall1’:
testmycall.c:7: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
testmycall.h:7: error: parameter name omitted
testmycall.h:7: error: parameter name omitted
testmycall.c:11: error: expected ‘{’ at end of in
Я получил большую помощь по приведенной ниже ссылке от Николая Н. Фетисова