Где я могу добавить системный вызов в исходный код ядра Linux? - PullRequest
5 голосов
/ 23 октября 2010

Я пытаюсь добавить новый системный вызов 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

Я получил большую помощь по приведенной ниже ссылке от Николая Н. Фетисова

Ответы [ 2 ]

3 голосов
/ 28 октября 2010

Макрос '_syscall1', который вы используете, устарел. Вместо этого используйте syscall (2).

Пример:

#include <stdio.h>
#include <linux/unistd.h>
#include <sys/syscall.h>

#define __NR_mysyscall     317

int main(void)
{
        long return_value;

        return_value = syscall(__NR_syscall);

        printf("The return value is %ld.\n", return_value);

        return 0;
}
0 голосов
/ 30 октября 2012

2-я глава, Принципы операционной системы - гальвин.Прямая процедура.

...