Я загрузил ядро 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.
Что мне делать?