一、源代码
#define __NR_iam 72
#define __NR_whoami 73
#define __NR_iam 72
#define __NR_whoami 73
#define __LIBRARY__ /* 有它,_syscall1等才有效。详见unistd.h */
#include <unistd.h> /* 有它,编译器才能获知自定义的系统调用的编号 */
_syscall1(int, iam, const char*, name);
_syscall2(int, whoami,char*,name,unsigned int,size);
nr_system_calls = 74
extern int sys_iam();
extern int sys_whoami();
fn_ptr sys_call_table[] = { sys_setup, sys_exit, sys_fork, sys_read,
sys_write, sys_open, sys_close, sys_waitpid, sys_creat, sys_link,
sys_unlink, sys_execve, sys_chdir, sys_time, sys_mknod, sys_chmod,
sys_chown, sys_break, sys_stat, sys_lseek, sys_getpid, sys_mount,
sys_umount, sys_setuid, sys_getuid, sys_stime, sys_ptrace, sys_alarm,
sys_fstat, sys_pause, sys_utime, sys_stty, sys_gtty, sys_access,
sys_nice, sys_ftime, sys_sync, sys_kill, sys_rename, sys_mkdir,
sys_rmdir, sys_dup, sys_pipe, sys_times, sys_prof, sys_brk, sys_setgid,
sys_getgid, sys_signal, sys_geteuid, sys_getegid, sys_acct, sys_phys,
sys_lock, sys_ioctl, sys_fcntl, sys_mpx, sys_setpgid, sys_ulimit,
sys_uname, sys_umask, sys_chroot, sys_ustat, sys_dup2, sys_getppid,
sys_getpgrp, sys_setsid, sys_sigaction, sys_sgetmask, sys_ssetmask,
sys_setreuid,sys_setregid,sys_iam,sys_whoami };
#include<string.h>
#include<errno.h>
#include<asm/segment.h>
char msg[24];
int sys_iam(const char* name){
char temp[24];
int i;
for(i=0;i<24;i++){
temp[i]=get_fs_byte(name+i);
if(temp[i]=='\0')
break;
}
int len=strlen(temp);
if(len>23)
return -EINVAL;
strcpy(msg,temp);
return i;
}
int sys_whoami(char* name, unsigned int size){
int len=strlen(msg);
if(len>=size)
return -EINVAL;
int i;
for(i=0;i<size;i++){
put_fs_byte(msg[i],name+i);
if(msg[i]=='\0')
break;
}
return i;
}
#include<errno.h>
#define __LIBRARY__
#include<unistd.h>
_syscall1(int ,iam,const char*,name)
int main(int argc,char* argv[]){
iam(argv[1]);
return 0;
}
#include<errno.h>
#include<stdio.h>
#define __LIBRARY__
#include<unistd.h>
_syscall2(int,whoami,char*,name,int,size);
int main(int argc,char* argv[]){
char name[24];
whoami(name,24);
printf("%s\n",name);
return 0;
}
二、运行结果

三、参考资料