|
SafeAPI Backend POSIX
POSIX/Linux OAL backend for safeAPIFreamwork
|
Files | |
| sapi_posix_backend.c | |
| Aggregator: registers the POSIX backend with every OAL service in one call (ADR-018 section 2.1). | |
| sapi_posix_backend_channel_service.c | |
| POSIX named-channel adapter. | |
| sapi_posix_backend_ipc.c | |
| POSIX sapi_ipc backend: one pipe() per channel (ADR-018 section 2.2/2.3 - a mutex+condvar ring buffer would not fit sapi_ipc's 64-byte opaque storage on glibc; a pipe lets the kernel own the queue instead). | |
| sapi_posix_backend_log.c | |
| POSIX sapi_log backend: 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"). | |
| sapi_posix_backend_memory.c | |
| POSIX sapi_memory backend: a single fixed-size static byte arena with a per-pool intrusive free list carved out of it at sapi_mem_pool_create() time (ADR-018 section 2.3). | |
| sapi_posix_backend_mutex.c | |
| POSIX sapi_mutex backend: 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 sapi_mutex.h's own doc for why an application must never do so itself. | |
| sapi_posix_backend_netlink.c | |
| POSIX sapi_netlink backend: 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. | |
| sapi_posix_backend_nvm.c | |
| POSIX sapi_nvm backend: 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. | |
| sapi_posix_backend_platform.c | |
| POSIX sapi_platform backend: real-time bring-up for a PREEMPT_RT Linux host (ADR-018, ADR-035). | |
| sapi_posix_backend_reboot.c | |
| POSIX sapi_reboot backend: 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.". | |
| sapi_posix_backend_task.c | |
| POSIX sapi_task backend: one pthread per task (ADR-018 section 2.3). period_ms > 0 runs entry in a nanosleep()-paced loop (relative, EINTR-restartable - not clock_nanosleep(CLOCK_MONOTONIC,...), which is a Linux/glibc extension Darwin's libc does not implement, and this backend targets any POSIX host); period_ms == 0 runs entry once. | |
| sapi_posix_backend_timer.c | |
| POSIX sapi_timer backend: one pthread per timer, sleeping via a relative, EINTR-restartable nanosleep() (ADR-018 section 2.3). | |