kazmax - Linux で自宅サーバー

syscalls - システムコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明

名前

none - システムコールのリスト

書式

Linux 2.4 システムコール。

説明

システムコールは、アプリケーションと Linux カーネルとの間の 基本的なインタフェースである。 Linux 2.4.17 では、 /usr/src/linux/include/asm-*/unistd.h に 1100 のシステムコールが列挙されている。 この man ページでは、多くのプラットフォームで共通に存在するものを 載せている。
_llseek(2), _newselect(2), _sysctl(2), accept(2), access(2), acct(2), adjtimex(2), afs_syscall, alarm(2), bdflush(2), bind(2), break, brk(2), cacheflush(2), capget(2), capset(2), chdir(2), chmod(2), chown(2), chown32, chroot(2), clone(2), close(2), connect(2), creat(2), create_module(2), delete_module(2), dup(2), dup2(2), execve(2), exit(2), fchdir(2), fchmod(2), fchown(2), fchown32, fcntl(2), fcntl64, fdatasync(2), flock(2), fork(2), fstat(2), fstat64, fstatfs(2), fsync(2), ftime, ftruncate(2), ftruncate64, get_kernel_syms(2), getcwd(2), getdents(2), getdents64, getegid(2), getegid32, geteuid(2), geteuid32, getgid(2), getgid32, getgroups(2), getgroups32, getitimer(2), getpagesize(2), getpeername(2), getpmsg, getpgid(2), getpgrp(2), getpid(2), getppid(2), getpriority(2), getresgid(2), getresgid32, getresuid(2), getresuid32, getrlimit(2), getrusage(2), getsid(2), getsockname(2), getsockopt(2), gettid, gettimeofday(2), getuid(2), getuid32, gtty, idle, init_module(2), ioctl(2), ioperm(2), iopl(2), ipc(2), kill(2), lchown(2), lchown32, link(2), listen(2), lock, lseek(2), lstat(2), lstat64, madvise(2), mincore(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), nfsservctl(2), nice(2), oldfstat, oldlstat, oldolduname, oldstat, oldumount, olduname, open(2), pause(2), personality(2), phys, pipe(2), pivot_root(2), poll(2), prctl(2), pread(2), prof, profil, ptrace(2), putpmsg, pwrite(2), query_module(2), quotactl(2), read(2), readahead, readdir(2), readlink(2), readv(2), reboot(2), recv(2), recvfrom(2), recvmsg(2), rename(2), rmdir(2), rt_sigaction, rt_sigpending, rt_sigprocmask, rt_sigqueueinfo, rt_sigreturn, rt_sigsuspend, rt_sigtimedwait, 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), security, select(2), sendfile(2), send(2), sendmsg(2), sendto(2), setdomainname(2), setfsgid(2), setfsgid32, setfsuid(2), setfsuid32, setgid(2), setgid32, setgroups(2), setgroups32, sethostname(2), setitimer(2), setpgid(2), setpriority(2), setregid(2), setregid32, setresgid(2), setresgid32, setresuid(2), setresuid32, setreuid(2), setreuid32, setrlimit(2), setsid(2), setsockopt(2), settimeofday(2), setuid(2), setuid32, setup(2), sgetmask(2), shutdown(2), sigaction(2), sigaltstack(2), signal(2), sigpending(2), sigprocmask(2), sigreturn(2), sigsuspend(2), socket(2), socketcall(2), socketpair(2), ssetmask(2), stat(2), stat64, 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), truncate64, ulimit, umask(2), umount(2), uname(2), unlink(2), uselib(2), ustat(2), utime(2), vfork(2), vhangup(2), vm86(2), vm86old, wait4(2), waitpid(2), write(2), writev(2).
上記のうち、 getrlimit, oldfstat, oldlstat, oldolduname, oldstat, olduname, readdir, select, vm86old の 9 個は、廃止されている ( obsolete (2)も参照)。 afs_syscall, break, ftime, getpmsg, gtty, idle, lock, mpx, phys, prof, profil, putpmsg, security, stty, ulimit の 15 個は、標準のカーネルには実装されていない ( unimplemented (2)も参照)。 しかし、   ftime (3),   profil (3),   ulimit (3) はライブラリ・ルーチンとして実装されている。 phys 用の場所は 2.1.116 以降では umount2 用に使用されている; 将来においても phys は実装されない。 getpmsg と putpmsg は、ストリームに対応するためにパッチが当てられた カーネル用のもので、標準のカーネルでは決して用いられない。 security は将来の使用のため予約されている。
たいていは、 /usr/include/asm/unistd.h で定義されている番号 __NR_xxx のシステムコールのコードは、 カーネル・ソースの sys_xxx ()というルーチンに書かれている (i386 における実行テーブルは /usr/src/linux/arch/i386/kernel/entry.S に書かれている)。 しかしこれには多くの例外がある。古いシステムコールは新版に置き換えられて きたが、この置き換えはあまり体系立てて行われて来なかったからである。 parisc, sparc, sparc64, alpha といったプロプリエタリ OS のエミュレーション 機能があるプラットフォームでは、多くの追加システムコールがある。 mips64 には、32 ビットシステムコールのフルセットも含まれている。 以下は Linux 2.4.17 における詳細である。
__NR_oldstat と __NR_stat という定義は、それぞれ sys_stat() と sys_newstat() というルーチンを参照している。 fstatlstat についても同様である。 また、 __NR_oldolduname, __NR_olduname, __NR_uname という定義は、それぞれ sys_olduname(), 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つのパラメータを渡すことはもはや問題ではなくなっており、 (libc 6 で使用される) __NR__newselect は直接 sys_select() に対応する ようになっている。 __NR_mmap2 についても同様である。
__NR__llseek と __NR__sysctl の 2つのシステムコール番号に対応する ルーチンは sys_llseek() と sys_sysctl() であり、ルーチン名の方が アンダースコアの数が少ない。
__NR_readdir というシステムコール番号があり、これは old_readdir() に対応している。このルーチンは一回につき一つのディレクトリしか読み込めない。 これは sys_getdents() によって置き換えられている。
i386 を含む多くのプラットフォームでは、 ソケット関係のシステムコールはすべて socketcall() 経由に、 System V IPC コールは ipc() 経由に多重化されている。
64-bit ファイルアクセスと 32-bit UID のみを持つ 新しいプラットフォーム (alpha, ia64, s390x など) では、 *64 や *32 という名前のシステムコールはない。 *64 や *32 というシステムコールが存在する場合、 *64 や *32 がついていないシステムコールは廃止扱いである。
chown システムコールと lchown システムコールは 2.1.81 で入れ替えられた。 *64 と *32 システムコールは、カーネル 2.4 で追加された。 カーネル 2.4 では、 getrlimit と mmap の新しいバージョンおよび、 新しいシステムコールである pivot_root, mincore, madvise, security, gettid, readahead も付け加えられた。