syscalls(2) System Calls Manual syscalls(2) NOMBRE syscalls - llamadas al sistema de Linux SINOPSIS Llamadas al sistema de Linux. DESCRIPCION La llamada al sistema es la interfaz fundamental entre una aplicacion y el kernel Linux. Llamadas al sistema y funciones envoltorio (wrapper) de libreria Las llamadas al sistema generalmente no son invocadas directamente, sino a traves de funciones envoltura en glibc (o quizas alguna otra libreria). Para detalles acerca de la invocacion directa de una funcion envoltura, ver intro(2). A menudo, pero no siempre, el nombre de la funcion envoltura es el mismo que el nombre de la llamada al sistema que invoca. Por ejemplo, glibc contiene una funcion llamada chdir() la cual invoca la llamada al sistema "chdir" subyacente. A menudo la funcion envoltura de glibc is muy pequena, haciendo muy poco ademas de copiar los argumentos a los registros correctos antes de invocar la llamada al sistema, y luego establecer el errno apropiado despues de que la llamada al sistema haya terminado. (Estos son los mismos pasos realizados por syscall(2), que puede utilizarse para invocar llamadas al sistema para las que no se proporciona ninguna funcion envoltura.) Nota: las llamadas al sistema indican un error retornando un numero de error negativo al invocador en arquitecturas sin un registro/bandera de error separado, como se indica en syscall(2); cuando esto pasa, la funcion envoltura niega el numero de error retornado (para hacerlo positivo), lo copia a errno, y retorna -1 al invocador de la funcion envoltura. A veces, sin embargo, la funcion envoltura hace algo de trabajo extra antes de invocar la llamada al sistema. Por ejemplo, actualmente hay (por razones descritas a continuacion) dos llamadas al sistema relacionadas, truncate(2) y truncate64(2), y la funcion envoltura glibc truncate() revisa cual de esas llamadas al sistema son provistas por el kernel y determina cual deberia ser empleada. Lista de Llamadas al Sistema A continuacion esta una lista de las llamadas al sistema Linux. En la lista, la columna Kernel indica la version del kernel de esas llamadas al sistema que eran nuevas en Linux 2.2, o aparecieron desde esa version del kernel. Notense los siguientes puntos: o Donde no se indica la version del kernel, la llamada al sistema aparecio en Linux 1.0 o antes. o Where a system call is marked "1.2" this means the system call probably appeared in a Linux 1.1.x kernel version, and first appeared in a stable kernel with 1.2. (Development of the Linux 1.2 kernel was initiated from a branch of Linux 1.0.6 via the Linux 1.1.x unstable kernel series.) o Donde una llamada al sistema es marcada con "2.0" esto significa que la llamada al sistema probablemente aparecio en una version 1.3.x del kernel Linux, y primero aparecio en un kernel Linux 2.0 estable. (El desarrollo del kernel Linux 2.0 fue iniciado de una rama Linux 1.2.x, en algun punto alrededor de Linux 1.2.10, a traves de la serie de kernels inestables Linux 1.3.x.) o Where a system call is marked "2.2" this means the system call probably appeared in a Linux 2.1.x kernel version, and first appeared in a stable kernel with Linux 2.2.0. (Development of the Linux 2.2 kernel was initiated from a branch of Linux 2.0.21 via the Linux 2.1.x unstable kernel series.) o Donde una llamada al sistema es marcada con "2.4" esto significa que la llamada al sistema probablemente aparecio en una version 2.3.x del kernel Linux, y primero aparecio en una version estable del kernel Linux 2.4.0. (El desarrollo del kernel Linux 2.4 fue iniciado de una rama de Linux 2.2.8 a traves de la serie de kernels inestables Linux 2.3.x.) o Donde una llamada al sistema es marcada con "2.6" esto significa que la llamada al sistema probablemente aparecio en una version 2.5.x del kernel Linux, y primero aparecio en una version estable del kernel Linux 2.6.0. (El desarrollo del kernel Linux 2.6 fue iniciado de una rama de Linux 2.4.15 a traves de la serie de kernels inestables Linux 2.5.x.) o Starting with Linux 2.6.0, the development model changed, and new system calls may appear in each Linux 2.6.x release. In this case, the exact version number where the system call appeared is shown. This convention continues with the Linux 3.x kernel series, which followed on from Linux 2.6.39; and the Linux 4.x kernel series, which followed on from Linux 3.19; and the Linux 5.x kernel series, which followed on from Linux 4.20; and the Linux 6.x kernel series, which followed on from Linux 5.19. o En algunos casos, una llamada al sistema se anadio a una serie estable del kernel despues de que se ramificara desde la serie estable anterior del kernel, y luego se retroporto a la serie estable anterior del kernel. Por ejemplo, algunas llamadas al sistema que aparecieron en Linux 2.6.x tambien fueron retroportadas a una version Linux 2.4.x posterior a Linux 2.4.15. Cuando esto es asi, se lista la version en la que la llamada al sistema aparecio en ambas series principales del nucleo. La lista de llamadas al sistema que estan disponibles a partir de Linux 5.14 (o en algunos casos solo en nucleos mas antiguos) es la siguiente: System call Nucleo Notas ----------------------------------------------------------------------- _llseek(2) 1.2 _newselect(2) 2.0 _sysctl(2) 2.0 Removida en 5.5 accept(2) 2.0 Ver notas en socketcall(2) accept4(2) 2.6.28 access(2) 1.0 acct(2) 1.0 add_key(2) 2.6.10 adjtimex(2) 1.0 alarm(2) 1.0 alloc_hugepages(2) 2.5.36 Removido en 2.5.44 arc_gettls(2) 3.9 ARC solamente arc_settls(2) 3.9 ARC solamente arc_usr_cmpxchg(2) 4.9 ARC solamente arch_prctl(2) 2.6 x86_64, x86 desde 4.12 atomic_barrier(2) 2.6.34 m68k solamente atomic_cmpxchg_32(2) 2.6.34 m68k solamente bdflush(2) 1.2 Obsoleto (no hace nada) desde 2.6 bind(2) 2.0 Ver notas en socketcall(2) bpf(2) 3.18 brk(2) 1.0 breakpoint(2) 2.2 solo ARM OABI, definido con el prefijo __ARM_NR cacheflush(2) 1.2 No esta en x86 capget(2) 2.2 capset(2) 2.2 chdir(2) 1.0 chmod(2) 1.0 chown(2) 2.2 Ver chown(2) para detalles de la version chown32(2) 2.4 chroot(2) 1.0 clock_adjtime(2) 2.6.39 clock_getres(2) 2.6 clock_gettime(2) 2.6 clock_nanosleep(2) 2.6 clock_settime(2) 2.6 clone2(2) 2.4 IA-64 solamente clone(2) 1.0 clone3(2) 5.3 close(2) 1.0 close_range(2) 5.9 connect(2) 2.0 Ver notas en socketcall(2) copy_file_range(2) 4.5 creat(2) 1.0 create_module(2) 1.0 Removido en 2.6 delete_module(2) 1.0 dup(2) 1.0 dup2(2) 1.0 dup3(2) 2.6.27 epoll_create(2) 2.6 epoll_create1(2) 2.6.27 epoll_ctl(2) 2.6 epoll_pwait(2) 2.6.19 epoll_pwait2(2) 5.11 epoll_wait(2) 2.6 eventfd(2) 2.6.22 eventfd2(2) 2.6.27 execv(2) 2.0 solo SPARC/SPARC64, para compatibilidad con SunOS execve(2) 1.0 execveat(2) 3.19 exit(2) 1.0 exit_group(2) 2.6 faccessat(2) 2.6.16 faccessat2(2) 5.8 fadvise64(2) 2.6 fadvise64_64(2) 2.6 fallocate(2) 2.6.23 fanotify_init(2) 2.6.37 fanotify_mark(2) 2.6.37 fchdir(2) 1.0 fchmod(2) 1.0 fchmodat(2) 2.6.16 fchown(2) 1.0 fchown32(2) 2.4 fchownat(2) 2.6.16 fcntl(2) 1.0 fcntl64(2) 2.4 fdatasync(2) 2.0 fgetxattr(2) 2.6; 2.4.18 finit_module(2) 3.8 flistxattr(2) 2.6; 2.4.18 flock(2) 2.0 fork(2) 1.0 free_hugepages(2) 2.5.36 Removido en 2.5.44 fremovexattr(2) 2.6; 2.4.18 fsconfig(2) 5.2 fsetxattr(2) 2.6; 2.4.18 fsmount(2) 5.2 fsopen(2) 5.2 fspick(2) 5.2 fstat(2) 1.0 fstat64(2) 2.4 fstatat64(2) 2.6.16 fstatfs(2) 1.0 fstatfs64(2) 2.6 fsync(2) 1.0 ftruncate(2) 1.0 ftruncate64(2) 2.4 futex(2) 2.6 futimesat(2) 2.6.16 get_kernel_syms(2) 1.0 Removido en 2.6 get_mempolicy(2) 2.6.6 get_robust_list(2) 2.6.17 get_thread_area(2) 2.6 get_tls(2) 4.15 solo ARM OABI, tiene el prefijo __ARM_NR getcpu(2) 2.6.19 getcwd(2) 2.2 getdents(2) 2.0 getdents64(2) 2.4 getdomainname(2) 2.2 SPARC, SPARC64; disponible como osf_getdomainname(2) en Alpha desde Linux 2.0 getdtablesize(2) 2.0 SPARC (removida en 2.6.26) disponible en Alpha como osf_getdtablesize(2) getegid(2) 1.0 getegid32(2) 2.4 geteuid(2) 1.0 geteuid32(2) 2.4 getgid(2) 1.0 getgid32(2) 2.4 getgroups(2) 1.0 getgroups32(2) 2.4 gethostname(2) 2.0 Alpha, estaba disponible en SPARC hasta Linux 2.6.26 getitimer(2) 1.0 getpeername(2) 2.0 Ver notas en socketcall(2) getpagesize(2) 2.0 No esta en x86 getpgid(2) 1.0 getpgrp(2) 1.0 getpid(2) 1.0 getppid(2) 1.0 getpriority(2) 1.0 getrandom(2) 3.17 getresgid(2) 2.2 getresgid32(2) 2.4 getresuid(2) 2.2 getresuid32(2) 2.4 getrlimit(2) 1.0 getrusage(2) 1.0 getsid(2) 2.0 getsockname(2) 2.0 Ver notas en socketcall(2) getsockopt(2) 2.0 Ver notas en socketcall(2) gettid(2) 2.4.11 gettimeofday(2) 1.0 getuid(2) 1.0 getuid32(2) 2.4 getunwind(2) 2.4.8 solo IA-64; obsoleto getxattr(2) 2.6; 2.4.18 getxgid(2) 2.0 Alpha solamente; vea NOTAS getxpid(2) 2.0 Alpha solamente; vea NOTAS getxuid(2) 2.0 Alpha solamente; vea NOTAS init_module(2) 1.0 inotify_add_watch(2) 2.6.13 inotify_init(2) 2.6.13 inotify_init1(2) 2.6.27 inotify_rm_watch(2) 2.6.13 io_cancel(2) 2.6 io_destroy(2) 2.6 io_getevents(2) 2.6 io_pgetevents(2) 4.18 io_setup(2) 2.6 io_submit(2) 2.6 io_uring_enter(2) 5.1 io_uring_register(2) 5.1 io_uring_setup(2) 5.1 ioctl(2) 1.0 ioperm(2) 1.0 iopl(2) 1.0 ioprio_get(2) 2.6.13 ioprio_set(2) 2.6.13 ipc(2) 1.0 kcmp(2) 3.5 kern_features(2) 3.7 SPARC64 solamente kexec_file_load(2) 3.17 kexec_load(2) 2.6.13 keyctl(2) 2.6.10 kill(2) 1.0 landlock_add_rule(2) 5.13 landlock_create_ruleset(2) 5.13 landlock_restrict_self(2) 5.13 lchown(2) 1.0 Ver chown(2) para detalles de la version lchown32(2) 2.4 lgetxattr(2) 2.6; 2.4.18 link(2) 1.0 linkat(2) 2.6.16 listen(2) 2.0 Ver notas en socketcall(2) listxattr(2) 2.6; 2.4.18 llistxattr(2) 2.6; 2.4.18 lookup_dcookie(2) 2.6 lremovexattr(2) 2.6; 2.4.18 lseek(2) 1.0 lsetxattr(2) 2.6; 2.4.18 lstat(2) 1.0 lstat64(2) 2.4 madvise(2) 2.4 mbind(2) 2.6.6 memory_ordering(2) 2.2 SPARC64 solamente membarrier(2) 3.17 memfd_create(2) 3.17 memfd_secret(2) 5.14 migrate_pages(2) 2.6.16 mincore(2) 2.4 mkdir(2) 1.0 mkdirat(2) 2.6.16 mknod(2) 1.0 mknodat(2) 2.6.16 mlock(2) 2.0 mlock2(2) 4.4 mlockall(2) 2.0 mmap(2) 1.0 mmap2(2) 2.4 modify_ldt(2) 1.0 mount(2) 1.0 move_mount(2) 5.2 move_pages(2) 2.6.18 mprotect(2) 1.0 mq_getsetattr(2) 2.6.6 mq_notify(2) 2.6.6 mq_open(2) 2.6.6 mq_timedreceive(2) 2.6.6 mq_timedsend(2) 2.6.6 mq_unlink(2) 2.6.6 mremap(2) 2.0 msgctl(2) 2.0 Ver notas en ipc(2) msgget(2) 2.0 Ver notas en ipc(2) msgrcv(2) 2.0 Ver notas en ipc(2) msgsnd(2) 2.0 Ver notas en ipc(2) msync(2) 2.0 munlock(2) 2.0 munlockall(2) 2.0 munmap(2) 1.0 name_to_handle_at(2) 2.6.39 nanosleep(2) 2.0 newfstatat(2) 2.6.16 Vea stat(2) nfsservctl(2) 2.2 Removido en 3.1 nice(2) 1.0 old_adjtimex(2) 2.0 Alpha solamente; vea NOTAS old_getrlimit(2) 2.4 Viejas variantes de getrlimit(2) que usaban un valor diferente para RLIM_INFINITY oldfstat(2) 1.0 oldlstat(2) 1.0 oldolduname(2) 1.0 oldstat(2) 1.0 oldumount(2) 2.4.116 Nombre de la vieja llamada al sistema umount(2) en Alpha olduname(2) 1.0 open(2) 1.0 open_by_handle_at(2) 2.6.39 open_tree(2) 5.2 openat(2) 2.6.16 openat2(2) 5.6 or1k_atomic(2) 3.1 OpenRISC 1000 solamente pause(2) 1.0 pciconfig_iobase(2) 2.2.15; 2.4 No esta en x86 pciconfig_read(2) 2.0.26; 2.2 No esta en x86 pciconfig_write(2) 2.0.26; 2.2 No esta en x86 perf_event_open(2) 2.6.31 Fue perf_counter_open() en 2.6.31; renombrado en 2.6.32 personality(2) 1.2 perfctr(2) 2.2 solo SPARC; removido en 2.6.34 perfmonctl(2) 2.4 solo IA-64; removido en 5.10 pidfd_getfd(2) 5.6 pidfd_send_signal(2) 5.1 pidfd_open(2) 5.3 pipe(2) 1.0 pipe2(2) 2.6.27 pivot_root(2) 2.4 pkey_alloc(2) 4.8 pkey_free(2) 4.8 pkey_mprotect(2) 4.8 poll(2) 2.0.36; 2.2 ppoll(2) 2.6.16 prctl(2) 2.2 pread64(2) Anadido como "pread" en 2.2; renombrado "pread64" en 2.6 preadv(2) 2.6.30 preadv2(2) 4.6 prlimit64(2) 2.6.36 process_madvise(2) 5.10 process_vm_readv(2) 3.2 process_vm_writev(2) 3.2 pselect6(2) 2.6.16 ptrace(2) 1.0 pwrite64(2) Anadida como "pwrite" en 2.2; renombrada "pwrite64" en 2.6 pwritev(2) 2.6.30 pwritev2(2) 4.6 query_module(2) 2.2 Removido en 2.6 quotactl(2) 1.0 quotactl_fd(2) 5.14 read(2) 1.0 readahead(2) 2.4.13 readdir(2) 1.0 readlink(2) 1.0 readlinkat(2) 2.6.16 readv(2) 2.0 reboot(2) 1.0 recv(2) 2.0 Ver notas en socketcall(2) recvfrom(2) 2.0 Ver notas en socketcall(2) recvmsg(2) 2.0 Ver notas en socketcall(2) recvmmsg(2) 2.6.33 remap_file_pages(2) 2.6 Obsoleto desde 3.16 removexattr(2) 2.6; 2.4.18 rename(2) 1.0 renameat(2) 2.6.16 renameat2(2) 3.15 request_key(2) 2.6.10 restart_syscall(2) 2.6 riscv_flush_icache(2) 4.15 RISC-V solamente rmdir(2) 1.0 rseq(2) 4.18 rt_sigaction(2) 2.2 rt_sigpending(2) 2.2 rt_sigprocmask(2) 2.2 rt_sigqueueinfo(2) 2.2 rt_sigreturn(2) 2.2 rt_sigsuspend(2) 2.2 rt_sigtimedwait(2) 2.2 rt_tgsigqueueinfo(2) 2.6.31 rtas(2) 2.6.2 PowerPC/PowerPC64 solamente s390_runtime_instr(2) 3.7 s390 solamente s390_pci_mmio_read(2) 3.19 s390 solamente s390_pci_mmio_write(2) 3.19 s390 solamente s390_sthyi(2) 4.15 s390 solamente s390_guarded_storage(2) 4.12 s390 solamente sched_get_affinity(2) 2.6 Name of sched_getaffinity(2) on SPARC and SPARC64 sched_get_priority_max(2) 2.0 sched_get_priority_min(2) 2.0 sched_getaffinity(2) 2.6 sched_getattr(2) 3.14 sched_getparam(2) 2.0 sched_getscheduler(2) 2.0 sched_rr_get_interval(2) 2.0 sched_set_affinity(2) 2.6 Name of sched_setaffinity(2) on SPARC and SPARC64 sched_setaffinity(2) 2.6 sched_setattr(2) 3.14 sched_setparam(2) 2.0 sched_setscheduler(2) 2.0 sched_yield(2) 2.0 seccomp(2) 3.17 select(2) 1.0 semctl(2) 2.0 Ver notas en ipc(2) semget(2) 2.0 Ver notas en ipc(2) semop(2) 2.0 Ver notas en ipc(2) semtimedop(2) 2.6; 2.4.22 send(2) 2.0 Ver notas en socketcall(2) sendfile(2) 2.2 sendfile64(2) 2.6; 2.4.19 sendmmsg(2) 3.0 sendmsg(2) 2.0 Ver notas en socketcall(2) sendto(2) 2.0 Ver notas en socketcall(2) set_mempolicy(2) 2.6.6 set_robust_list(2) 2.6.17 set_thread_area(2) 2.6 set_tid_address(2) 2.6 set_tls(2) 2.6.11 solo ARM OABI/EABI (la constante tiene el prefijo __ARM_NR) setdomainname(2) 1.0 setfsgid(2) 1.2 setfsgid32(2) 2.4 setfsuid(2) 1.2 setfsuid32(2) 2.4 setgid(2) 1.0 setgid32(2) 2.4 setgroups(2) 1.0 setgroups32(2) 2.4 sethae(2) 2.0 Alpha solamente; vea NOTAS sethostname(2) 1.0 setitimer(2) 1.0 setns(2) 3.0 setpgid(2) 1.0 setpgrp(2) 2.0 Nombre alternativo para setpgid(2) en Alpha setpriority(2) 1.0 setregid(2) 1.0 setregid32(2) 2.4 setresgid(2) 2.2 setresgid32(2) 2.4 setresuid(2) 2.2 setresuid32(2) 2.4 setreuid(2) 1.0 setreuid32(2) 2.4 setrlimit(2) 1.0 setsid(2) 1.0 setsockopt(2) 2.0 Ver notas en socketcall(2) settimeofday(2) 1.0 setuid(2) 1.0 setuid32(2) 2.4 setup(2) 1.0 Removido en 2.2 setxattr(2) 2.6; 2.4.18 sgetmask(2) 1.0 shmat(2) 2.0 Ver notas en ipc(2) shmctl(2) 2.0 Ver notas en ipc(2) shmdt(2) 2.0 Ver notas en ipc(2) shmget(2) 2.0 Ver notas en ipc(2) shutdown(2) 2.0 Ver notas en socketcall(2) sigaction(2) 1.0 sigaltstack(2) 2.2 signal(2) 1.0 signalfd(2) 2.6.22 signalfd4(2) 2.6.27 sigpending(2) 1.0 sigprocmask(2) 1.0 sigreturn(2) 1.0 sigsuspend(2) 1.0 socket(2) 2.0 Ver notas en socketcall(2) socketcall(2) 1.0 socketpair(2) 2.0 Ver notas en socketcall(2) spill(2) 2.6.13 Xtensa solamente splice(2) 2.6.17 spu_create(2) 2.6.16 PowerPC/PowerPC64 solamente spu_run(2) 2.6.16 PowerPC/PowerPC64 solamente ssetmask(2) 1.0 stat(2) 1.0 stat64(2) 2.4 statfs(2) 1.0 statfs64(2) 2.6 statx(2) 4.11 stime(2) 1.0 subpage_prot(2) 2.6.25 PowerPC/PowerPC64 solamente swapcontext(2) 2.6.3 PowerPC/PowerPC64 solamente switch_endian(2) 4.1 PowerPC64 solamente swapoff(2) 1.0 swapon(2) 1.0 symlink(2) 1.0 symlinkat(2) 2.6.16 sync(2) 1.0 sync_file_range(2) 2.6.17 sync_file_range2(2) 2.6.22 syncfs(2) 2.6.39 sys_debug_setcontext(2) 2.6.11 PowerPC solamente syscall(2) 1.0 Aun disponible en ARM OABI y MIPS 032 ABI sysfs(2) 1.2 sysinfo(2) 1.0 syslog(2) 1.0 sysmips(2) 2.6.0 MIPS solamente tee(2) 2.6.17 tgkill(2) 2.6 time(2) 1.0 timer_create(2) 2.6 timer_delete(2) 2.6 timer_getoverrun(2) 2.6 timer_gettime(2) 2.6 timer_settime(2) 2.6 timerfd_create(2) 2.6.25 timerfd_gettime(2) 2.6.25 timerfd_settime(2) 2.6.25 times(2) 1.0 tkill(2) 2.6; 2.4.22 truncate(2) 1.0 truncate64(2) 2.4 ugetrlimit(2) 2.4 umask(2) 1.0 umount(2) 1.0 umount2(2) 2.2 uname(2) 1.0 unlink(2) 1.0 unlinkat(2) 2.6.16 unshare(2) 2.6.16 uselib(2) 1.0 ustat(2) 1.0 userfaultfd(2) 4.3 usr26(2) 2.4.8.1 ARM OABI solamente usr32(2) 2.4.8.1 ARM OABI solamente utime(2) 1.0 utimensat(2) 2.6.22 utimes(2) 2.2 utrap_install(2) 2.2 SPARC64 solamente vfork(2) 2.2 vhangup(2) 1.0 vm86old(2) 1.0 Era "vm86"; renombrado en 2.0.28/2.2 vm86(2) 2.0.28; 2.2 vmsplice(2) 2.6.17 wait4(2) 1.0 waitid(2) 2.6.10 waitpid(2) 1.0 write(2) 1.0 writev(2) 2.0 xtensa(2) 2.6.13 Xtensa solamente On many platforms, including x86-32, socket calls are all multiplexed (via glibc wrapper functions) through socketcall(2) and similarly System V IPC calls are multiplexed through ipc(2). Although slots are reserved for them in the system call table, the following system calls are not implemented in the standard kernel: afs_syscall(2), break(2), ftime(2), getpmsg(2), gtty(2), idle(2), lock(2), madvise1(2), mpx(2), phys(2), prof(2), profil(2), putpmsg(2), security(2), stty(2), tuxcall(2), ulimit(2), and vserver(2) (see also unimplemented(2)). However, ftime(3), profil(3), and ulimit(3) exist as library routines. The slot for phys(2) is in use since Linux 2.1.116 for umount(2); phys(2) will never be implemented. The getpmsg(2) and putpmsg(2) calls are for kernels patched to support STREAMS, and may never be in the standard kernel. Existia brevemente set_zone_reclaim(2), anadida en Linux 2.6.13, y eliminada en Linux 2.6.16; esta llamada al sistema nunca estuvo disponible para el espacio de usuario. Llamadas al sistema removidos en ports Algunas llamadas al sistema solo han existido en arquitecturas Linux que han sido eliminadas del nucleo: AVR32 (port removido en Linux 4.12) o pread(2) o pwrite(2) Blackfin (port removido en Linux 4.17) o bfin_spinlock(2) (added in Linux 2.6.22) o dma_memcpy(2) (added in Linux 2.6.22) o pread(2) (anadida en Linux 2.6.22) o pwrite(2) (anadida en Linux 2.6.22) o sram_alloc(2) (anadida en Linux 2.6.22) o sram_free(2) (anadida en Linux 2.6.22) Metag (port removido en Linux 4.17) o metag_get_tls(2) (add in Linux 3.9) o metag_set_fpu_flags(2) (add in Linux 3.9) o metag_set_tls(2) (add in Linux 3.9) o metag_setglobalbit(2) (add in Linux 3.9) Tile (port removido en Linux 4.17) o cmpxchg_badaddr(2) (added in Linux 2.6.36) NOTAS Roughly speaking, the code belonging to the system call with number __NR_xxx defined in /usr/include/asm/unistd.h can be found in the Linux kernel source in the routine sys_xxx(). There are many exceptions, however, mostly because older system calls were superseded by newer ones, and this has been treated somewhat unsystematically. On platforms with proprietary operating-system emulation, such as sparc, sparc64, and alpha, there are many additional system calls; mips64 also contains a full set of 32-bit system calls. Con el tiempo, ha sido necesario modificar las interfaces de algunas llamadas al sistema. Uno de los motivos de estos cambios ha sido la necesidad de aumentar el tamano de las estructuras o valores escalares pasados a la llamada al sistema. Debido a estos cambios, ciertas arquitecturas (en particular, las arquitecturas de 32 bits de larga data como i386) ahora tienen varios grupos de llamadas al sistema relacionadas (por ejemplo, truncate(2) y truncate64(2)) que realizan tareas similares, pero que varian en detalles como el tamano de sus argumentos. (Como se senalo anteriormente, las aplicaciones generalmente no son conscientes de esto: las funciones de envoltura de glibc hacen algo de trabajo para garantizar que se invoque la llamada al sistema correcta, y que se preserve la compatibilidad ABI para los binarios antiguos). Ejemplos de llamadas al sistema que existen en multiples versiones son las siguientes: o Por ahora existen tres versiones diferentes de stat(2): sys_stat() (ranura __NR_oldstat), sys_newstat() (ranura __NR_stat), e sys_stat64() (ranura __NR_stat64), siendo la ultima la mas actual. Algo similar ocurre con lstat(2) y fstat(2). o De forma similar, las definiciones __NR_olduname, __NR_olduname e __NR_uname hacen referencia a las rutinas sys_olduname(), sys_uname() e sys_newuname(). o En Linux 2.0, aparecio una nueva version de vm86(2), con las rutinas del kernel antiguas y nuevas denominadas sys_vm86old() e sys_vm86(). o En Linux 2.4, aparecio una nueva version de getrlimit(2), con las rutinas del kernel antigua y nueva denominadas sys_old_getrlimit() (ranura __NR_getrlimit) e sys_getrlimit() (ranura __NR_ugetrlimit). o Linux 2.4 aumento el tamano de los identificadores de usuario y grupo de 16 a 32 bits. Para soportar este cambio, se anadieron una serie de llamadas al sistema (por ejemplo, chown32(2), getuid32(2), getgroups32(2), setresuid32(2)), sustituyendo a las llamadas anteriores del mismo nombre sin el sufijo "32". o Linux 2.4 anadio soporte para aplicaciones en arquitecturas de 32 bits para acceder a archivos grandes (es decir, archivos cuyos tamanos y offsets no pueden representarse en 32 bits). Para soportar este cambio, se requirieron reemplazos para las llamadas al sistema que tratan con offsets y tamanos de archivos. Asi, se anadieron las siguientes llamadas al sistema: fcntl64(2), getdents64(2), stat64(2), statfs64(2), truncate64(2), y sus analogos que trabajan con descriptores de fichero o enlaces simbolicos. Estas llamadas al sistema sustituyen a las antiguas llamadas al sistema que, excepto en el caso de las llamadas "stat", tienen el mismo nombre sin el sufijo "64". On newer platforms that only have 64-bit file access and 32-bit UIDs/GIDs (e.g., alpha, ia64, s390x, x86-64), there is just a single version of the UID/GID and file access system calls. On platforms (typically, 32-bit platforms) where the *64 and *32 calls exist, the other versions are obsolete. o Las llamadas rt_sig* se anadieron en Linux 2.2 para soportar la adicion de senales en tiempo real (ver signal(7)). Estas llamadas al sistema sustituyen a las antiguas llamadas al sistema del mismo nombre sin el prefijo "rt_". o The select(2) and mmap(2) system calls use five or more arguments, which caused problems in the way argument passing on the i386 used to be set up. Thus, while other architectures have sys_select() and sys_mmap() corresponding to __NR_select and __NR_mmap, on i386 one finds old_select() and old_mmap() (routines that use a pointer to an argument block) instead. These days passing five arguments is not a problem any more, and there is a __NR__newselect that corresponds directly to sys_select() and similarly __NR_mmap2. s390x is the only 64-bit architecture that has old_mmap(). Detalles especificos de la arquitectura: Alpha getxgid(2) retorna un par de GID y GID efectivo a traves de los registros r0 y r20; seproporcionan en lugar de getgid(2) y getegid(2). getxpid(2) devuelve un par de PID y PID padre a traves de los registros r0 y r20; se proporciona en lugar de getpid(2) y getppid(2). old_adjtimex(2) es una variante de adjtimex(2) que utiliza struct timeval32, por compatibilidad con OSF/1. getxuid(2) devuelve un par de GID y GID efectivo a traves de los registros r0 y r20; se proporciona en lugar de getuid(2) y geteuid(2). sethae(2) se utiliza para configurar el registro Host Address Extension en los Alphas de bajo coste con el fin de acceder al espacio de direcciones mas alla de los primeros 27 bits. VEASE TAMBIEN ausyscall(1), intro(2), syscall(2), unimplemented(2), errno(3), libc(7), vdso(7) TRADUCCION La traduccion al espanol de esta pagina del manual fue creada por Juan Jose Lopez Mellado , Juan Piernas y Ivan Robles Esta traduccion es documentacion libre; lea la GNU General Public License Version 3 o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. Si encuentra algun error en la traduccion de esta pagina del manual, envie un correo electronico a . Paginas de manual de Linux 6.06 16 Enero 2024 syscalls(2)