syscalls() - Unix,Linux系统调用
Tutorials Point


  Unix入门
  Unix Shell编程
  高级Unix
  Unix有用参考资料
  Unix有用资源
  精选阅读

版权所有 © 2014 tutorialspoint



  首页     参考资料     讨论论坛     关于TP  

syscalls() - Unix,Linux系统调用


previous next AddThis Social Bookmark Button

广告

名称

none - 所有系统调用的列表

概要

Linux 2.4系统调用。

描述

系统调用是应用程序和Linux内核之间的基本接口。截至Linux 2.4.17,在/usr/src/linux/include/asm-*/unistd.h中列出了1100个系统调用。本手册页列出了大多数平台通用的那些调用。

_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), 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), 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)。

在上述系统调用中,有9个已过时,即getrlimit、oldfstat、oldlstat、oldolduname、oldstat、olduname、readdir、select和vm86old(另见过时(2)),以及15个在标准内核中未实现,即afs_syscall、break、ftime、getpmsg、gtty、idle、lock、mpx、phys、prof、profil、putpmsg、security、stty和ulimit(另见未实现(2))。但是,ftime(3)、profil(3)和ulimit(3)存在作为库例程。phys的插槽从2.1.116开始用于umount;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)上,有很多额外的系统调用;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的情况有所不同。它们使用五个或更多参数,并且导致i386参数传递的设置方式出现问题。因此,虽然其他架构具有与__NR_select和__NR_mmap对应的sys_select()和sys_mmap(),但在i386上,人们会发现old_select()和old_mmap()(使用指向参数块的指针的例程)来代替。如今,传递五个参数不再是问题,并且有一个__NR_newselect(libc 6使用)直接对应于sys_select(),类似地还有__NR_mmap2。

另外两个系统调用编号__NR_llseek和__NR_sysctl在sys_llseek()和sys_sysctl()中缺少额外的下划线。

然后是对应于old_readdir()的__NR_readdir,它每次最多读取一个目录项,并被sys_getdents()取代。

在许多平台(包括i386)上,套接字调用都通过socketcall()多路复用,而System V IPC调用则通过ipc()多路复用。

在新平台上,这些平台只有64位文件访问和32位uid(例如alpha、ia64、s390x),没有*64或*32调用。如果存在*64和*32调用,则其他版本已过时。

chown和lchown系统调用在2.1.81中被交换。*64和*32调用是为内核2.4添加的,getrlimit和mmap的新版本也是如此,新的调用有pivot_root、mincore、madvise、security、gettid和readahead。


previous next Printer Friendly

广告


  

广告



广告