|
RTE OSAdapter POSIX 0.1.0 build 41b3eb3
POSIX/Linux OAL OSAdapter for Platform_RTE
|
| include | |
| rte | |
| posix_osadapter | |
| rte_posix_osadapter.h | Real POSIX/Linux OSAdapter for every OAL service (ADR-018) |
| rte_posix_osadapter_channel_service.h | POSIX named-channel adapter |
| src | |
| rte_posix_osadapter.c | Aggregator: registers the POSIX OSAdapter with every OAL service in one call (ADR-018 section 2.1) |
| rte_posix_osadapter_channel_service.c | POSIX named-channel adapter |
| rte_posix_osadapter_ipc.c | POSIX rte_ipc OSAdapter: one pipe() per channel (ADR-018 section 2.2/2.3 - a mutex+condvar ring buffer would not fit rte_ipc's 64-byte opaque storage on glibc; a pipe lets the kernel own the queue instead) |
| rte_posix_osadapter_lock.c | Bounded wait for a pthread mutex (OSA rule R2), shared by the mutex OSAdapter's lock_timed (REQ-OAL-MUTEX-014) and the memory OSAdapter's pool lock (REQ-OAL-MEM-015). Semantics and the two host variants are documented on posix_osa_lock_bounded() in rte_posix_osadapter_lock.h. Moved here unchanged from rte_posix_osadapter_mutex.c (2026-10-03) so both callers use one implementation |
| rte_posix_osadapter_lock.h | Private helper: a bounded wait for a pthread mutex (OSA rule R2: every wait bounded) |
| rte_posix_osadapter_log.c | POSIX rte_log OSAdapter: non-blocking best-effort write to stderr (ADR-018 section 2.3), matching REQ-OAL-LOG-001 ("best-effort, non-blocking, must never affect caller control flow") |
| rte_posix_osadapter_memory.c | POSIX rte_memory OSAdapter: a single fixed-size static byte arena with a per-pool intrusive free list carved out of it at rte_mem_pool_create() time (ADR-018 section 2.3) |
| rte_posix_osadapter_mutex.c | POSIX rte_mutex OSAdapter: a thin wrapper over pthread_mutex_t (ADR-033, safeAPIFreamwork). This is the ONE file in the whole stack allowed to touch pthread_mutex_* directly - see rte_mutex.h's own doc for why an application must never do so itself |
| rte_posix_osadapter_netlink.c | POSIX rte_netlink OSAdapter: IPv4 UDP sockets. LISTEN binds and learns its one peer from that peer's first HELLO datagram; CONNECT dials and retries HELLO until the peer's HELLO_ACK arrives. Both sides then connect() the datagram socket to its one fixed peer, so ordinary send()/recv() (no *_to/_from) carry every later message - see ADR-027 |
| rte_posix_osadapter_nvm.c | POSIX rte_nvm OSAdapter: one plain file per region, with a whole-region FNV-1a-64 hash trailer recomputed on every write and verified on every read (ADR-018 section 2.3), satisfying REQ-OAL-NVM-001's "every read shall be integrity-checked" via a single trailing hash rather than a redundant-copy vote |
| rte_posix_osadapter_period.c | Pacing of a periodic thread by an absolute CLOCK_MONOTONIC deadline (OSA rule R3), shared by the timer OSAdapter's thread loop and the task OSAdapter's periodic loop, and its wake-up by a stop (OSA rule R2, audit item 7b-1). Semantics, the two host variants, why no wake-up is lost and the known limits are documented in rte_posix_osadapter_period.h. Replaces the per-file ms_to_timespec() / timespec_add_ms() copies of rte_posix_osadapter_timer.c and rte_posix_osadapter_task.c (2026-10-04): before, a non-Linux host slept a fresh relative period after every callback (the period drifted by the callback's run time) and a failed first clock read on Linux started the deadline at 0. Before 7b-1 (2026-10-04) the wait was a clock_nanosleep() (Linux) / nanosleep() (other hosts) that a stop could not interrupt, so stop, suspend and destroy waited up to one period for the thread to see its stop flag |
| rte_posix_osadapter_period.h | Private helper: pacing of a periodic thread by an absolute CLOCK_MONOTONIC deadline (OSA rule R3), and the wake-up of a waiting periodic thread by a stop (OSA rule R2, audit item 7b-1) |
| rte_posix_osadapter_platform.c | POSIX rte_platform OSAdapter: real-time bring-up for a PREEMPT_RT Linux host (ADR-018, ADR-035) |
| rte_posix_osadapter_poll.h | Private helpers: millisecond waits for poll()'s int timeout argument |
| rte_posix_osadapter_random.c | POSIX rte_random OSAdapter: the kernel CSPRNG via getentropy() (Linux glibc 2.25+, macOS 10.12+) |
| rte_posix_osadapter_reboot.c | POSIX rte_reboot OSAdapter: execv() re-exec of the current binary (ADR-018 section 2.3), resolved portably per-OS since there is no single POSIX-standard way to ask "what is my own executable path." |
| rte_posix_osadapter_report.h | Private helper: reports a real-time attribute this OSAdapter could not apply (OSA rules R1/R2/R6) |
| rte_posix_osadapter_sockbuf.c | Socket buffer sizes of a link config (OSA rules R5, R6; Platform_RTE REQ-OAL-NETLINK-015), shared by the netlink OSAdapter (at open) and the channel service OSAdapter (at every socket (re)init). Semantics are documented on posix_socket_apply_buffers() in rte_posix_osadapter_sockbuf.h |
| rte_posix_osadapter_sockbuf.h | Private helper: applies the socket buffer sizes of a link config (OSA rules R5, R6) |
| rte_posix_osadapter_socket.c | POSIX implementation of the raw OS socket layer (rte_os_socket_ops_t) |
| rte_posix_osadapter_task.c | POSIX rte_task OSAdapter: one pthread per task (ADR-018 section 2.3). period_ms > 0 runs entry in a loop paced by an absolute CLOCK_MONOTONIC deadline; period_ms == 0 runs entry once |
| rte_posix_osadapter_timer.c | POSIX rte_timer OSAdapter: one pthread per timer, paced by an absolute CLOCK_MONOTONIC deadline (ADR-018 section 2.3) |