mirror of https://github.com/smol-rs/polling
feat: Add support for Haiku OS
Haiku does not support pipe_with at all, so just fall back to pipe().
This commit is contained in:
parent
9e143a38e1
commit
99a32b7607
|
@ -68,6 +68,9 @@ jobs:
|
|||
- name: Check selected Tier 3 targets
|
||||
if: startsWith(matrix.rust, 'nightly') && matrix.os == 'ubuntu-latest'
|
||||
run: cargo check -Z build-std --target=riscv32imc-esp-espidf
|
||||
- name: Check haiku
|
||||
if: startsWith(matrix.rust, 'nightly') && matrix.os == 'ubuntu-latest'
|
||||
run: cargo check -Z build-std --target x86_64-unknown-haiku
|
||||
|
||||
cross:
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
|
14
src/poll.rs
14
src/poll.rs
|
@ -447,7 +447,9 @@ mod notify {
|
|||
use rustix::fd::{AsFd, AsRawFd, BorrowedFd, OwnedFd, RawFd};
|
||||
use rustix::fs::{fcntl_getfl, fcntl_setfl, OFlags};
|
||||
use rustix::io::{fcntl_getfd, fcntl_setfd, read, write, FdFlags};
|
||||
use rustix::pipe::{pipe, pipe_with, PipeFlags};
|
||||
#[cfg(not(target_os = "haiku"))]
|
||||
use rustix::pipe::pipe_with;
|
||||
use rustix::pipe::{pipe, PipeFlags};
|
||||
|
||||
/// A notification pipe.
|
||||
///
|
||||
|
@ -468,12 +470,18 @@ mod notify {
|
|||
impl Notify {
|
||||
/// Creates a new notification pipe.
|
||||
pub(super) fn new() -> io::Result<Self> {
|
||||
let (read_pipe, write_pipe) = pipe_with(PipeFlags::CLOEXEC).or_else(|_| {
|
||||
let fallback_pipe = |_| {
|
||||
let (read_pipe, write_pipe) = pipe()?;
|
||||
fcntl_setfd(&read_pipe, fcntl_getfd(&read_pipe)? | FdFlags::CLOEXEC)?;
|
||||
fcntl_setfd(&write_pipe, fcntl_getfd(&write_pipe)? | FdFlags::CLOEXEC)?;
|
||||
io::Result::Ok((read_pipe, write_pipe))
|
||||
})?;
|
||||
};
|
||||
|
||||
#[cfg(not(target_os = "haiku"))]
|
||||
let (read_pipe, write_pipe) = pipe_with(PipeFlags::CLOEXEC).or_else(fallback_pipe)?;
|
||||
|
||||
#[cfg(target_os = "haiku")]
|
||||
let (read_pipe, write_pipe) = fallback_pipe(PipeFlags::CLOEXEC)?;
|
||||
|
||||
// Put the reading side into non-blocking mode.
|
||||
fcntl_setfl(&read_pipe, fcntl_getfl(&read_pipe)? | OFlags::NONBLOCK)?;
|
||||
|
|
Loading…
Reference in New Issue