Я загрузил ядро 2.6.38-5 и хочу добавить системный вызов. Я сделал следующее:
-
Я добавил системный вызов в таблицу системных вызовов,
<src folder>/arc/x86/kernel/syscall_table_32.S .long sys_mycall
-
Я добавил номер системного вызова,
<src folder>/include/asm-generic/unistd.h #define __NR_mycall 244 __SYSCALL(__NR_mycall, sys_mycall)
-
Я добавил прототип в
syscalls.h
;<src follder>/include/linux/syscalls.h asmlinkage long sys_mycall(long input);
-
И вот мой системный вызов;
asmlinkage long sys_mycall(long input) { return (input * 2); }
-
Я также редактировал Makefile.
Теперь после компиляции, когда я использую его через syscall()
, он дает мне BAD ADDRESS
с errno, установленным в 14.
Что мне делать?