Re: system call

From: Randy.Dunlap (rddunlap@osdl.org)
Date: Mon Jul 08 2002 - 10:16:25 EST


On Mon, 8 Jul 2002, Bruno Pujol wrote:

| Do someone know how to add a system call for the kernel 2.4.8 ?

There are _many_ examples of adding syscalls on the web.
Try searching with www.google.com if you haven't already.

I expect that the real problem is that a patch that works for
2.4.8 won't work for 2.4.18 and vice versa, e.g., due to the
method used for defining the end/size of the syscall table.

| I did know how to do it for an older version (2.0.35) :
| - add a line in the file : /usr/src/linux/include/asm/unistd.h
| #define __NR_my_systemcall XXXX (where XXXX is the number
| for my new system call)
|
| - modify the file /usr/src/linux/arch/i386/kernel/entry.S
| - add my system call
| .long SYMBOL_NAME (my_systemcall) at the end of the system callslist
| - modify le last line of the file :
| .space (NR_syscalls-166)*4 <= replace the 166 by 167

That's very close to working.
Here's how I did it for 2.4.18, but like I said above, it won't
apply cleanly to 2.4.8. You'll have to use just a small amount of
gray matter to fix it:
  http://www.xenotime.net/linux/syscall_ex/
contains a howto, kernel patch, and test program.

| After this changes, I only needed to recompile the kernel and reboot
| with it... and a user's program could use the new system call...
| But with my new kernel, this manupilation doesn't still work.

You should modify the new syscall number to a value to is not used,
and modify your userspace program to use that new syscall number.

-- 
~Randy

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Jul 15 2002 - 22:00:13 EST