summaryrefslogtreecommitdiff
path: root/include
AgeCommit message (Collapse)AuthorFilesLines
2021-02-15signal.h: add MTE specific SIGSEGV codes from linux v5.10Szabolcs Nagy1-0/+2
add synchronouse and asynchronous tag check failure codes, see linux commit 74f1082487feb90bbf880af14beb8e29c3030c9f arm64: mte: Add specific SIGSEGV codes
2021-02-15sys/prctl.h: add MTE related constants from linux v5.10Szabolcs Nagy1-0/+7
these are for the aarch64 MTE (memory tagging extension), see linux commit 1c101da8b971a36695319dce7a24711dc567a0dd arm64: mte: Allow user control of the tag check mode via prctl() linux commit af5ce95282dc99d08a27a407a02c763dde1c5558 arm64: mte: Allow user control of the generated random tags via prctl()
2021-02-15elf.h: add NT_ARM_TAGGED_ADDR_CTRL from linux v5.10Szabolcs Nagy1-0/+1
see linux commit 2200aa7154cb7ef76bac93e98326883ba64bfa2e arm64: mte: ptrace: Add NT_ARM_TAGGED_ADDR_CTRL regset
2021-02-15sys/mman.h: add MAP_HUGE_16KB from linux v5.10Szabolcs Nagy1-0/+1
see linux commit e47168f3d1b14af5281cf50c59561d59d28201f9 powerpc/8xx: Support 16k hugepages with 4k pages
2021-02-15sys/mount.h: add MS_NOSYMFOLLOW from linux v5.10Szabolcs Nagy1-0/+1
path resolution does not follow symlinks on nosymfollow mounts (but readlink still does), see linux commit dab741e0e02bd3c4f5e2e97be74b39df2523fc6e Add a "nosymfollow" mount option.
2021-02-15sys/membarrier.h: add new constants from linux v5.10Szabolcs Nagy1-0/+4
can cause rseq restart on another cpu to synchronize with global memory access from rseq critical sections, see linux commit 2a36ab717e8fe678d98f81c14a0b124712719840 rseq/membarrier: Add MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ
2020-11-30implement reallocarrayAriadne Conill1-0/+1
reallocarray is an extension introduced by OpenBSD, which introduces calloc overflow checking to realloc. glibc 2.28 introduced support for this function behind _GNU_SOURCE, while glibc 2.29 allows its usage in _DEFAULT_SOURCE.
2020-11-29netinet/in.h: add IP_RECVERR_4884 from linux v5.9Szabolcs Nagy1-0/+1
see linux commit eba75c587e811d3249c8bd50d22bb2266ccd3c0f icmp: support rfc 4884
2020-11-29sys/fanotify.h: add new FAN_* macros from linux v5.9Szabolcs Nagy1-0/+4
Update fanotify.h, see linux commit 929943b38daf817f2e6d303ea04401651fc3bc05 fanotify: add support for FAN_REPORT_NAME linux commit 83b7a59896dd24015a34b7f00027f0ff3747972f fanotify: add basic support for FAN_REPORT_DIR_FID linux commit 08b95c338e0c5a96e47f4ca314ea1e7580ecb5d7 fanotify: remove event FAN_DIR_MODIFY FAN_DIR_MODIFY that was new in v5.7 is now removed from linux uapi, but kept in musl, so we don't break api, linux cannot reuse the value anyway.
2020-11-29add missing personality valuesWilliam Woodruff1-0/+3
Adds two missing personality(2) personas: UNAME26 and FDPIC_FUNCPTRS. FDPIC_FUNCPTRS was also missing its corresponding PER_LINUX_FDPIC value.
2020-10-28add support for SIGEV_THREAD_ID timersJames Y Knight1-3/+13
This is like SIGEV_SIGNAL, but targeted to a particular thread's tid, rather than the process.
2020-10-14implement _Fork and refactor fork using itRich Felker1-0/+1
the _Fork interface is defined for future issue of POSIX as the outcome of Austin Group issue 62, which drops the AS-safety requirement for fork, and provides an AS-safe replacement that does not run the registered atfork handlers.
2020-09-09netinet/if_ether.h: add ETH_P_MRP from linux v5.8Szabolcs Nagy1-0/+1
Ethernet protocol number for media redundancy protocol, see linux commit 4714d13791f831d253852c8b5d657270becb8b2a bridge: uapi: mrp: Add mrp attributes.
2020-09-09elf.h: add .note.gnu.property related definitionsSzabolcs Nagy1-0/+2
On x86 and aarch64 GNU properties may be used to mark ELF objects.
2020-09-09netinet/tcp.h: update to linux v5.7Szabolcs Nagy1-0/+3
add TCP_NLA_BYTES_NOTSENT and new tcp_zerocopy_receive fields, see linux commit c8856c051454909e5059df4e81c77b9c366c5515 tcp-zerocopy: Return inq along with tcp receive zerocopy. linux commit 33946518d493cdf10aedb4a483f1aa41948a3dab tcp-zerocopy: Return sk_err (if set) along with tcp receive zerocopy. linux commit e08ab0b377a1489760533424437c5f4be7f484a4 tcp: add bytes not sent to SCM_TIMESTAMPING_OPT_STATS
2020-09-09sys/mman.h: add MREMAP_DONTUNMAP from linux v5.7Szabolcs Nagy1-0/+1
it remaps anon mappings without unmapping the original. chromeos plans to use it with userfaultfd, see: linux commit e346b3813067d4b17383f975f197a9aa28a3b077 mm/mremap: add MREMAP_DONTUNMAP to mremap()
2020-09-09sys/fanotify.h: update to linux v5.7Szabolcs Nagy1-1/+3
see linux commit 9e2ba2c34f1922ca1e0c7d31b30ace5842c2e7d1 fanotify: send FAN_DIR_MODIFY event flavor with dir inode and name linux commit 44d705b0370b1d581f46ff23e5d33e8b5ff8ec58 fanotify: report name info for FAN_DIR_MODIFY event
2020-09-09sched.h: add CLONE_NEWTIME from linux v5.6Szabolcs Nagy1-0/+1
reuses a bit from CSIGNAL so it can only be used with unshare and clone3, added in linux commit 769071ac9f20b6a447410c7eaa55d1a5233ef40c ns: Introduce Time Namespace
2020-09-09sys/random.h: add GRND_INSECURE from linux v5.6Szabolcs Nagy1-0/+1
added in linux commit 75551dbf112c992bc6c99a972990b3f272247e23 random: add GRND_INSECURE to return best-effort non-cryptographic bytes
2020-09-09sys/prctl.h: add PR_{SET,GET}_IO_FLUSHER from linux v5.6Szabolcs Nagy1-0/+3
needed for storage drivers with userspace component that may run in the IO path, see linux commit 8d19f1c8e1937baf74e1962aae9f90fa3aeab463 prctl: PR_{G,S}ET_IO_FLUSHER to support controlling memory reclaim
2020-09-09netinet/udp.h: add TCP_ENCAP_ESPINTCP from linux v5.6Szabolcs Nagy1-0/+1
The use of TCP_ in udp.h is not known, fortunately udp.h is not specified by posix so there are no strict namespace rules, added in linux commit e27cca96cd68fa2c6814c90f9a1cfd36bb68c593 xfrm: add espintcp (RFC 8229)
2020-09-09netinet/tcp.h: update for linux v5.6Szabolcs Nagy1-2/+4
TCP_NLA_TIMEOUT_REHASH queries timeout-triggered rehash attempts, tcpm_ifindex limits the scope of TCP_MD5SIG* sockopt to a device. see linux commit 32efcc06d2a15fa87585614d12d6c2308cc2d3f3 tcp: export count for rehash attempts linux commit 6b102db50cdde3ba2f78631ed21222edf3a5fb51 net: Add device index to tcp_md5sig
2020-09-09netinet/in.h: add IPPROTO_ macros from linux v5.6Szabolcs Nagy1-1/+3
add IPPROTO_ETHERNET and IPPROTO_MPTCP, see linux commit 2677625387056136e256c743e3285b4fe3da87bb seg6: fix SRv6 L2 tunnels to use IANA-assigned protocol number linux commit faf391c3826cd29feae02078ca2022d2f912f7cc tcp: Define IPPROTO_MPTCP
2020-09-09netinet/tcp.h: update tcp_info for linux v5.5Szabolcs Nagy1-1/+8
see linux commit 480274787d7e3458bc5a7cfbbbe07033984ad711 tcp: add TCP_INFO status for failed client TFO
2020-08-30fix regression with applications that expect struct winsize in ioctl.hRich Felker3-7/+5
putting the (simple) definition in alltypes.h seems like the best solution here. making sys/ioctl.h implicitly include termios.h is probably excess namespace pollution.
2020-08-24add tcgetwinsize and tcsetwinsize functions, move struct winsizeRich Felker2-7/+10
these have been adopted for future issue of POSIX as the outcome of Austin Group issue 1151, and are simply functions performing the roles of the historical ioctls. since struct winsize is being standardized along with them, its definition is moved to the appropriate header. there is some chance this will break source files that expect struct winsize to be defined by sys/ioctl.h without including termios.h. if this happens, further changes will be needed to have sys/ioctl.h expose it too.
2020-08-17add gettid functionRich Felker1-0/+1
this is a prerequisite for addition of other interfaces that use kernel tids, including futex and SIGEV_THREAD_ID. there is some ambiguity as to whether the semantic return type should be int or pid_t. either way, futex API imposes a contract that the values fit in int (excluding some upper reserved bits). glibc used pid_t, so in the interest of not having gratuitous mismatch (the underlying types are the same anyway), pid_t is used here as well. while conceptually this is a syscall, the copy stored in the thread structure is always valid in all contexts where it's valid to call libc functions, so it's used to avoid the syscall.
2020-03-04remove duplicate definitions of INET[6]_ADDRSTRLENRich Felker2-7/+0
these were leftover from early beginnings when arpa/inet.h was not including netinet/in.h.
2020-02-26add PTHREAD_NULLRich Felker1-0/+3
this is added for POSIX-future as the outcome of Austin Group issue 599. since it's in the reserved namespace for pthread.h, there are no namespace considerations for adding it early.
2020-01-29fix misleading use of _POSIX_VDISABLE in sys/ttydefaults.hRich Felker1-5/+0
_POSIX_VDISABLE is only visible if unistd.h has already been included, so conditional use of it here makes no sense. the value is always 0 anyway; it does not vary.
2020-01-29fix unprotected macro argument in sys/ttydefaults.hRich Felker1-1/+1
2020-01-25move struct dirent to bits header, allow NAME_MAX to varyRich Felker2-12/+4
this is not necessary for linux but is a simple, inexpensive change to make that facilitates ports to systems where NAME_MAX needs to be longer.
2020-01-11define RLIMIT_RTTIME, bump RLIMIT_NLIMITSLeah Neukirchen1-1/+2
This macro exists since Linux 2.6.25 and is defined in glibc since 2011.
2020-01-01unconditonally define alloca as __builtin_allocaMichael Forney1-2/+0
This enables alternative compilers, which may not define __GNUC__, to implement alloca, which is still fairly widely used. This is similar to how stdarg.h already works in musl; compilers must implement __builtin_va_arg, there is no fallback definition.
2020-01-01remove gratuitous aligned attribute from __ptrace_syscall_infoRich Felker1-1/+2
this change was discussed on the mailing list thread for the linux uapi v5.3 patches, and submitted as a v2 patch, but overlooked when I applied the patches much later. revert commit f291c09ec90e2514c954020e9b9bdb30e2adfc7f and apply the v2 as submitted; the net change is just padding. notes by Szabolcs Nagy follow: compared to the linux uapi (and glibc) a padding is used instead of aligned attribute for keeping the layout the same across targets, this means the alignment of the struct may be different on some targets (e.g. m68k where uint64_t is 2 byte aligned) but that should not affect syscalls and this way the abi does not depend on nonstandard extensions.
2019-12-30sys/wait.h: add P_PIDFD from linux v5.4Szabolcs Nagy1-1/+2
allows waiting on a pidfd, in the future it might allow retrieving the exit status by a non-parent process, see linux commit 3695eae5fee0605f316fbaad0b9e3de791d7dfaf pidfd: add P_PIDFD to waitid()
2019-12-30netinet/tcp.h: add new tcp_info fields from linux v5.4Szabolcs Nagy1-0/+2
tcpi_rcv_ooopack for tracking connection quality: linux commit f9af2dbbfe01def62765a58af7fbc488351893c3 tcp: Add TCP_INFO counter for packets received out-of-order tcpi_snd_wnd peer window size for diagnosing tcp performance problems: linux commit 8f7baad7f03543451af27f5380fc816b008aa1f2 tcp: Add snd_wnd to TCP_INFO
2019-12-30sys/prctl.h: add PR_*_TAGGED_ADDR_* from linux v5.4Szabolcs Nagy1-0/+4
per thread prctl commands to relax the syscall abi such that top bits of user pointers are ignored in the kernel. this allows the use of those bits by hwasan or by mte to color pointers and memory on aarch64: linux commit 63f0c60379650d82250f22e4cf4137ef3dc4f43d arm64: Introduce prctl() options to control the tagged user addresses ABI
2019-12-30sys/mman.h: add MADV_COLD and MADV_PAGEOUT from linux v5.4Szabolcs Nagy1-0/+2
These were mainly introduced so android can optimize the memory usage of unused apps. MADV_COLD hints that the memory range is currently not needed (unlike with MADV_FREE the content is not garbage, it needs to be swapped): linux commit 9c276cc65a58faf98be8e56962745ec99ab87636 mm: introduce MADV_COLD MADV_PAGEOUT hints that the memory range is not needed for a long time so it can be reclaimed immediately independently of memory pressure (unlike with MADV_DONTNEED the content is not garbage): linux commit 1a4e58cce84ee88129d5d49c064bd2852b481357 mm: introduce MADV_PAGEOUT
2019-12-30sys/ptrace.h: add PTRACE_GET_SYSCALL_INFO from linux v5.3Szabolcs Nagy1-0/+28
ptrace API to get details of the syscall the tracee is blocked in, see linux commit 201766a20e30f982ccfe36bebfad9602c3ff574a ptrace: add PTRACE_GET_SYSCALL_INFO request the align attribute was used to keep the layout the same across targets e.g. on m68k uint32_t is 2 byte aligned, this helps with compat ptrace.
2019-12-30sys/socket.h: add SO_DETACH_REUSEPORT_BPF from linux v5.3Szabolcs Nagy1-0/+1
see linux commit 99f3a064bc2e4bd5fe50218646c5be342f2ad18c bpf: net: Add SO_DETACH_REUSEPORT_BPF
2019-12-30netinet/if_ether.h: add ETH_P_LLDP from linux v5.3Szabolcs Nagy1-0/+1
see linux commit c54c2c72b2b90a3ba61b8cad032a578ce2bf5b35 net: Add a define for LLDP ethertype
2019-12-30netinet/tcp.h: add TCP_TX_DELAY from linux v5.3Szabolcs Nagy1-0/+1
see linux commit a842fe1425cb20f457abd3f8ef98b468f83ca98b tcp: add optional per socket transmit delay
2019-12-22add uapi guards for new netinet/ip.h conflict with struct iphdrA. Wilcox1-0/+2
This ensures that the musl definition of 'struct iphdr' does not conflict with the Linux kernel UAPI definition of it. Some software, i.e. net-tools, will not compile against 5.4 kernel headers without this patch and the corresponding Linux kernel patch.
2019-12-22adjust utmpx struct layout for time64, 32-/64-bit arch compatRich Felker1-1/+6
since time64 switchover has changed the size and layout of the struct anyway, take the opportunity to fix it up so that it can be shared between 32- and 64-bit ABIs on the same system as long as byte order matches. the ut_type member is explicitly padded to make up for m68k having only 2-byte alignment; explicit padding has no effect on other archs. ut_session is changed from long to int, with endian-matched padding. this affects 64-bit archs as well, but brings the type into alignment with glibc's x86_64 struct, so it should not break software, and does not break on-disk format. the semantic type is int (pid-like) anyway. the padding produces correct alignment for the ut_tv member on 32-bit archs that don't naturally align it, so that ABI matches 64-bit. this type is presently not used anywhere in the ABI between libc and libc consumers; it's only used between pairs of consumers if a third-party utmp library using the system utmpx.h is in use.
2019-12-22fix elf_prstatus regression on time64, existing wrong definition on x32Rich Felker1-4/+3
the elf_prstatus structure is used in core dumps, and the timeval structures in it are longs matching the elf class, *not* the kernel "old timeval" for the arch. this means using timeval here for x32 was always wrong, despite kernel uapi headers and glibc also exposing it this way, and of course it's wrong for any arch with 64-bit time_t. rather than just changing the type on affected archs, use a tagless struct containing long tv_sec and tv_usec members in place of the timevals. this intentionally breaks use of them as timevals (e.g. assignment, passing address, etc.) on 64-bit archs as well so that any usage unsafe for 32-bit archs is caught even in software that only gets tested on 64-bit archs. from what I could gather, there is not any software using these members anyway. the only reason they need to be fixed to begin with is that the only members which are commonly used, the saved registers, follow the time members and have the wrong offset if the time members are sized incorrectly.
2019-12-18fix regression in ioctl definitions provided by arch/generic bitsRich Felker1-0/+1
commit b60fdf133c033d4ad6b04a8237f253563fae5928 broke the SIOCGSTAMP[NS] ioctl fallbacks introduced in commit 2e554617e5a6a41bf3f6c6306c753cd53abf728c, as well as use of these ioctls, by creating a situation where bits/ioctl.h could be included without __LONG_MAX being visible.
2019-12-17signal to kernel headers that time_t is 64-bitRich Felker1-0/+1
linux/input.h and perhaps others use this macro to determine whether the userspace time_t is 64-bit when potentially defining types in terms of time_t and derived structures. the name __USE_TIME_BITS64 is unfortunate; it really should have been in the __UAPI namespace. but this is what was chosen back in v4.16 when first preparing input.h for time64 userspace, presumably based on expectations about what the glibc-internal features.h macro for time64 would be, and changing it now would just put a new minimum version requirement on kernel headers. the __USE_TIME_BITS64 macro is not intended as a public interface. it is purely an internal contract between libc and Linux uapi headers.
2019-11-02move time_t and suseconds_t definitions to common alltypes.h.inRich Felker1-0/+2
now that all 32-bit archs have 64-bit time_t (and suseconds_t), the arch-provided _Int64 macro (long or long long, as appropriate) can be used to define them, and arch-specific definitions are no longer needed.
2019-11-02move time64 socket options from arch bits to top-level sys/socket.hRich Felker1-0/+11
now that all 32-bit archs have 64-bit time types, the values for the time-related socket option macros can be treated as universal for 32-bit archs. the sys/socket.h mechanism for this predates arch/generic and is instead in the top-level header. x32, which does not use the new time64 values of the macros, already has its own overrides, so this commit does not affect it.