Know How - Linux
Leider hört folgende Liste bei Nummer 190 auf da sie für Kernel 2.2 ist: docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html Meine Liste ist leider auch noch auf dem stand der neuesten Kernelversion. ;( Letzter Update:2008-05-23 Inhaltlich unverändert, nur Link erfasst und Text ist nun politisch korrekter ;)
Syscalls i386 basierend auf kernel 2.4
Folgende Liste ist aus i386/kernel/entry.S geklaut. Da ich nicht weiß, wie man bei Bamboo ab 0 zählt, beginnt die Liste mit syscall 1. (syscall 0 erwähne ich am Anfang.) Alle Angaben ergänze ich hin und wieder wenn ich die Not dazu empfinde. Insgesamt empfinde ich die Liste der Syscalls als viel zu lang. Warum ist es notwendig, dass ein modernes Kernel so viele verschiedene Funktionen den Userspace-Programmen zur Verfügung stellen muss? Ich mag Dinge die einfach sind, aber über 256 SysCalls überschreitet eindeutig die Schwelle jeglichen Grades, die man noch als irgendwie einfach bezeichnen könnte. Ich suche die Syscalls wie folgt:cd /usr/src/linux
while echo "=========="
read c
do
find * -type f -name '*.c' |
xargs fgrep sys_$c\( |
grep asmlink
done
- kernel/exit.c:asmlinkage void sys_exit(int error_code):
exit-Funktion von Programmen
- arch/i386/kernel/process.c:asmlinkage int sys_fork(struct pt_regs regs):
fork() call, momentan habe ich keine Erklärung für die Parameter
- fs/read_write.c:asmlinkage ssize_t sys_read(unsigned int fd, char * buf, size_t count):
- fs/read_write.c:asmlinkage ssize_t sys_write(unsigned int fd, const char * buf, size_t count):
- fs/open.c:asmlinkage long sys_open(const char * filename, int flags, int mode):
- fs/open.c:asmlinkage long sys_close(unsigned int fd):
- kernel/exit.c:asmlinkage long sys_waitpid(pid_t pid,unsigned int * stat_addr, int options):
- fs/open.c:asmlinkage long sys_creat(const char * pathname, int mode):
- fs/namei.c:asmlinkage long sys_link(const char * oldname, const char * newname):
- fs/namei.c:asmlinkage long sys_unlink(const char * pathname):
- arch/i386/kernel/process.c:asmlinkage int sys_execve(struct pt_regs regs):
hier fehlen noch infos
- fs/open.c:asmlinkage long sys_chdir(const char * filename):
- kernel/time.c:asmlinkage long sys_time(int * tloc):
- fs/namei.c:asmlinkage long sys_mknod(const char * filename, int mode, dev_t dev):
- fs/open.c:asmlinkage long sys_chmod(const char * filename, mode_t mode):
- kernel/uid16.c:asmlinkage long sys_lchown16(const char * filename, old_uid_t user, old_gid_t group):
Alte chown()-Version für IDs mit 16 Bit
- not used: old break syscall holder
- fs/stat.c:asmlinkage long sys_stat(char * filename, struct _old_kernel_stat * statbuf):
- fs/read_write.c:asmlinkage off_t sys_lseek(unsigned int fd, off_t offset, unsigned int origin):
- kernel/timer.c:asmlinkage long sys_getpid(void):
- fs/namespace.c:asmlinkage long sys_mount(char * dev_name, char * dir_name, char * type, unsigned long flags, void * data):
- fs/namespace.c:asmlinkage long sys_oldumount(char * name):
- kernel/uid16.c:asmlinkage long sys_setuid16(old_uid_t uid):
- kernel/uid16.c:asmlinkage long sys_getuid16(void):
- kernel/time.c:asmlinkage long sys_stime(int * tptr):
- arch/i386/kernel/ptrace.c:asmlinkage int sys_ptrace(long request, long pid, long addr, long data):
- kernel/timer.c:asmlinkage unsigned long sys_alarm(unsigned int seconds):
- fstat
- pause
- utime /* 30 */
- ni_syscall /* old stty syscall holder */
- ni_syscall /* old gtty syscall holder */
- access
- nice
- ni_syscall /* 35 / / old ftime syscall holder */
- sync
- kill
- rename
- mkdir
- rmdir /* 40 */
- dup
- pipe
- times
- ni_syscall /* old prof syscall holder */
- brk /* 45 */
- setgid16
- getgid16
- signal
- geteuid16
- getegid16 /* 50 */
- acct
- fs/namespace.c:asmlinkage long sys_umount(char * name, int flags): formerly was phys which was not used
- ni_syscall /* old lock syscall holder */
- ioctl
- fcntl /* 55 */
- ni_syscall /* old mpx syscall holder */
- setpgid
- ni_syscall /* old ulimit syscall holder */
- olduname
- umask /* 60 */
- chroot
- ustat
- dup2
- getppid
- getpgrp /* 65 */
- setsid
- sigaction
- sgetmask
- ssetmask
- setreuid16 /* 70 */
- setregid16
- sigsuspend
- sigpending
- sethostname
- setrlimit /* 75 */
- old_getrlimit
- getrusage
- gettimeofday
- settimeofday
- getgroups16 /* 80 */
- setgroups16
- old_select
- symlink
- lstat
- readlink /* 85 */
- uselib
- swapon
- reboot
- old_readdir
- old_mmap /* 90 */
- munmap
- truncate
- ftruncate
- fchmod
- fchown16 /* 95 */
- getpriority
- setpriority
- ni_syscall /* old profil syscall holder */
- statfs
- fstatfs /* 100 */
- ioperm
- socketcall
- syslog
- setitimer
- getitimer /* 105 */
- newstat
- newlstat
- newfstat
- uname
- iopl /* 110 */
- vhangup
- ni_syscall /* old "idle" system call */
- vm86old
- wait4
- swapoff /* 115 */
- sysinfo
- ipc
- fsync
- sigreturn
- clone /* 120 */
- setdomainname
- newuname
- modify_ldt
- adjtimex
- mprotect /* 125 */
- sigprocmask
- create_module
- init_module
- delete_module
- get_kernel_syms /* 130 */
- quotactl
- getpgid
- fchdir
- bdflush
- sysfs /* 135 */
- personality
- ni_syscall /* for afs_syscall */
- setfsuid16
- setfsgid16
- llseek /* 140 */
- getdents
- select
- flock
- msync
- readv /* 145 */
- writev
- getsid
- fdatasync
- sysctl
- mlock /* 150 */
- munlock
- mlockall
- munlockall
- sched_setparam
- sched_getparam /* 155 */
- sched_setscheduler
- sched_getscheduler
- sched_yield
- sched_get_priority_max
- sched_get_priority_min /* 160 */
- sched_rr_get_interval
- nanosleep
- mremap
- setresuid16
- getresuid16 /* 165 */
- vm86
- query_module
- poll
- nfsservctl
- setresgid16 /* 170 */
- getresgid16
- prctl
- rt_sigreturn
- rt_sigaction
- rt_sigprocmask /* 175 */
- rt_sigpending
- rt_sigtimedwait
- rt_sigqueueinfo
- rt_sigsuspend
- pread /* 180 */
- pwrite
- chown16
- getcwd
- capget
- capset /* 185 */
- sigaltstack
- sendfile
- ni_syscall /* streams1 */
- ni_syscall /* streams2 */
- vfork /* 190 */
- getrlimit
- mmap2
- truncate64
- ftruncate64
- stat64 /* 195 */
- lstat64
- fstat64
- lchown
- getuid
- getgid /* 200 */
- geteuid
- getegid
- setreuid
- setregid
- getgroups /* 205 */
- setgroups
- fchown
- setresuid
- getresuid
- setresgid /* 210 */
- getresgid
- chown
- setuid
- setgid
- setfsuid /* 215 */
- setfsgid
- pivot_root
- mincore
- madvise
- getdents64 /* 220 */
- fcntl64
- tux
- ni_syscall /* Reserved for Security */
- gettid
- readahead /* 225 */
- setxattr
- lsetxattr
- fsetxattr
- getxattr
- lgetxattr /* 230 */
- fgetxattr
- listxattr
- llistxattr
- flistxattr
- removexattr /* 235 */
- lremovexattr
- fremovexattr
- tkill
- sendfile64 /* reserved for sendfile64 */
- futex /* 240 */
- sched_setaffinity
- sched_getaffinity
- set_thread_area
- get_thread_area
- ni_syscall /* 245 sys_io_setup */
- ni_syscall /* sys_io_destroy */
- ni_syscall /* sys_io_getevents */
- ni_syscall /* sys_io_submit */
- ni_syscall /* sys_io_cancel */
- ni_syscall /* 250 sys_alloc_hugepages */
- ni_syscall /* sys_free_hugepages */
- exit_group
- lookup_dcookie
- ni_syscall
- ni_syscall /* 255 sys_epoll_ctl */
- ni_syscall /* sys_epoll_wait */
- ni_syscall /* sys_remap_file_pages */
- set_tid_address
- ni_syscall
- ni_syscall /* 260 */
- ni_syscall
- ni_syscall
- ni_syscall
- ni_syscall
- ni_syscall /* 265 */
- ni_syscall
- ni_syscall
- ni_syscall
- ni_syscall
- ni_syscall /* 270 */
- ni_syscall
- ni_syscall
- vserver: used for linux-vserver.org/