Commit Graph
238 Commits
Author SHA1 Message Date
midipixandRich Felker f2c6dbe244 move inclusion of linux headers for kd.h, soundcard.h, vt.h to bits
maintainer's note: while musl does not use the linux kernel headers,
it does provide these three sys/* headers which do nothing but include
the corresponding linux/* headers, since the sys/* versions are the
ones documented for application use (and they arguably provide
interfaces that are not linux-specific but common to other unices).
these headers should probably not be provided by libc (rather by a
separate package), but as long as they are, use the bits header
framework as an aid to out-of-tree ports of musl for non-linux systems
that want to implement them in some other way.
2018-07-20 01:06:41 -04:00
midipixandRich Felker 2fab90a71a remove inclusion guard hacks for sys/kd.h
maintainer's note: at some point, probably long before linux separated
the uapi headers, it was the case, or at least I believed it was the
case, that linux/types.h was unsafe to include from userspace. thus,
the inclusion guard macro _LINUX_TYPES_H was defined in sys/kd.h to
prevent linux/kd.h from including linux/types.h (which it spuriously
includes but does not use). as far as I can tell, whatever problem
this was meant to solve does not seem to have been present for a long
time, and the hack was not done correctly anyway, so removing it is
the right thing to do.
2018-07-20 01:06:03 -04:00
Szabolcs NagyandRich Felker df6d9450ea add support for arch-specific ptrace command macros
sys/ptrace.h is target specific, use bits/ptrace.h to add target
specific macro definitions.

these macros are kept in the generic sys/ptrace.h even though some
targets don't support them:

PTRACE_GETREGS
PTRACE_SETREGS
PTRACE_GETFPREGS
PTRACE_SETFPREGS
PTRACE_GETFPXREGS
PTRACE_SETFPXREGS

so no macro definition got removed in this patch on any target. only
s390x has a numerically conflicting macro definition (PTRACE_SINGLEBLOCK).

the PT_ aliases follow glibc headers, otherwise the definitions come
from linux uapi headers except ones that are skipped in glibc and
there is no real kernel support (s390x PTRACE_*_AREA) or need special
type definitions (mips PTRACE_*_WATCH_*) or only relevant for linux
2.4 compatibility (PTRACE_OLDSETOPTIONS).
2018-07-17 22:25:08 -04:00
Szabolcs NagyandRich Felker 7ea32a8282 sys/ptrace.h: add missing PTRACE_EVENT_STOP
new in linux v3.1 commit 3544d72a0e10d0aa1c1bd59ed77a53a59cdc12f7
changed in linux v3.4 commit 5cdf389aee90109e2e3d88085dea4dd5508a3be7

A tracer recieves this event in the waitpid status of a PTRACED_SEIZED
process.
2018-07-17 22:24:15 -04:00
Rich Felker 062015204a add ST_RELATIME to statvfs.h 2018-07-12 20:41:30 -04:00
Rich Felker 587f5a53bc fix value of SO_PEERSEC on mips archs
adapted from patch by Matthias Schiffer.
2018-06-26 15:55:29 -04:00
Szabolcs NagyandRich Felker 38f2fa3d02 add memfd_create syscall wrapper
memfd_create was added in linux v3.17 and glibc has api for it.
2018-06-20 21:36:04 -04:00
Szabolcs NagyandRich Felker b64d66d0b0 add mlock2 linux syscall wrapper
mlock2 syscall was added in linux v4.4 and glibc has api for it.
It falls back to mlock in case of flags==0, so that case works
even on older kernels.

MLOCK_ONFAULT is moved under _GNU_SOURCE following glibc.
2018-06-20 21:35:45 -04:00
Szabolcs NagyandRich Felker da9f2b2ac8 add speculation control prctls from linux v4.17
PR_{SET,GET}_SPECULATION_CTRL controls speculation related vulnerability
mitigations, new in commits
b617cfc858161140d69cc0b5cc211996b557a1c7
356e4bfff2c5489e016fdb925adbf12a1e3950ee
2018-06-19 13:27:08 -04:00
Szabolcs NagyandRich Felker af55070eae add {MSG,SEM,SHM}_STAT_ANY from linux v4.17
introduced to stat ipc objects without permission checks since the
info is available in /proc/sysvipc anyway, new in linux commits
23c8cec8cf679b10997a512abb1e86f0cedc42ba
a280d6dc77eb6002f269d58cd47c7c7e69b617b6
c21a6970ae727839a2f300cd8dd957de0d0238c3
2018-06-19 13:26:24 -04:00
Szabolcs NagyandRich Felker 156a3bedb2 add MAP_FIXED_NOREPLACE from linux v4.17
to map at a fixed address without unmapping underlying mappings
(fails with EEXIST unlike MAP_FIXED), new in linux commits
4ed28639519c7bad5f518e70b3284c6e0763e650 and
a4ff8e8620d3f4f50ac4b41e8067b7d395056843.
2018-06-19 13:26:00 -04:00
Szabolcs NagyandRich Felker 0f7aa600f7 sys/ptrace.h: add PTRACE_SECCOMP_GET_METADATA from linux v4.16
to get seccomp state for checkpoint restore.
added in linux commit 26500475ac1b499d8636ff281311d633909f5d20

struct tag follows the glibc api and ptrace_peeksiginfo_args
got changed too accordingly.
2018-06-19 13:25:33 -04:00
Szabolcs NagyandRich Felker 29f3202b73 sys/epoll.h: add EPOLLNVAL from linux v4.16
added to uapi in commit 65aaf87b3aa2d049c6b9fd85221858a895df3393
used since commit a9a08845e9acbd224e4ee466f5c1275ed50054e8,
which renamed POLL* to EPOLL* in the kernel.
2018-06-19 13:25:16 -04:00
Hauke MehrtensandRich Felker e206582091 add getrandom syscall wrapper
This syscall is available since Linux 3.17 and was also implemented in
glibc in version 2.25 using the same interfaces.
2018-02-22 19:34:58 -05:00
Szabolcs NagyandRich Felker 121d18d2f2 sys/prctl.h: add new PR_SVE_* macros from linux v4.15
PR_SVE_SET_VL and PR_SVE_GET_VL controls are new in linux commit
2d2123bc7c7f843aa9db87720de159a049839862
related PR_SVE_* macros were added in
7582e22038a266444eb87bc07c372592ad647439
2018-02-22 18:49:34 -05:00
Szabolcs NagyandRich Felker 9b57db3f95 add MAP_SYNC and MAP_SHARED_VALIDATE from linux v4.15
for synchronous page faults, new in linux commit
1c9725974074a047f6080eecc62c50a8e840d050 and
b6fb293f2497a9841d94f6b57bd2bb2cd222da43
note that only targets that use asm-generic/mman.h have this new
flag defined, so undef it on other targets (mips*, powerpc*).
2018-02-22 18:48:58 -05:00
Szabolcs NagyandRich Felker abdaba8616 sys/{mman,shm}.h: add {MAP,SHM}_HUGE_ macros from linux uapi
*_HUGE_SHIFT, *_HUGE_2MB, *_HUGE_1GB are documented in the man page,
so add all of the *_HUGE_* macros from linux uapi.

if MAP_HUGETLB is set, top bits of the mmap flags encode the page size.
see the linux commit aafd4562dfee81a40ba21b5ea3cf5e06664bc7f6

if SHM_HUGETLB is set, top bits of the shmget flags encode the page size.
see the linux commit 4da243ac1cf6aeb30b7c555d56208982d66d6d33

*_HUGE_16GB is defined unsigned to avoid signed left shift ub.
2018-02-22 18:48:12 -05:00
Szabolcs NagyandRich Felker 5431c20040 sys/mman.h: add MADV_WIPEONFORK from linux v4.14
allows zeroing anonymous private pages inherited by a child process.
new in linux commit d2cd9ede6e193dd7d88b6d27399e96229a551b19
2018-02-22 18:45:31 -05:00
Szabolcs NagyandRich Felker 986bc21713 sys/socket.h: add MSG_ZEROCOPY from linux v4.14
MSG_ZEROCOPY socket send flag avoids copy in the kernel
new in linux commit 52267790ef52d7513879238ca9fac22c1733e0e3
SO_ZEROCOPY socket option enables MSG_ZEROCOPY if availale
new in linux commit 76851d1212c11365362525e1e2c0a18c97478e6b
2018-02-22 18:45:24 -05:00
Szabolcs NagyandRich Felker 404097a4ef sys/socket.h: add SOL_TLS from linux v4.13
socket option for kernel TLS support
new in linux commit 3c4d7559159bfe1e3b94df3a657b2cda3a34e218
2018-02-22 18:45:19 -05:00
Szabolcs NagyandRich Felker 709bbf5175 sys/socket.h: add PF_SMC from linux v4.11
add AF_SMC and PF_SMC for the IBM shared memory communication protocol.
new in linux commit ac7138746e14137a451f8539614cdd349153e0c0
(linux socket.h is not in uapi so this update was missed earlier)
2018-02-22 18:45:16 -05:00
Hauke MehrtensandRich Felker b583c5d3b4 add additional uapi guards for Linux kernel header files
With Linux kernel 4.16 it will be possible to guard more parts of the
Linux header files from a libc. Make use of this in musl to guard all
the structures and other definitions from the Linux header files which
are also defined by the header files provided by musl. This will make
it possible to compile source files which include both the libc
headers and the kernel userspace headers.

This extends the definitions done in commit 04983f2272 ("make
netinet/in.h suppress clashing definitions from kernel headers")
2018-01-09 13:08:25 -05:00
Szabolcs NagyandRich Felker c35a8bf456 add SO_ getsockopt options from linux v4.13
SCM_TIMESTAMPING_PKTINFO is new in aad9c8c470f2a8321a99eb053630ce0e199558d6
SO_PEERGROUPS is new in 28b5ba2aa0f55d80adb2624564ed2b170c19519e
2017-11-05 18:41:21 -05:00
Szabolcs NagyandRich Felker 54f04d9991 add new SO_ socket options from linux v4.12
SO_MEMINFO added in linux commit a2d133b1d465016d0d97560b11f54ba0ace56d3e
SO_INCOMING_NAPI_ID added in 6d4339028b350efbf87c61e6d9e113e5373545c9
SO_COOKIE added in 5daab9db7b65df87da26fd8cfa695fb9546a1ddb
2017-11-05 18:41:13 -05:00
Szabolcs NagyandRich Felker d800403032 add TFD_TIMER_CANCEL_ON_SET that timerfd.h was missing
linux commit 575b1967e10a1f3038266244d2c7a3ca6b99fed8 moved timerfd
apis to a new uapi header which showed musl was missing this flag.
2017-11-05 18:40:58 -05:00
Szabolcs NagyandRich Felker 5c596ed867 add SCM_TIMESTAMPING_OPT_STATS and related TCP_ enums from linux v4.10
for tcp timestamp control messages, new in linux commit
1c885808e45601b2b6f68b30ac1d999e10b6f606
and export time measurements via tcp_info, added in linux commit
efd90174167530c67a54273fd5d8369c87f9bd32
2017-11-05 18:39:25 -05:00
Szabolcs NagyandRich Felker a8a8fdff96 add MS_NOREMOTELOCK mount flag from linux v4.9
for handling file locking on overlayfs.
see linux commit c568d68341be7030f5647def68851e469b21ca11
2016-12-29 22:10:44 -05:00
Rich Felker 7352b59d68 remove redundant feature test macro checks in sys/time.h
this header is XSI-shaded itself and thus does not need to limit
specific content to _XOPEN_SOURCE.
2016-11-07 11:49:22 -05:00
Rich Felker 7597fc25a2 fix various header namespace issues under feature-test-macro control
reported and changes suggested by Daniel Sabogal.
2016-10-20 17:20:01 -04:00
Rich Felker 2ed4e9d927 remove parameter names from public headers
inclusion of these names was unintentional and in most cases is a
namespace violation. Daniel Sabogal tracked down and reported these.
2016-10-20 17:04:37 -04:00
Rich Felker 4b8f94c250 fix misspelling of a legacy macro name in sys/param.h 2016-10-20 17:01:56 -04:00
Szabolcs NagyandRich Felker fe39aaae0e add bits/hwcap.h and include it in sys/auxv.h
aarch64, arm, mips, mips64, mipsn32, powerpc, powerpc64 and sh have
cpu feature bits defined in linux for AT_HWCAP auxv entry, so expose
those in sys/auxv.h

it seems the mips hwcaps were never exposed to userspace neither
by linux nor by glibc, but that's most likely an oversight.
2016-10-20 01:28:25 -04:00
Szabolcs NagyandRich Felker 0f8ad40be0 add PF_QIPCRTR, AF_QIPCRTR from linux v4.7 to sys/socket.h
macros for qualcom ip router protocol, new in linux commit
bdabad3e363d825ddf9679dd431cca0b2c30f881
2016-08-30 15:58:20 -04:00
Rich Felker ee3f0c5516 make brace placement in public header typedef'd structs consistent
commit befa5866ee performed this change
for struct definitions that did not also involve typedef, but omitted
the latter.
2016-07-03 16:19:28 -04:00
Rich Felker befa5866ee make brace placement in public header struct definitions consistent
placing the opening brace on the same line as the struct keyword/tag
is the style I prefer and seems to be the prevailing practice in more
recent additions.

these changes were generated by the command:

find include/ arch/*/bits -name '*.h' \
-exec sed -i '/^struct [^;{]*$/{N;s/\n/ /;}' {} +

