Re: Implement new system call in 2.6

From: Randy.Dunlap
Date: Wed Feb 25 2004 - 13:21:30 EST


On Wed, 25 Feb 2004 11:07:41 +0100 (CET) Kristian Sørensen wrote:

| 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?
|
Hm, it builds for me with no errors.
I'm using gcc version 3.2. Maybe it's a tools issue.

|
| (*) 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


--
~Randy
-
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/