Scroll to navigation

SYSCALLS(2) 리눅스 프로그래머 매뉴얼 SYSCALLS(2)

이름

none - 모든 시스템 콜의 목록

사용법

리눅스 2.0 시스템 콜

설명

리눅스 2.0.34 의 경우, /usr/include/asm/unistd.h에 164개의 시스템 콜이 나열되어 있다. 이 맨페이지는 그것들을 나열한다.

_llseek(2), _newselect(2), _sysctl(2), access(2), acct(2), adjtimex(2), afs_syscall, alarm(2), bdflush(2), break, brk(2), chdir(2), chmod(2), chown(2), chroot(2), clone(2), close(2), creat(2), create_module(2), delete_module(2), dup(2), dup2(2), execve(2), exit(2), fchdir(2), fchmod(2), fchown(2), fcntl(2), fdatasync(2), flock(2), fork(2), fstat(2), fstatfs(2), fsync(2), ftime, ftruncate(2), get_kernel_syms(2), getdents(2), getegid(2), geteuid(2), getgid(2), getgroups(2), getitimer(2), getpgid(2), getpgrp(2), getpid(2), getppid(2), getpriority(2), getrlimit(2), getrusage(2), getsid(2), gettimeofday(2), getuid(2), gtty, idle(2), init_module(2), ioctl(2), ioperm(2), iopl(2), ipc(2), kill(2), link(2), lock, lseek(2), lstat(2), mkdir(2), mknod(2), mlock(2), mlockall(2), mmap(2), modify_ldt(2), mount(2), mprotect(2), mpx, mremap(2), msync(2), munlock(2), munlockall(2), munmap(2), nanosleep(2), nice(2), oldfstat, oldlstat, oldolduname, oldstat, olduname, open(2), pause(2), personality(2), phys, pipe(2), prof, profil, ptrace(2), quotactl(2), read(2), readdir(2), readlink(2), readv(2), reboot(2), rename(2), rmdir(2), sched_get_priority_max(2), sched_get_priority_min(2), sched_getparam(2), sched_getscheduler(2), sched_rr_get_interval(2), sched_setparam(2), sched_setscheduler(2), sched_yield(2), select(2), setdomainname(2), setfsgid(2), setfsuid(2), setgid(2), setgroups(2), sethostname(2), setitimer(2), setpgid(2), setpriority(2), setregid(2), setreuid(2), setrlimit(2), setsid(2), settimeofday(2), setuid(2), setup(2), sgetmask(2), sigaction(2), signal(2), sigpending(2), sigprocmask(2), sigreturn(2), sigsuspend(2), socketcall(2), ssetmask(2), stat(2), statfs(2), stime(2), stty, swapoff(2), swapon(2), symlink(2), sync(2), sysfs(2), sysinfo(2), syslog(2), time(2), times(2), truncate(2), ulimit, umask(2), umount(2), uname(2), unlink(2), uselib(2), ustat(2), utime(2), vhangup(2), vm86(2), wait4(2), waitpid(2), write(2), writev(2).

이상의 것에서 5개는 더 이상 사용되지 않는 것이다. 즉, oldfstat, oldlstat, oldolduname, oldstat와 olduname (obsolete(2) 참조). 그리고 11개는 구현되지 않았다. 즉, afs_syscall, break, ftime, gtty, lock, mpx, phys, prof, profil, stty와 ulimit (unimplemented(2) 참조). 그러나, ftime(3), profil(3)ulimit(3)는 라이브러리 루틴으로 존재한다.

간단히 말해, /usr/include/asm/unistd.h 파일의 __NR_xxx 상수로 정의된 시스템 콜의 코드는 커널 소스의 sys_xxx() 루틴이다. (i386의 디스패치(dispatch) 테이블은 /usr/src/linux/arch/i386/kernel/entry.S에 정의된다.)

그러나 이전의 시스템 콜이 새로운 것으로 대치되고 이를 체계적으로 정리하지 못했기 때문에 이 규칙에는 많은 예외가 있다. 리눅스 2.0.34에서의 세부적인 사항은 다음과 같다.

__NR_oldstat와 __NR_stat는 sys_stat()와 sys_newstat() 루틴을 가리킨다. fstatlstat에 대해서도 같다. 유사하게, __NR_oldolduname, __NR_olduname과 __NR_uname은 sys_oldname(), sys_uname()과 sys_newuname() 루틴을 가리킨다. 따라서, __NR_stat와 __NR_uname은 항상 최신 버전의 시스템 콜을 가리키고, 이전의 것은 호환성을 위해 둔다.

selectmmap는 다르다. 이는 5개 이상의 인자를 사용하여 i386에서는 인자 전달하는 방법이 문제를 일으킨다. 그래서 다른 아키텍쳐에서는 __NR_select와 __NR_mmap에 해당하는 sys_select()와 sys_mmap()이 있지만, i386에는 대신 old_select()와 old_mmap()을 (인자 블럭의 포인터를 사용하는 함수들이다) 가리킨다. 요즘은 5개의 인자를 넘기는 것이 더 이상 문제되지 않아, sys_select()를 바로 가리키는 __NR_newselect가 (libc 6에서 사용된다) 존재한다.

두 개의 시스템 콜 번호, __NR__llseek와 __NR__sysctl은 sys_llseek()와 sys_sysctl()에는 없는 언더스코어(_)가 더 붙는다.

old_reddir()에 해당하는 __NR_readdir이 있다. 이는 한 번에 최대 한 개의 디렉토리 항목밖에는 읽어올 수 없다. 이는 sys_getdents()로 대치된다.

마지막으로, 166 시스템 콜, sys_vm86()에 대해서는 해당 매크로가 정의되지 않는다. 이는 __NR_vm86의 sys_vm86old()를 대치한다.

역자

임종균 <hermes44@secsm.org>, 2000년 4월 19일

1996년 4월 12일 리눅스 2.0