SafeAPI Backend POSIX
POSIX/Linux OAL backend for safeAPIFreamwork
Loading...
Searching...
No Matches
File List
Here is a list of all documented files with brief descriptions:
 include
  safeapi
   posix_backend
    
sapi_posix_backend.h
Real POSIX/Linux backend for every OAL service (ADR-018)
    
sapi_posix_backend_channel_service.h
POSIX named-channel adapter
 src
  
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)