2009.08.22 This program works, but it took multiple passes to make the kernel. Kept getting errors cpp1 or something like that. The kernel is called linux-syscall58 in the boot menu. The syscall test program in this directory program will not have an effect in other kernels unless the proper code in this syscall.o object module is linked in and the appropriate changes are made to the other kernel files noted below. 2009.08.22 See /usr/src/linux/Notes to find the changes I made to the kernel source tree to reference this system call during kernel linking-load and at runtime. Basically I put a symbolic link in the the /usr/src/linux/kernel directory. It has to be put back every time there is a make clean. Probably a better plan is to just reference directly the syscall.o file in this directory from the Makefile ld directive. 2009.08.22 I did not make a system call stub to call my_syscall by name. In this version I only use the syscall system call and call by number. See man syscall. 2009.08.21 I ported this work from the Mandrake 7.2 system used by the Nutt book to this Slackware 2.2.19 system provided by Isaac. 2009.08.18 Compile the files in this directory. The file syscall.c gets compiled to an object module syscall.o (using the -c option) rather than an executable. The file syscall-test compiles to an executable. Modify the sys_call_table[] so system call 58 (__NR_ulimit) is my_syscall. You can find sys_call_table[] in /usr/src/linux/arch/i386/kernel/entry.S. Add syscall.o to the kernel makefile. Kernel has a global name space resolved at link time, so you only need to change the object module list of the load (LD) command in the Makefile to add syscall.o. Recompile the kernel and reboot. Run the ./syscall-test program in this directory.