summaryrefslogtreecommitdiff
path: root/arch/i386/bits/syscall.h
AgeCommit message (Collapse)AuthorLines
2016-05-12deduplicate __NR_* and SYS_* syscall number definitionsBobby Bingham-760/+0
2016-03-19add copy_file_range syscall numbers from linux v4.5Szabolcs Nagy-0/+2
it was introduced for offloading copying between regular files in linux commit 29732938a6289a15e907da234d6692a2ead71855 (microblaze and sh does not yet have the syscall number.)
2016-01-26add mlock2 syscall number from linux v4.4Szabolcs Nagy-0/+2
this is mlock with a flags argument, new in linux commit a8ca5d0ecbdde5cc3d7accacbd69968b0c98764e as usual microblaze and sh don't have allocated syscall number yet.
2016-01-26add new membarrier, userfaultfd and switch_endian syscallsSzabolcs Nagy-0/+4
new in linux v4.3 added for aarch64, arm, i386, mips, or1k, powerpc, x32 and x86_64. membarrier is a system wide memory barrier, moves most of the synchronization cost to one side, new in kernel commit 5b25b13ab08f616efd566347d809b4ece54570d1 userfaultfd is useful for qemu and is new in kernel commit 8d2afd96c20316d112e04d935d9e09150e988397 switch_endian is powerpc only for switching endianness, new in commit 529d235a0e190ded1d21ccc80a73e625ebcad09b
2016-01-26add new i386 socket syscall numbersSzabolcs Nagy-0/+30
new in linux v4.3 commit 9dea5dc921b5f4045a18c63eb92e84dc274d17eb direct calls instead of socketcall allow better seccomp filtering. musl continues to use socketcalls internally on i386. (older kernels would need a fallback mechanism if the direct calls were used.)
2015-02-09add syscall numbers for the new execveat syscallSzabolcs Nagy-0/+2
this syscall allows fexecve to be implemented without /proc, it is new in linux v3.19, added in commit 51f39a1f0cea1cacf8c787f652f26dfee9611874 (sh and microblaze do not have allocated syscall numbers yet) added a x32 fix as well: the io_setup and io_submit syscalls are no longer common with x86_64, so use the x32 specific numbers.
2014-12-23add new syscall numbers for bpf and kexec_file_loadSzabolcs Nagy-0/+2
these syscalls are new in linux v3.18, bpf is present on all supported archs except sh, kexec_file_load is only allocted for x86_64 and x32 yet. bpf was added in linux commit 99c55f7d47c0dc6fc64729f37bf435abf43f4c60 kexec_file_load syscall number was allocated in commit f0895685c7fd8c938c91a9d8a6f7c11f22df58d2
2014-10-08add new syscall numbers for seccomp, getrandom, memfd_createSzabolcs Nagy-0/+6
these syscalls are new in linux v3.17 and present on all supported archs except sh. seccomp was added in commit 48dc92b9fc3926844257316e75ba11eb5c742b2c it has operation, flags and pointer arguments (if flags==0 then it is the same as prctl(PR_SET_SECCOMP,...)), the uapi header for flag definitions is linux/seccomp.h getrandom was added in commit c6e9d6f38894798696f23c8084ca7edbf16ee895 it provides an entropy source when open("/dev/urandom",..) would fail, the uapi header for flags is linux/random.h memfd_create was added in commit 9183df25fe7b194563db3fec6dc3202a5855839c it allows anon mmap to have an fd, that can be shared, sealed and needs no mount point, the uapi header for flags is linux/memfd.h
2014-07-20add syscall numbers for the new renameat2 syscallSzabolcs Nagy-0/+2
it's like rename but with flags eg. to allow atomic exchange of two files, introduced in linux 3.15 commit 520c8b16505236fc82daa352e6c5e73cd9870cff
2014-05-30add sched_{get,set}attr syscall numbers and SCHED_DEADLINE macroSzabolcs Nagy-0/+4
linux 3.14 introduced sched_getattr and sched_setattr syscalls in commit d50dde5a10f305253cbc3855307f608f8a3c5f73 and the related SCHED_DEADLINE scheduling policy in commit aab03e05e8f7e26f51dee792beddcb5cca9215a5 but struct sched_attr "extended scheduling parameters data structure" is not yet exported to userspace (necessary for using the syscalls) so related uapi definitions are not added yet.
2013-09-26add missing i386 syscall numbersRich Felker-0/+10
somehow the range 335-339 was missed when updating the file.
2013-04-01add syscall numbers for the new kcmp and finit_module syscallsSzabolcs Nagy-0/+4
and remove syscall todos from microblaze
2012-09-08syscall organization overhaulRich Felker-286/+0
now public syscall.h only exposes __NR_* and SYS_* constants and the variadic syscall function. no macros or inline functions, no __syscall_ret or other internal details, no 16-/32-bit legacy syscall renaming, etc. this logic has all been moved to src/internal/syscall.h with the arch-specific parts in arch/$(ARCH)/syscall_arch.h, and the amount of arch-specific stuff has been reduced to a minimum. changes still need to be reviewed/double-checked. minimal testing on i386 and mips has already been performed.
2012-09-08add acct, accept4, setns, and dup3 syscalls (linux extensions)Rich Felker-0/+3
based on patch by Justin Cormack
2012-09-02avoid "inline" in public headers for strict c89 compatibilityRich Felker-14/+14
while musl itself requires a c99 compiler, some applications insist on being compiled with c89 compilers, and use of "inline" in the headers was breaking them. much of this had been avoided already by just skipping the inline keyword in pre-c99 compilers or modes, but this new unified solution is cleaner and may/should result in better code generation in the default gcc configuration.
2012-08-09add defines for number of sigset_t bytes syscalls expectRich Felker-0/+2
yet another gratuitous mips incompatibility...
2012-06-23update syscall defs to latest kernel onesRich Felker-0/+16
patch submitted by Kristian L. <email@thexception.net>
2012-04-04work around nasty gcc bug in the i386 syscall asmRich Felker-4/+4
when the "r" (register) constraint is used to let gcc choose a register, gcc will sometimes assign the same register that was used for one of the other fixed-register operands, if it knows the values are the same. one common case is multiple zero arguments to a syscall. this horribly breaks the intended usage, which is swapping the GOT pointer from ebx into the temp register and back to perform the syscall. presumably there is a way to fix this with advanced usage of register constaints on the inline asm, but having bad memories about hellish compatibility issues with different gcc versions, for the time being i'm just going to hard-code specific registers to be used. this may hurt the compiler's ability to optimize, but it will fix serious miscompilation issues. so far the only function i know what compiled incorrectly is getrlimit.c, and naturally the bug only applies to shared (PIC) builds, but it may be more extensive and may have gone undetected..
2012-01-20add prlimit syscall wrapperRich Felker-0/+2
2011-09-21update syscalls with off_t arguments to handle argument alignment, if neededRich Felker-1/+2
the arm syscall abi requires 64-bit arguments to be aligned on an even register boundary. these new macros facilitate meeting the abi requirement without imposing significant ugliness on the code.
2011-06-14__syscall5 inline is having trouble with PIC; just use the function for nowRich Felker-0/+7
2011-04-20add syscall wrappers for posix_fadvise, posix_fallocateRich Felker-0/+4
2011-04-17overhaul pthread cancellationRich Felker-1/+3
this patch improves the correctness, simplicity, and size of cancellation-related code. modulo any small errors, it should now be completely conformant, safe, and resource-leak free. the notion of entering and exiting cancellation-point context has been completely eliminated and replaced with alternative syscall assembly code for cancellable syscalls. the assembly is responsible for setting up execution context information (stack pointer and address of the syscall instruction) which the cancellation signal handler can use to determine whether the interrupted code was in a cancellable state. these changes eliminate race conditions in the previous generation of cancellation handling code (whereby a cancellation request received just prior to the syscall would not be processed, leaving the syscall to block, potentially indefinitely), and remedy an issue where non-cancellable syscalls made from signal handlers became cancellable if the signal handler interrupted a cancellation point. x86_64 asm is untested and may need a second try to get it right.
2011-03-28fix bug from syscall overhaul: extra __syscall_ret call for 0-arg syscallsRich Felker-1/+1
this mainly just caused bloat, but could corrupt errno if a 0-arg syscall ever failed.
2011-03-19honor namespace for i386 syscall.h, even though it's not a standard headerRich Felker-50/+50
2011-03-19syscall overhaul part two - unify public and internal syscall interfaceRich Felker-0/+131
with this patch, the syscallN() functions are no longer needed; a variadic syscall() macro allows syscalls with anywhere from 0 to 6 arguments to be made with a single macro name. also, manually casting each non-integer argument with (long) is no longer necessary; the casts are hidden in the macros. some source files which depended on being able to define the old macro SYSCALL_RETURNS_ERRNO have been modified to directly use __syscall() instead of syscall(). references to SYSCALL_SIGSET_SIZE and SYSCALL_LL have also been changed. x86_64 has not been tested, and may need a follow-up commit to fix any minor bugs/oversights.
2011-03-19overhaul syscall interfaceRich Felker-0/+810
this commit shuffles around the location of syscall definitions so that we can make a syscall() library function with both SYS_* and __NR_* style syscall names available to user applications, provides the syscall() library function, and optimizes the code that performs the actual inline syscalls in the library itself. previously on i386 when built as PIC (shared library), syscalls were incurring bus lock (lock prefix) overhead at entry and exit, due to the way the ebx register was being loaded (xchg instruction with a memory operand). now the xchg takes place between two registers. further cleanup to arch/$(ARCH)/syscall.h is planned.