Я загрузил ядро 2.6.38-5 и хочу добавить системный вызов. Я сделал следующее:
Я добавил свой системный вызов в таблицу системных вызовов;
/arc/x86/kernel/syscall_table_32.S
.long sys_mycall
Я добавил номер системного вызова:
/include/asm-generic/unistd.h
#define __NR_mycall 244
__SYSCALL (__ NR_mycall, sys_mycall)
Я добавил прототип в syscalls.h
;
/include/linux/syscalls.h
asmlinkage long sys_mycall (длинный ввод);
И вот мой системный вызов:
asmlinkage long sys_mycall (long input) {
return (ввод * 2);
}
Я также редактировал файлы Makefile.
Теперь после компиляции, когда я использую его через syscall ()
, он дает мне ПЛОХОЙ АДРЕС
с errno, установленным на 14.
] Что мне делать?