FFFF
Skip to content

QNX port (issue #122 step 5): server_qnx facade + caps + wake over the poll floor #131

Description

@enghitalo

Step 5 of the #122 plan of record. Blocked on toolchain access (QNX SDP license + qcc); everything the port needs from the tree already landed, so this is a small, well-bounded change when someone with the SDP picks it up.

Already in place (nothing to redesign)

  • server/backend_poll/ — the pure-POSIX level-triggered reactor QNX rides first (tier 1). It passes the whole behaviour suite on Linux CI under -d vanilla_poll (feat: poll(2) portability-floor backend behind -d vanilla_poll (issue #122 step 4) #126), so the reactor itself is already exercised on every PR.
  • poll/ — the poll(2) wrapper the reactor uses; per-OS wake primitives are documented to land here with their consumer.
  • qnx is a native V OS ident (verified against V master: pref/os.v:24, -os qnx parsed at os.v:93, _qnx.c.v file suffix at should_compile.v:154,306) — zero compiler work needed.
  • The darwin/kqueue facade (server/server_darwin.c.v) is the exact precedent for the facade shape.

Work plan (3 suffix files + recipes, per #122)

  1. server/server_qnx.c.v[OS-suffix] facade: IOBackend{poll = 0} + run_selected_backendrun_poll_backend (mirror of the darwin facade, pointing at the poll floor).
  2. socket/caps_qnx.c.v — comptime capability consts, only those with a consumer at birth (has_so_reuseport = false, max_unix_path).
  3. poll/wake_qnx.c.v — per-OS wake primitive (self-pipe; SIGEV_PULSE/ionotify is tier 2, a separate backend_ionotify/ module ONLY if the poll floor measures short — never $if soup, per the Module tree restructure for multi-protocol + multi-platform growth: hoist the protocol-neutral substrate, rename http_server → server, protocols as sibling top-level modules #122 rule of thumb).
  4. cross/qnx-x86_64.env + cross/qnx-arm64.envv -os qnx -cc qcc recipe, SDP sourcing notes, libsocket vs io-sock link note.
  5. CI: compile-only cross job first (needs SDP secrets or a self-hosted runner); QEMU/VM e2e when available.

Acceptance

  • v -os qnx -cc qcc examples/simple/src compiles against the SDP.
  • vtest behaviour suite green on a QNX target/VM (the same 8 checks the poll floor passes on Linux).
  • UDS (unix_socket_path) exercised — QNX supports AF_UNIX + SCM_RIGHTS.

Refs: #122 (sequencing + platform story), #126 (the poll floor).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    0