Я скачал ядро 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); }
Я также редактировал Makefiles.
Теперь, после компиляции, когда я использую его через syscall()
, он дает мне BAD ADDRESS
с errno, установленным на 14.
Что я должен делать?