Re: Adding a new system call from a module in 2.6

From: linux-os
Date: Fri Jan 14 2005 - 16:21:31 EST


On Fri, 14 Jan 2005, Avishay Traeger wrote:

Now that the sys_call_table is no longer exported, what would be the
best way to add a new system call from a module in 2.6? I have only
seen the system call table in assembly code (such as in
arch/i386/kernel/entry.S) and do not know how to export it. I know that
doing this is not recommended, but it would save me a lot of time while
developing new system calls (no need to recompile kernel and reboot for
every change). Thanks in advance for any suggestions.

Avishay Traeger


Just add some dummy function pointers at the end of the table
and have them point to a procedure that returns -ENOSYS.

existing:

.long sys_request_key
.long sys_keyctl
syscall_table_size = (. -sys_call_table)

new:

.long sys_request_key
.long sys_keyctl
mine: .long sys_in_syscall
.long sys_in_syscall
.long sys_in_syscall
.long sys_in_syscall

.global mine
.type mine,@object

syscall_table_size = (. -sys_call_table)

Export whatever you want to find your entries in your module.
Your module modifies the pointers at will ('mine' is now an
array of 4 pointers). To prevent crashes, save what was in
the pointer you modified and put it back before your module exits!

Just don't expect this to be put into a standard kernel.

Cheers,
Dick Johnson
Penguin : Linux version 2.6.10 on an i686 machine (5537.79 BogoMips).
Notice : All mail here is now cached for review by Dictator Bush.
98.36% of all statistics are fiction.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/