summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-12-27Add posix_fallocate on DragonFlyRyan Zoeller
2021-12-24Merge #1547bors[bot]
1547: feat: Add glibc::SOF_TIMESTAMPING_* support r=asomers a=pacak Support for kernel and hardware receive timestamps Co-authored-by: Michael Baikov <manpacket@gmail.com>
2021-12-24Merge #1616bors[bot]
1616: Disable mknod and mknodat tests on DragonFly r=asomers a=rtzoeller Like FreeBSD, DragonFly does not support creating regular files (i.e. `S_IFREG`) with `mknod` or `mknodat`. These tests should be disabled as they always fail. There are still a few other failing tests on DragonFly, but it is unclear to me if they are due to faulty/inapplicable test logic or a bug in DragonFly. Co-authored-by: Ryan Zoeller <rtzoeller@rtzoeller.com>
2021-12-24Disable mknod and mknodat tests on DragonFlyRyan Zoeller
2021-12-24Merge #1614bors[bot]
1614: Improve the sockaddr interface: r=asomers a=asomers * All sockaddr newtypes should be repr(transparent) * All sockaddr newtypes should be opaque, so the user can't do something like change the sa_family field in a way that violates invariants. This is a prerequisite for #1544. Co-authored-by: Alan Somers <asomers@gmail.com>
2021-12-23feat: Add glibc::SOF_TIMESTAMPING_* supportMichael Baikov
2021-12-22Merge #1582bors[bot]
1582: impl Send and Sync for IoVec r=rtzoeller a=asomers Co-authored-by: Alan Somers <asomers@gmail.com>
2021-12-22Merge #1613bors[bot]
1613: Fix clippy warning by adding #[must_use] r=asomers a=rtzoeller Clippy added a lint for non-constructor methods which return `self`, encouraging them to be marked as `#[must_use]`. Mark the methods which are failing with the latest nightly's clippy. ``` $ cargo clippy warning: missing `#[must_use]` attribute on a method returning `Self` --> src/sys/aio.rs:1068:5 | 1068 | / pub fn emplace_slice(mut self, fd: RawFd, offs: off_t, buf: &'a [u8], 1069 | | prio: libc::c_int, sigev_notify: SigevNotify, 1070 | | opcode: LioOpcode) -> Self 1071 | | { ... | 1074 | | self 1075 | | } | |_____^ | = note: `#[warn(clippy::return_self_not_must_use)]` on by default = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#return_self_not_must_use warning: missing `#[must_use]` attribute on a method returning `Self` --> src/sys/aio.rs:1084:5 | 1084 | / pub fn emplace_mut_slice(mut self, fd: RawFd, offs: off_t, 1085 | | buf: &'a mut [u8], prio: libc::c_int, 1086 | | sigev_notify: SigevNotify, opcode: LioOpcode) 1087 | | -> Self ... | 1091 | | self 1092 | | } | |_____^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#return_self_not_must_use warning: `nix` (lib) generated 2 warnings Finished dev [unoptimized + debuginfo] target(s) in 0.01s ``` Co-authored-by: Ryan Zoeller <rtzoeller@rtzoeller.com>
2021-12-22Merge #1537bors[bot]
1537: DragonFly BSD supports `sched_getaffinity()` and `sched_setaffinity()` r=rtzoeller a=rtzoeller Move `CpuSet`, `sched_getaffinity()`, and `sched_setaffinity()` from the `sched_linux_like` namespace to `sched_affinity`. Declare support for DragonFly BSD. `test_sched_affinity()` passes locally on DragonFly BSD. Co-authored-by: Ryan Zoeller <rtzoeller@rtzoeller.com>
2021-12-22Enable sched_get/setaffinity on DragonFly BSDRyan Zoeller
2021-12-22Fix clippy warning on latest nightlyRyan Zoeller
2021-12-22Merge #1581bors[bot]
1581: Add fdatasync for missing platforms r=rtzoeller a=rtzoeller These platforms stub out `fdatasync()` by just calling `fsync()`, but that is a conforming implementation. DragonFly recently provided [an implementation](https://github.com/DragonFlyBSD/DragonFlyBSD/commit/74fa2560ac77f9db4a34b2a7c72450126fec4ed6), but it has not made it into a release or rust-lang/libc. Co-authored-by: Ryan Zoeller <rtzoeller@rtzoeller.com>
2021-12-22Add fdatasync for missing platformsRyan Zoeller
2021-12-22Merge #1567bors[bot]
1567: Recent versions of Android support EPOLLEXCLUSIVE r=rtzoeller a=rtzoeller [Corresponding libc change](https://github.com/rust-lang/libc/commit/36be4cd4f65c326f2a30d3afee50db78c014f07f). Enable the epoll tests on Android, because they are passing. Co-authored-by: Ryan Zoeller <rtzoeller@rtzoeller.com>
2021-12-22Recent versions of Android support EPOLLEXCLUSIVERyan Zoeller
Enable epoll tests on Android, because they are passing.
2021-12-22Merge #1577bors[bot]
1577: DragonFly 6.0 added fexecve(2) r=rtzoeller a=rtzoeller Enable `fexecve()` on DragonFly, as it was added in the 6.0 release. Co-authored-by: Ryan Zoeller <rtzoeller@rtzoeller.com>
2021-12-21Merge #1571bors[bot]
1571: Remove broken newlib support r=rtzoeller a=asomers Nix has never supported a newlib target, but there were a few cfg checks for it in our codebase. Some of them were misspelled (newlibc vs newlib), and some of the checks were wrong. Removing them makes the code much more readable. Co-authored-by: Alan Somers <asomers@gmail.com>
2021-12-21DragonFly 6.0 added fexecve(2)Ryan Zoeller
2021-12-21Merge #1583bors[bot]
1583: Remove unsafe in with_nix_path() for [u8] r=asomers a=rtzoeller Remove use of `unsafe` in the implementation of `with_nix_path()` for `[u8]`. This also comes with a nice determinism win across input sizes, and is fairly performance neutral (slightly slower for small strings, much faster for large strings). I suspect the performance degradation in the existing implementation is related to the following note in the `CStr::from_ptr()` documentation: > Note: This operation is intended to be a 0-cost cast but it is currently implemented with an up-front calculation of the length of the string. This is not guaranteed to always be the case. --- Tested with `cargo 1.57.0-nightly (7fbbf4e8f 2021-10-19)`, with variations of the following benchmarking code: ```rs #[bench] fn bench_with_nix_path_1024(b: &mut test::Bencher) { let bytes = std::hint::black_box([70u8; 1024]); b.iter(|| { bytes.with_nix_path(|cstr| { std::hint::black_box(&cstr); }).unwrap(); }) } ``` | Length | Before Change | After Change | |--------|-----------------------|-----------------------| | 16 | 37 ns/iter (+/- 0) | 44 ns/iter (+/- 0) | | 64 | 39 ns/iter (+/- 0) | 44 ns/iter (+/- 0) | | 256 | 84 ns/iter (+/- 0) | 48 ns/iter (+/- 0) | | 1024 | 232 ns/iter (+/- 1) | 50 ns/iter (+/- 1) | | 4095 | 796 ns/iter (+/- 8) | 62 ns/iter (+/- 2) | Co-authored-by: Ryan Zoeller <rtzoeller@rtzoeller.com>
2021-12-21Improve the sockaddr interface:Alan Somers
* All sockaddr newtypes should be repr(transparent) * All sockaddr newtypes should be opaque, so the user can't do something like change the sa_family field in a way that violates invariants. This is a prerequisite for #1544.
2021-12-21Merge #1611bors[bot]
1611: feature-gate most Nix functions r=rtzoeller a=asomers Using features reduces build time and size for consumer crates. By default all features are enabled. Co-authored-by: Vincent Dagonneau <vincentdagonneau@gmail.com> Co-authored-by: Alan Somers <asomers@gmail.com>
2021-12-21impl Send and Sync for IoVecAlan Somers
2021-12-20Fix merge error in CHANGELOGAlan Somers
2021-12-20try cargo-hack on Redox. It might work.Alan Somers
2021-12-20Use the correct toolchain for cargo-hackAlan Somers
2021-12-20feature-gate most Nix functionsVincent Dagonneau
Using features reduces build time and size for consumer crates. By default all features are enabled.
2021-12-18Merge #1609bors[bot]
1609: Fix warning when running cargo release r=rtzoeller a=rtzoeller `cargo release` is returning the following warning: `WARN cargo_release::config] Negative config values are deprecated ('no_', 'disable_')`. The root cause is `cargo-release` changing its behavior to default to not bumping the version: https://github.com/crate-ci/cargo-release/pull/340. Remove the `no-dev-version flag` from release.toml to match. Co-authored-by: Ryan Zoeller <rtzoeller@rtzoeller.com>
2021-12-17Remove no-dev-version flagRyan Zoeller
2021-12-16(cargo-release) version 0.23.1Alan Somers
2021-12-17Merge #1608bors[bot]
1608: [skip ci] Update cargo-release syntax in the docs r=rtzoeller a=asomers Co-authored-by: Alan Somers <asomers@gmail.com>
2021-12-17Merge #1607bors[bot]
1607: Relax the bitflags dependency from 1.3.1 to 1.1 r=rtzoeller a=asomers Fixes #1555 Co-authored-by: Alan Somers <asomers@gmail.com>
2021-12-16Relax the bitflags dependency from 1.3.1 to 1.1Alan Somers
Fixes #1555
2021-12-16[skip ci] Update cargo-release syntax in the docsAlan Somers
2021-12-15Merge #1561bors[bot]
1561: Declare the MSRV in Cargo.toml r=rtzoeller a=asomers This is a new feature in Cargo 1.56.0, currently in beta. Once Nix's MSRV is >= 1.56.0, this feature will prevent future problems like the bitflags 1.3.0 fiasco. Issue #1491 Issue #1510 Issue #1548 Issue #1555 Co-authored-by: Alan Somers <asomers@gmail.com>
2021-12-15Merge #1606bors[bot]
1606: Test preadv and pwritev on more operating systems r=rtzoeller a=asomers This was an oversight from PR #1511. Also, update the OSX test environment for Big Sur. Big Sur is the first OSX version that supports preadv/pwritev Co-authored-by: Alan Somers <asomers@gmail.com>
2021-12-14Pin the nightly compiler version used with DragonflyBSDAlan Somers
Newer rustc is broken on DragonflyBSD, probably by https://github.com/rust-lang/rust/commit/e68887e67cc6b7bb4ea5113a40eaa4c0831bda13
2021-12-14Update the OSX test environment for Big SurAlan Somers
Big Sur is the first OSX version that supports preadv/pwritev
2021-12-14Test preadv and pwritev on more operating systemsAlan Somers
This was an oversight from PR #1511
2021-12-12Merge #1593bors[bot]
1593: Ensure that MSRV tests do not regress r=asomers a=matklad When testing with older versions of rustc, there's a CI failure mode when our dependency, which used to be compatible with that Rust version, publishes a new version which can't be compiled using that old Rust anymore. That's pretty unfortunate, as that means that third parties can break our CI without any changes to the code in this repo. To protect against that, let's use Cargo.lock on CI, but only when testing against older versions. For stable Rust, we continue to generate Cargo.lock with freshest dependencies. Implementation wise, we save known-good Cargo.lock as `Cargo.lock.msrv`, and just copy that in every relevant CI job. To get a working `Cargo.lock.msrv`, I run `cargo +nightly generate-lockfile -Zminimal-versions` -- that is guaranteed to support the oldest Rust version we can. Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-12-12Merge #1605bors[bot]
1605: clippy cleanup with the latest nightly r=rtzoeller a=asomers Co-authored-by: Alan Somers <asomers@gmail.com>
2021-12-11clippy cleanup with the latest nightlyAlan Somers
2021-12-04Merge #1601bors[bot]
1601: Update `mman` related docs r=rtzoeller a=schctl Added docs for `memfd_create`, `shm_open`, and `shm_unlink`, and some man-page and intra doc links. Co-authored-by: Sachin Cherian <sachinctl@protonmail.com>
2021-12-03Update `mman` related docsSachin Cherian
- Add docs for `memfd_create`, `shm_open`, and `shm_unlink` - Add man-page links - Remove` #[allow(missing_docs)]`on the `memfd` module
2021-12-03Merge #1587bors[bot]
1587: MapFlags::MAP_ALIGNED_SUPER not exposed on FreeBSD due to typo r=asomers a=StephanvanSchaik This fixes a typo in `src/sys/mman.rs` where `MapFlags::MAP_ALIGNED_SUPER` should have been available on FreeBSD, but is not due to a typo. Co-authored-by: S.J.R. van Schaik <stephan@synkhronix.com>
2021-12-02Merge branch 'nix-rust:master' into freebsd-fixS.J.R. van Schaik
2021-11-29Merge #1599bors[bot]
1599: Avoid lock poisoning by using parking_lot r=asomers a=rtzoeller The synchronization primitives in the standard library are not panic-safe, however the `parking_lot` crate provides drop-in replacement primitives which are. Add the `parking_lot` crate as a dev dependency and update the tests to use it. This should make it easier to narrow down which test(s) in a group of tests are actually failing, since the entire group will no longer fail due to poisoning. Co-authored-by: Ryan Zoeller <rtzoeller@rtzoeller.com>
2021-11-27Avoid lock poisoning by using parking_lotRyan Zoeller
parking_lot provides synchronization primitives which aren't poisoned on panic. This makes it easier to determine which tests are failing, as a test failure no longer causes all subsequent tests using that mutex to fail.
2021-11-26Merge #1598bors[bot]
1598: Update doc comment to match type `Option<Signal>` r=asomers a=dario23 This has previously been done for `killpg`, but not `kill` it seems. Co-authored-by: Johannes Schilling <dario@deaktualisierung.org>
2021-11-26Update doc comment to match type `Option<Signal>`Johannes Schilling
This has previously been done for `killpg`, but not `kill` it seems.
2021-11-19Merge #1595bors[bot]
1595: Include tests in the crate again r=asomers a=keszybz …so it is possible to run checks on the crate again. Fixup for 7a2fe9099fc226cf5010b450f473ca9a0db5bafc. Co-authored-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>