/* syscall.c * * Simple system calls to printk and return. Hard coded into the kernel. * Has calls with return value (241) and return value with parameter (242) * */ /* kernel programming */ #ifndef LINUX #define LINUX #endif #ifndef __KERNEL__ #define __KERNEL__ #endif #include /* for KERN_ALERT */ /* Prototypes */ asmlinkage void my_syscall(void); asmlinkage int my_syscall_ret(void); asmlinkage int my_syscall_parm(char *); /* * My new system call 240 */ asmlinkage void my_syscall(void) { /* The following messages appear in /var/log/syslog */ printk(KERN_ALERT "my_syscall: entering. \n"); printk(KERN_ALERT "my_syscall: leaving. \n"); } /* * My new system call 241 with return value */ asmlinkage int my_syscall_ret(void) { /* The following messages appear in /var/log/syslog */ printk(KERN_ALERT "my_syscall_ret: entering. \n"); printk(KERN_ALERT "my_syscall_ret: leaving. \n"); return 7; } /* * My new system call 242 with parameters and return value */ asmlinkage int my_syscall_parm(char * msg) { /* The following messages appear in /var/log/syslog */ printk(KERN_ALERT "my_syscall_parm: entering. \n"); printk(KERN_ALERT "message from user: %s\n", msg); printk(KERN_ALERT "my_syscall_parm: leaving. \n"); return 11; }