名前


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), get cwd(2), get dents(2), get dents64, get egid(2), get egid32, get euid(2), get euid32, get gid(2), get gid32, get groups(2), get groups32, get itimer(2), get pagesize(2), get peername(2), get pmsg, get pgid(2), get pgrp(2), get pid(2), get ppid(2), get priority(2), get resgid(2), get resgid32, get resuid(2), get resuid32, get rlimit(2), get rusage(2), get sid(2), get sockname(2), get sockopt(2), get tid, get timeofday(2), get uid(2), get uid32, gtty, idle, init_module(2), ioctl(2), io perm(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_ get param(2), sched_ get scheduler(2), sched_ rr_ get_ interval(2), sched_ set param(2), sched_ set scheduler(2), sched_ yield(2), security, select(2), sendfile(2), send(2), sendmsg(2), sendto(2), set domainname(2), set fsgid(2), set fsgid32, set fsuid(2), set fsuid32, set gid(2), set gid32, set groups(2), set groups32, set hostname(2), set itimer(2), set pgid(2), set priority(2), set regid(2), set regid32, set resgid(2), set resgid32, set resuid(2), set resuid32, set reuid(2), set reuid32, set rlimit(2), set sid(2), set sockopt(2), set timeofday(2), set uid(2), set uid32, 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 も付け加えられた。

openSUSE Logo

コンテンツ