Implement new system call in 2.6
From: Kristian Sørensen
Date: Wed Feb 25 2004 - 05:10:04 EST
Hi all!
How do I invoke a newly created system call in the 2.6.3 kernel from
userspace?
The call is added it arch/i386/kernel/entry.S and include/asm/unistd.h
and the call is implemented in a security module called Umbrella(*).
The kernel compiles and boots nicely.
The main problem is now to compile a userspace program that invokes this
call. The guide for implementing the systemcall at
http://fossil.wpi.edu/docs/howto_add_systemcall.html
has been followed, which yields the following userspace program:
// test.h
#include "/home/snc/linux-2.6.3-umbrella/include/linux/unistd.h"
_syscall1(int, umbrella_scr, int, arg1);
// test.c
#include "test.h"
main() {
int test = umbrella_scr(1);
printf ("%i\n", test);
}
When compiling:
gcc -I/home/snc/linux-2.6.3/include test.c
/tmp/ccYYs1zB.o(.text+0x20): In function `umbrella_scr':
: undefined reference to `errno'
collect2: ld returned 1 exit status
It seems like a little stupid error :-( Does some of you have a solution?
Thanks in advance and best regards,
Kristian Sørensen.
(*) Umbrella is a security project for securing handheld devices. Umbrella
for implements a combination of process based mandatory access control
(MAC) and authentication of files. This is implemented on top of the Linux
Security Modules framework. The MAC scheme is enforced by a set of
restrictions for each process.
More information on http://umbrella.sf.net
--
Kristian Sørensen <ks@xxxxxxxxx>
-
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/