and subsequently checked by hand to ensure that the regex did not pick
up any false positives.
2016-07-03 15:02:25 -04:00
Rich Felker 093288dcb3 fix misplaced indention in sys/procfs.h 2016-07-03 15:02:24 -04:00
Rich Felker 5c43e1dbc8 add RUSAGE_THREAD (Linux extension) definition to sys/resource.h 2016-06-29 11:55:41 -04:00
Rich Felker b3bbc7b160 fix incorrect definition of RUSAGE_CHILDREN in sys/resource.h
the kernel ABI value for RUSAGE_CHILDREN is -1, not 1. the latter is
actually interpreted as RUSAGE_THREAD, to obtain values for just the
calling thread and not the whole process.
2016-06-29 11:54:03 -04:00
Rich Felker 1e6fc0b690 avoid padding gaps in struct sockaddr_storage
compilers are free not to copy, or in some cases to clobber, padding
bytes in a structure. while it's an aliasing violation, and thus
undefined behavior, to copy or manipulate other sockaddr types using
sockaddr_storage, it seems likely that traditional code attempts to do
so, and the original intent of the sockaddr_storage structure was
probably to allow such usage.

in the interest of avoiding silent and potentially dangerous breakage,
ensure that there are no actual padding bytes in sockaddr_storage by
moving and adjusting the size of the __ss_padding member so that it
fits exactly.

