Manual del Programador de Linux (2)
12 Abril 1996
 

NOMBRE

nada - lista de todas las llamadas al sistema  

SINOPSIS

Llamadas al sistema de Linux 2.0.  

DESCRIPCIÓN

En Linux 2.0.34 hay 164 llamadas al sistema listadas en /usr/include/asm/unistd.h. Esta página de manual las lista (incorporando hipervínculos si lee esto con un browser apropiado).

_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).

De todas estas, 5 son obsoletas, que son oldfstat, oldlstat, oldolduname, oldstat y olduname (véase también obsolete(2)), y 11 de ellas no están implementadas, que son afs_syscall, break, ftime, gtty, lock, mpx, phys, prof, profil, stty y ulimit (véase también unimplemented(2)). No obstante, ftime(3), profil(3) y ulimit(3) existen como rutinas de librería. La entrada para phys la utiliza umount2 desde la versión 2.1.116; phys nunca se implementará.

Hablando más en detalle, el código que pertenece a la llamada al sistema con número __NR_xxx definido en /usr/include/asm/unistd.h puede encontrarse en los fuentes del kernel como la rutina sys_xxx(). (La tabla de llamadas para el i386 puede encontrarse en /usr/src/linux/arch/i386/kernel/entry.S.) De todas maneras, hay algunas excepciones, la mayoría como consecuencia de actualizaciones de viejas llamadas que hayan sido introducidas de forma poco sistemática. A continuación los detalles sobre Linux 2.0.34.

Las definiciones __NR_oldstat y __NR_stat se refieren a las rutinas sys_stat() y sys_newstat() respectivamente, y de igual forma para fstat y lstat. Igualmente, las definiciones __NR_oldolduname, __NR_olduname y __NR_uname se refieren a las rutinas sys_olduname(), sys_uname() y sys_newuname(). De esta manera, __NR_stat y __NR_uname siempre hacen referencia a la última versión de cada llamada al sistema, y las otras más antiguas son para mantener la compatibilidad.

Es diferente con select y mmap. Estas usan cinco o más parámetros, y causan problemas con la manera en la que los parámetros se pasaban en el i386. De esta manera, mientras que otras arquitecturas tienen sys_select() y sys_mmap() correspondiendo con __NR_select y __NR_mmap, en el i386 nos encontramos con old_select() y old_mmap() (rutinas que usan un puntero a un bloque de parámetros). Actualmente el pasar cinco parámetros no es un problema, y existe una __NR_newselect (usada por libc 6) que se corresponde directamente con sys_select().

Para otros números de llamadas al sistema, __NR__llseek y __NR__sysctl tienen un subrayado adicional que no aparece en sys_llseek() y sys_sysctl().

Además existe __NR_readdir que se corresponde con old_readdir(), la cual leerá como mucho una entrada de directorio al mismo tiempo, y que ha sido mejorada por sys_getdents().

Finalmente, la llamada al sistema 166, cuyo punto de entrada sys_vm86() no tiene un número simbólico. Esta versión mejora a sys_vm86old() con número __NR_vm86.

Nuevo comentario