new syscall implementing

Discussion in 'General Linux' started by 0xFF, Mar 27, 2013.

  1. 0xFF

    0xFF New Member

    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    0
    Hi everyone! I've implemented new syscall in 3.0.68 kernel in the following way:
    1) add name to /arch/x86/ia32/ia32_entry.S (.quad sys_mycall)
    2) then add its number to /arch/x86/include/asm/unistd_32.h (__NR_mycall 347)
    3) increase __NR_syscalls by 1 in the same header - now it is 348
    4) add it prototype to /include/linux/syscalls.h as asmlinkage long sys_mycall(int param);
    5) implement it source in /kernel/time.c as SYSCALL_DEFINE1(mycall,int,param) {/*bla bla bla*/}

    then build and install new kernel, this syscall was added to System map file of this kernel in /boot, but when i'm trying to call it like syscall(347,1) it returns -1 and errno is ENOSYS - syscall not implemented. What's wrong? Thank you:)

  2. 0xFF

    0xFF New Member

    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    0
    problem was solved, syscall name must be added to the syscall table file in include directory instead of ia32_entry.S

Share This Page