[breaking change] Cleanup linux and update MUSL
* Update MUSL kernel headers to 4.4.2 (non-breaking)
* [breaking] `MADV_SOFT_OFFLINE` is not defined on MIPS
* [breaking] `sendmmsg`/`recvmmsg` take an `unsigned int` flag on MUSL
* [breaking] `pthread_t` is a pointer on MUSL
* `rlimit` resources should use a type alias on GNU (non-breaking)
* Deprecate `SIGNUNUSED` (should use SIGSYS instead)
Manually implement extra traits for `mq_attr` and `sockaddr_nl`
Avoid including padding fields in extra trait implementations as these fields aren't guaranteed to be 0 or some other sensible value.
Closes#1302
`nl_pad` field does not contain any actual data, so using it for
comparison or hashing doesn't make sense. Instead manually implement
extra traits ignoring this field.
The `pad` or `__reserved` fields are not always 0 on some platforms,
so when used in the `PartialEq` implementation being used, fails some
comparisons. This commit manually implements the extra traits to
correct this behavior.
Deprecate mach APIs: users should use the `mach` crate instead.
See #981, the mach APIs have breaking changes from MacOSX SDK release to release, and that's pretty much what the users are seeing here. We are currently not exposing that many `mach` APIs in `libc`, so this PR deprecates them, forwarding users to use the `mach` crate instead, which provides the mach user-space APIs, is tested against multiple SDK versions, handles removed/deprecated/breaking API changes/etc. Doing all of that in `libc` feels overkill.
Closes#981 .
Fix android SA_* constants
Trying to crosscompile wait-timeout to armv7-linux-androideabi I found that SA_* had different types in libc, but they have to be the same because they are used in bitwise operations.
Add final rtnetlink constants
This is a follow up to the PR #1351 which is for issue #1059 as it was closed before I realized there's one last set of netlink constants needed for use with rtnetlink. I'm marking this as WIP until I've verified everything's good with CI and that I've included all necessary constants. I'll remove WIP once it's passing CI and it's ready for review.
Change datatype for some IFF_ constants
These were originally added as c_short types, but all other IFF_ constants
are c_int. This commit changes them to match all the other constants for
consistency.
Closes#915
This commits adds a second FreeBSD 12 build job,
and splits the implementation of the FreeBSD module
into two modules, one for FreeBSD 11, and one for FreeBSD 12.
The FreeBSD 11 module is compiled always by default, and is
mostly forward compatible with FreeBSD 12 systems.
The FreeBSD 12 module is only built for now in libc's CI,
and uses FreeBSD 12 data types and APIs, linking to symbols
that are only available in FreeBSD 12.
Basically, when LIBC_CI env variable is defined, and the host
system is a FreeBSD 12 system, then the FreeBSD 12 module is
automatically built and tested. Conditional compilation is done
using a `cfg(freebsd12)` flag.
This commit also re-enables many tests, and documents why
some remain disabled.
These were originally added as c_short types, but all other IFF_ constants
are c_int. This commit changes them to match all the other constants for
consistency.