File SolidSyslogLwipRawMarshal.h¶
FileList > Interface > SolidSyslogLwipRawMarshal.h
#include "SolidSyslogExternC.h"
Detailed Description¶
The marshal seam that pins the library's lwIP Raw API calls to the core-owning thread.
Every lwIP call the Datagram and TcpStream adapters make is routed through a single marshal hop so an integrator can run those calls on the thread that owns the lwIP core. (The numeric Resolver's ipaddr_aton parse touches no core state and is intentionally not marshalled.)
- NO_SYS=1 (bare metal, no RTOS): the default direct-call marshal is correct
-
one execution context, no core to protect.
-
NO_SYS=0 (RTOS with a tcpip thread): the integrator installs a marshal that hops onto that thread - a LOCK_TCPIP_CORE / UNLOCK_TCPIP_CORE pair, or a mailbox post that waits for the callback to run.
The marshal MUST invoke its callback synchronously, before it returns: the wrapper reads results the callback writes immediately after the hop, so an asynchronous marshal is caller error. Core locking satisfies this directly. A mailbox post does not on its own - tcpip_callback_with_block(.., block=1) blocks until the message is accepted, not until it is executed - so such a marshal must wait for completion itself. See docs/platforms/lwipraw/setup.md.
Public Types Documentation¶
SolidSyslogLwipRawCallback¶
The work the marshal must run on the core-owning thread.
SolidSyslogLwipRawMarshalFunction¶
Runs callback(context) on the lwIP core thread; must return only after it has completed (see the file overview).
typedef void(* SolidSyslogLwipRawMarshalFunction) (SolidSyslogLwipRawCallback callback, void *context);
Public Functions Documentation¶
SolidSyslogLwipRaw_SetMarshal¶
Installs the process-global marshal.
One lwIP instance and one tcpip thread per process means a single global slot suffices - same shape as SolidSyslog_SetErrorHandler. NULL restores the direct-call default. Intended for setup-time configuration; not synchronised with concurrent installs.
The documentation for this class was generated from the following file Platform/LwipRaw/Interface/SolidSyslogLwipRawMarshal.h