Неверный адрес при добавлении системного вызова

Я загрузил ядро ​​2.6.38-5 и хочу добавить системный вызов. Я сделал следующее:

  1. Я добавил свой системный вызов в таблицу системных вызовов;

      /arc/x86/kernel/syscall_table_32.S
    
    .long sys_mycall
    
  2. Я добавил номер системного вызова:

      /include/asm-generic/unistd.h
    
    #define __NR_mycall 244
    __SYSCALL (__ NR_mycall, sys_mycall)
    
  3. Я добавил прототип в syscalls.h ;

      /include/linux/syscalls.h
    
    asmlinkage long sys_mycall (длинный ввод);
    
  4. И вот мой системный вызов:

     asmlinkage long sys_mycall (long input) {
     return (ввод * 2);
    }
    
  5. Я также редактировал файлы Makefile.

Теперь после компиляции, когда я использую его через syscall () , он дает мне ПЛОХОЙ АДРЕС с errno, установленным на 14.

] Что мне делать?

14
задан Peter Mortensen 20 May 2011 в 15:23
поделиться