this change also removes a silent assumption that the alignment of
long is equal to its size.
2016-06-09 13:42:06 -04:00
Szabolcs NagyandRich Felker a0bb50a142 update sys/socket.h to linux v4.6
kernel connection multiplexor macros AF_KCM, PF_KCM, SOL_KCM were
added in linux commit ab7ac4eb9832e32a09f4e8042705484d2fb0aad3

MSG_BATCH sendmsg flag for performance optimization was added
in linux commit f092276d85b82504e8a07498f4e9e0c51f06745c

SOL_* macros are now synced with linux socket.h which is not a uapi
header and glibc did not have the macros either, but that has changed
http://sourceware.org/ml/libc-alpha/2016-05/msg00322.html
2016-06-09 13:40:22 -04:00
Szabolcs NagyandRich Felker f6f4aa5ddb add SO_CNX_ADVICE to sys/socket.h, new in linux v4.6
new socket option so application can give advice about routing
path quality of connected udp sockets, added in linux commit
a87cb3e48ee86d29868d3f59cfb9ce1a8fa63314
2016-06-09 13:40:07 -04:00
Rich Felker 81fb75a1d7 fix undefined pointer arithmetic in CMSG_NXTHDR macro
previously, the only way the stopping condition could be met with
correct lengths in the headers invoked undefined behavior, adding
sizeof(struct cmsghdr) beyond the end of the cmsg buffer.

