add remaining pktinfo consts/structs for the other BSDs
This continues the work from https://github.com/rust-lang/libc/pull/980, adding a more complete set of supported platforms for the "I want to know what destination this UDP packet had" problem.
Fix undefined-behavior on MacOSX structs in stdbuilds
Some MacOSX structs have an incorrect layout that results in undefined behavior. This is because on `x86_64` the MacOSX kernel headers define these using `#pragma pack 4`.
This PR fixes their layout using `repr(packed(4))` . Since it is only available on nightly, it is only enabled for stdbuilds .
Make netlink struct fields public
I realized my netlink structs were a bit unusable if their fields are not public 🤦♂️
Follow up and improvement to #922
Add PTHREAD_*_MUTEX_INITIALIZER_NP for glibc
`pthread_mutex_t` varies across architectures, in several ways:
- endianness alters the ordering of bytes, since the contents of the
struct are larger than 8-bit.
- its length varies.
- the location of the mutex kind (`PTHREAD_MUTEX_RECURSIVE`,
`PTHREAD_MUTEX_ERRORCHECK` or `PTHREAD_MUTEX_ADAPTIVE_NP`) varies
between 32-bit and 64-bit: On 32-bit architectures, it is preceded by
three int/unsigned int, while on 64-bit architectures, it is preceded
by four of them.
These initializers are only available from <pthread.h> when _GNU_SOURCE
is defined.
`pthread_mutex_t` varies across architectures, in several ways:
- endianness alters the ordering of bytes, since the contents of the
struct are larger than 8-bit.
- its length varies.
- the location of the mutex kind (`PTHREAD_MUTEX_RECURSIVE`,
`PTHREAD_MUTEX_ERRORCHECK` or `PTHREAD_MUTEX_ADAPTIVE_NP`) varies
between 32-bit and 64-bit: On 32-bit architectures, it is preceded by
three int/unsigned int, while on 64-bit architectures, it is preceded
by four of them.
These initializers are only available from <pthread.h> when _GNU_SOURCE
is defined.
Relax the cfg_if check in ci/style.rs to allow #[cfg(target_endian)]
tests.