Commit e64a1617 authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Arnd Bergmann

asm-generic: add a generic unistd.h

A new architecture should only define a minimal set of system
calls while still providing the full functionality. This version
of unistd.h has gone through intensive review to make sure that
by default it only enables syscalls that do not already have
a more featureful replacement.

It is modeled after the x86-64 version of unistd.h, which unifies
the syscall number definition and the actual system call table
in a single file, in order to keep them synchronized much more
easily.

This first version still keeps legacy system call definitions
around, guarded by various #ifdefs, and with numbers larger
than 1024. The idea behind this is to make it easier for
new architectures to transition from a full list to the reduced
set. In particular, the new microblaze architecture that should
migrate to using the generic ABI headers can at least use an
existing uClibc source tree without major rewrites during the
conversion.
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parent 6103ec56
...@@ -27,6 +27,7 @@ header-y += termbits.h ...@@ -27,6 +27,7 @@ header-y += termbits.h
header-y += termios.h header-y += termios.h
header-y += types.h header-y += types.h
header-y += ucontext.h header-y += ucontext.h
header-y += unistd.h
unifdef-y += int-l64.h unifdef-y += int-l64.h
unifdef-y += int-ll64.h unifdef-y += int-ll64.h
......
This diff is collapsed.
...@@ -14,6 +14,57 @@ cat << EOF ...@@ -14,6 +14,57 @@ cat << EOF
#include <asm/types.h> #include <asm/types.h>
#include <asm/unistd.h> #include <asm/unistd.h>
/* *at */
#define __IGNORE_open /* openat */
#define __IGNORE_link /* linkat */
#define __IGNORE_unlink /* unlinkat */
#define __IGNORE_mknod /* mknodat */
#define __IGNORE_chmod /* fchmodat */
#define __IGNORE_chown /* fchownat */
#define __IGNORE_mkdir /* mkdirat */
#define __IGNORE_rmdir /* unlinkat */
#define __IGNORE_lchown /* fchownat */
#define __IGNORE_access /* faccessat */
#define __IGNORE_rename /* renameat */
#define __IGNORE_readlink /* readlinkat */
#define __IGNORE_symlink /* symlinkat */
#define __IGNORE_utimes /* futimesat */
#if BITS_PER_LONG == 64
#define __IGNORE_stat /* fstatat */
#define __IGNORE_lstat /* fstatat */
#else
#define __IGNORE_stat64 /* fstatat64 */
#define __IGNORE_lstat64 /* fstatat64 */
#endif
/* CLOEXEC flag */
#define __IGNORE_pipe /* pipe2 */
#define __IGNORE_dup2 /* dup3 */
#define __IGNORE_epoll_create /* epoll_create1 */
#define __IGNORE_inotify_init /* inotify_init1 */
#define __IGNORE_eventfd /* eventfd2 */
#define __IGNORE_signalfd /* signalfd4 */
/* MMU */
#ifndef CONFIG_MMU
#define __IGNORE_madvise
#define __IGNORE_mbind
#define __IGNORE_mincore
#define __IGNORE_mlock
#define __IGNORE_mlockall
#define __IGNORE_munlock
#define __IGNORE_munlockall
#define __IGNORE_mprotect
#define __IGNORE_msync
#define __IGNORE_migrate_pages
#define __IGNORE_move_pages
#define __IGNORE_remap_file_pages
#define __IGNORE_get_mempolicy
#define __IGNORE_set_mempolicy
#define __IGNORE_swapoff
#define __IGNORE_swapon
#endif
/* System calls for 32-bit kernels only */ /* System calls for 32-bit kernels only */
#if BITS_PER_LONG == 64 #if BITS_PER_LONG == 64
#define __IGNORE_sendfile64 #define __IGNORE_sendfile64
...@@ -27,6 +78,22 @@ cat << EOF ...@@ -27,6 +78,22 @@ cat << EOF
#define __IGNORE_fstatat64 #define __IGNORE_fstatat64
#define __IGNORE_fstatfs64 #define __IGNORE_fstatfs64
#define __IGNORE_statfs64 #define __IGNORE_statfs64
#define __IGNORE_llseek
#define __IGNORE_mmap2
#else
#define __IGNORE_sendfile
#define __IGNORE_ftruncate
#define __IGNORE_truncate
#define __IGNORE_stat
#define __IGNORE_lstat
#define __IGNORE_fstat
#define __IGNORE_fcntl
#define __IGNORE_fadvise64
#define __IGNORE_newfstatat
#define __IGNORE_fstatfs
#define __IGNORE_statfs
#define __IGNORE_lseek
#define __IGNORE_mmap
#endif #endif
/* i386-specific or historical system calls */ /* i386-specific or historical system calls */
...@@ -44,7 +111,6 @@ cat << EOF ...@@ -44,7 +111,6 @@ cat << EOF
#define __IGNORE_idle #define __IGNORE_idle
#define __IGNORE_modify_ldt #define __IGNORE_modify_ldt
#define __IGNORE_ugetrlimit #define __IGNORE_ugetrlimit
#define __IGNORE_mmap2
#define __IGNORE_vm86 #define __IGNORE_vm86
#define __IGNORE_vm86old #define __IGNORE_vm86old
#define __IGNORE_set_thread_area #define __IGNORE_set_thread_area
...@@ -55,7 +121,6 @@ cat << EOF ...@@ -55,7 +121,6 @@ cat << EOF
#define __IGNORE_oldlstat #define __IGNORE_oldlstat
#define __IGNORE_oldolduname #define __IGNORE_oldolduname
#define __IGNORE_olduname #define __IGNORE_olduname
#define __IGNORE_umount2
#define __IGNORE_umount #define __IGNORE_umount
#define __IGNORE_waitpid #define __IGNORE_waitpid
#define __IGNORE_stime #define __IGNORE_stime
...@@ -75,9 +140,12 @@ cat << EOF ...@@ -75,9 +140,12 @@ cat << EOF
#define __IGNORE__llseek #define __IGNORE__llseek
#define __IGNORE__newselect #define __IGNORE__newselect
#define __IGNORE_create_module #define __IGNORE_create_module
#define __IGNORE_delete_module
#define __IGNORE_query_module #define __IGNORE_query_module
#define __IGNORE_get_kernel_syms #define __IGNORE_get_kernel_syms
#define __IGNORE_sysfs
#define __IGNORE_uselib
#define __IGNORE__sysctl
/* ... including the "new" 32-bit uid syscalls */ /* ... including the "new" 32-bit uid syscalls */
#define __IGNORE_lchown32 #define __IGNORE_lchown32
#define __IGNORE_getuid32 #define __IGNORE_getuid32
...@@ -99,6 +167,24 @@ cat << EOF ...@@ -99,6 +167,24 @@ cat << EOF
#define __IGNORE_setfsuid32 #define __IGNORE_setfsuid32
#define __IGNORE_setfsgid32 #define __IGNORE_setfsgid32
/* these can be expressed using other calls */
#define __IGNORE_alarm /* setitimer */
#define __IGNORE_creat /* open */
#define __IGNORE_fork /* clone */
#define __IGNORE_futimesat /* utimensat */
#define __IGNORE_getpgrp /* getpgid */
#define __IGNORE_getdents /* getdents64 */
#define __IGNORE_pause /* sigsuspend */
#define __IGNORE_poll /* ppoll */
#define __IGNORE_select /* pselect6 */
#define __IGNORE_epoll_wait /* epoll_pwait */
#define __IGNORE_time /* gettimeofday */
#define __IGNORE_uname /* newuname */
#define __IGNORE_ustat /* statfs */
#define __IGNORE_utime /* utimes */
#define __IGNORE_vfork /* clone */
#define __IGNORE_wait4 /* waitid */
/* sync_file_range had a stupid ABI. Allow sync_file_range2 instead */ /* sync_file_range had a stupid ABI. Allow sync_file_range2 instead */
#ifdef __NR_sync_file_range2 #ifdef __NR_sync_file_range2
#define __IGNORE_sync_file_range #define __IGNORE_sync_file_range
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment