Safe API Framework
Layered API framework for safety-related applications (ERTMS RBC reference targeting CENELEC EN 50128 SIL 4)
Loading...
Searching...
No Matches
sapi_ipc.h File Reference

OS Abstraction Layer - Inter-process/inter-task communication service. More...

Include dependency graph for sapi_ipc.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  sapi_ipc_config_t
 Configuration for sapi_ipc_create(). More...

Typedefs

typedef struct sapi_ipc_impl_s * sapi_ipc_handle_t
 Opaque handle to a created IPC channel, returned by sapi_ipc_create().

Functions

 SAFEAPI_DECLARE_STORAGE (sapi_ipc_storage_t, 64U)
 Caller-owned, fixed-size storage backing one sapi_ipc_handle_t.
sapi_status_t sapi_ipc_create (sapi_ipc_storage_t *storage, const sapi_ipc_config_t *config, sapi_ipc_handle_t *out_handle)
 Creates a bounded message channel.
sapi_status_t sapi_ipc_send (sapi_ipc_handle_t handle, const void *message, size_t message_size, sapi_duration_ms_t timeout_ms)
 Sends one message, blocking at most timeout_ms.
sapi_status_t sapi_ipc_receive (sapi_ipc_handle_t handle, void *out_message, size_t buffer_size, sapi_duration_ms_t timeout_ms)
 Receives one message, blocking at most timeout_ms.
sapi_status_t sapi_ipc_destroy (sapi_ipc_handle_t handle)
 Destroys a message channel.

Detailed Description

OS Abstraction Layer - Inter-process/inter-task communication service.

Bounded message queues/channels between safety tasks. Intended as the transport underneath a future L1 safety communication layer (sequence numbers, timeouts, authentication per EN 50159) - those defenses are out of scope here; this service only guarantees bounded, non-corrupting transport of fixed-size messages. See ADR-001.

REQ-OAL-IPC-001: queues are bounded and statically sized at creation; no unbounded growth. REQ-OAL-IPC-002: send/receive shall accept an explicit timeout and shall never block indefinitely by default.

Definition in file sapi_ipc.h.