instead, compute and compare sizes rather than pointers.
2016-05-22 18:49:59 -04:00
Szabolcs NagyandRich Felker d578c74e67 add MADV_FREE madvise command from linux v4.5
allows the os to free the marked pages lazily on memory pressure.
expected to increase malloc performance.
new in linux commit 854e9ed09dedf0c19ac8640e91bcc74bc3f9e5c9
2016-03-19 11:31:24 -04:00
Szabolcs NagyandRich Felker b10ca0f560 add EPOLLEXCLUSIVE epoll flag from linux v4.5
new flag for exclusive wakeup mode when an event source fd is attached
to multiple epoll fds but they should not all receive the events.
new in linux commit df0108c5da561c66c333bb46bfe3c1fc65905898
2016-03-19 11:31:19 -04:00
Szabolcs NagyandRich Felker c1aabc6cac add SO_ATTACH_REUSEPORT_[CE]BPF socket options from linux v4.5
new socket options for setting classic or extended BPF program
for sockets in a SO_REUSEPORT group.  added in linux commit
538950a1b7527a0a52ccd9337e3fcd304f027f13
2016-03-19 11:31:13 -04:00
Szabolcs NagyandRich Felker e9f1c7981a deduplicate bits/mman.h
currently five targets use the same mman.h constants and the rest
share most constants too, so move them to sys/mman.h before the
bits/mman.h include where the differences can be corrected by
redefinition of the macros.

