Skip to content

QNX: Add ionotify()‑based event driver (avoid poll() fallback) #1902

@agbullen

Description

@agbullen

On QNX, Mio currently uses POSIX polling. QNX provides ionotify() as the native I/O notification mechanism; poll()/select() are layered on top of it. Implementing a QNX backend that uses ionotify() should reduce overhead and close the gap many users observe between Linux and QNX when running Tokio‑based apps.

Proposed scope

New cfg(target_os = "qnx") driver mirroring the epoll/kqueue pattern (state in kernel; readiness‑based).

Feature‑gated integration with Mio’s Poll API (Registration, SetReadiness, Events).

Graceful fallback to existing polling if ionotify() unavailable at runtime (older SDKs).

Acceptance criteria

cargo check on QNX in CI (self‑hosted runner OK).

Parity tests: echo server, UDP, timers, and readiness transitions.

Benchmarks: simple TCP throughput/latency against current polling fallback.

Maintenance plan

At least 2 named maintainers with QNX access; GitHub team can be pinged for OS‑specific issues.

Documented CI recipe (SDK version, toolchain, how to run tests).

Initial stability behind an experimental feature flag for one release cycle.

Tokio runtime event queue model

QNX

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions