Total Pageviews

Friday, March 23, 2012

Adding System Call

Hi

These are the steps to add system call to the linux kernel 2.6.39.4


  1. Download source code http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.4.tar.bz2

  2. Open file linux-2.6.39/arch/x86/kernel/syscall_table_32.S

    add line

    .long sys_add2


  1. Open linux-2.6.39/arch/x86/include/asm/unistd_32.h

After Line

#define __NR_syncfs 344

Add line

#define __NR_add2 345

and also change NR_syscalls to

#define NR_syscalls 346


  1. Now edit linux-2.6.39/arch/x86/include/asm/unistd_64.h

    Find Lines

    #define __NR_syncfs 306

    __SYSCALL(__NR_syncfs, sys_syncfs)

    Add Line

    #define __NR_add2 307

    __SYSCALL(__NR_add2,sys_add2)


  1. open file linux-2.6.39/include/linux/syscalls.h

    before #endif add

    asmlinkage long sys_add2(int i,int j);


  1. Now create add2.c

    linux-2.6.39/kernel/add2.c

    #include

    asmlinkage long sys_add2(int i,int j)

    {

    return i+j;

    }

  2. Now open the Makefile in this folder(linux-2.6.39/kernel/Makefile) and find out

    obj-y += groups.o

    Add a new line before this line :

    obj-y += add2.o

  3. Now its Time to compile kernel

    Go to linux-2.6.39/

    $make

  4. Start compiling to kernel modules:


$make modules

  1. Install kernel modules

    su -

    $make modules_install

  2. It is time to install kernel itself

    $make install

  3. $update-grub


No comments:

Post a Comment