this fixes two minor bugs: POSIX_MADV_DONTNEED was wrong on most
targets (it should be the same as MADV_DONTNEED), and sh defined
the x86-only MAP_32BIT mmap flag.
2016-03-18 22:40:28 -04:00
Szabolcs NagyandRich Felker c243d6f095 add new PTRACE_SECCOMP_GET_FILTER ptrace command
allows the tracer to dump the bpf seccomp filters of the tracee,
new in linux v4.4, commit f8e529ed941ba2bbcbf310b575d968159ce7e895
2016-01-26 18:31:17 -05:00
Szabolcs NagyandRich Felker 789ff6a9f8 add MCL_ONFAULT and MLOCK_ONFAULT mlockall and mlock2 flags
they lock faulted pages into memory (useful when a small part of a
large mapped file needs efficient access), new in linux v4.4, commit
b0f205c2a3082dd9081f9a94e50658c5fa906ff1

MLOCK_* is not in the POSIX reserved namespace for sys/mman.h
2016-01-26 18:31:05 -05:00
Szabolcs NagyandRich Felker aaa604052d add new PTRACE_O_SUSPEND_SECCOMP ptrace option
allows a ptracer process to disable/enable seccomp filters of the
traced process, useful for checkpoint/restore, new in v4.3 commit
13c4a90119d28cfcb6b5bdd820c233b86c2b0237
2016-01-26 18:30:30 -05:00
Szabolcs NagyandRich Felker 8afd2a1d03 add new PR_CAP_AMBIENT and related defines to sys/prctl.h
ambient capability mask is new in linux v4.3, commit
58319057b7847667f0c9585b9de0e8932b0fdb08
2016-01-26 18:30:14 -05:00