syscalls

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() 루틴을 가리킨다.  fstat lstat에 대해서도 같다.  유사하게, __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일



리눅스 2.0                           1996년 4월 12일                       SYSCALLS(2)