EntropyEngine::Networking::SharedMemory::SharedMemoryControlBlock
EntropyEngine::Networking::SharedMemory::SharedMemoryControlBlock
Section titled “EntropyEngine::Networking::SharedMemory::SharedMemoryControlBlock”Control block structure placed at the start of each shared memory region. More…
#include <SharedMemoryPlatform.h>
Public Functions
Section titled “Public Functions”| Name | |
|---|---|
| bool | validate() const Validate control block was initialized correctly. |
| void | initializeServer(size_t regionSize) Initialize control block for server. |
Public Attributes
Section titled “Public Attributes”| Name | |
|---|---|
| uint32_t | version Must be <= SHM_VERSION. |
| uint64_t | validationToken Random token for connection validation. |
| uint64_t | totalSize Total region size. |
| std::atomic< uint32_t > | shutdown Shutdown requested. |
| std::atomic< uint32_t > | serverReady Server has initialized region. |
| uint32_t | serverPid Server process ID. |
| std::atomic< uint64_t > | s2cWritePos Server write position. |
| std::atomic< uint32_t > | s2cWakeFlag Wake flag for client. |
| std::atomic< uint64_t > | s2cReadPos Client read position. |
| uint64_t | ringBufferSize Size of each ring buffer. |
| uint32_t | reserved2 Reserved for alignment. |
| uint32_t | reserved1 Reserved for alignment. |
| uint32_t | reserved0 Reserved for alignment. |
| uint8_t[40] | padding2 Pad to 64 bytes. |
| uint8_t[40] | padding1 Pad to 64 bytes. |
| uint8_t[24] | padding0 Pad to 64 bytes. |
| uint32_t | magic Must be SHM_MAGIC. |
| std::atomic< uint32_t > | clientReady Client has connected. |
| uint32_t | clientPid Client process ID (set after connect). |
| std::atomic< uint64_t > | c2sWritePos Client write position. |
| std::atomic< uint32_t > | c2sWakeFlag Wake flag for server. |
| std::atomic< uint64_t > | c2sReadPos Server read position. |
Detailed Description
Section titled “Detailed Description”struct EntropyEngine::Networking::SharedMemory::SharedMemoryControlBlock;Control block structure placed at the start of each shared memory region.
Layout is fixed and must match across all platforms. Structure is organized into cache lines to prevent false sharing:
Cache line 0 [0-63]: Header + connection state (read-mostly) Cache line 1 [64-127]: Server-to-Client ring buffer atomics Cache line 2 [128-191]: Client-to-Server ring buffer atomics Cache line 3 [192-255]: Reserved for future use
Public Functions Documentation
Section titled “Public Functions Documentation”function validate
Section titled “function validate”inline bool validate() constValidate control block was initialized correctly.
Return: true if magic and version are valid
function initializeServer
Section titled “function initializeServer”inline void initializeServer( size_t regionSize)Initialize control block for server.
Parameters:
- regionSize Total size of the shared memory region
Public Attributes Documentation
Section titled “Public Attributes Documentation”variable version
Section titled “variable version”uint32_t version;Must be <= SHM_VERSION.
variable validationToken
Section titled “variable validationToken”uint64_t validationToken;Random token for connection validation.
variable totalSize
Section titled “variable totalSize”uint64_t totalSize;Total region size.
variable shutdown
Section titled “variable shutdown”std::atomic< uint32_t > shutdown;Shutdown requested.
variable serverReady
Section titled “variable serverReady”std::atomic< uint32_t > serverReady;Server has initialized region.
variable serverPid
Section titled “variable serverPid”uint32_t serverPid;Server process ID.
variable s2cWritePos
Section titled “variable s2cWritePos”std::atomic< uint64_t > s2cWritePos;Server write position.
variable s2cWakeFlag
Section titled “variable s2cWakeFlag”std::atomic< uint32_t > s2cWakeFlag;Wake flag for client.
variable s2cReadPos
Section titled “variable s2cReadPos”std::atomic< uint64_t > s2cReadPos;Client read position.
variable ringBufferSize
Section titled “variable ringBufferSize”uint64_t ringBufferSize;Size of each ring buffer.
variable reserved2
Section titled “variable reserved2”uint32_t reserved2;Reserved for alignment.
variable reserved1
Section titled “variable reserved1”uint32_t reserved1;Reserved for alignment.
variable reserved0
Section titled “variable reserved0”uint32_t reserved0;Reserved for alignment.
variable padding2
Section titled “variable padding2”uint8_t[40] padding2;Pad to 64 bytes.
variable padding1
Section titled “variable padding1”uint8_t[40] padding1;Pad to 64 bytes.
variable padding0
Section titled “variable padding0”uint8_t[24] padding0;Pad to 64 bytes.
variable magic
Section titled “variable magic”uint32_t magic;Must be SHM_MAGIC.
variable clientReady
Section titled “variable clientReady”std::atomic< uint32_t > clientReady;Client has connected.
variable clientPid
Section titled “variable clientPid”uint32_t clientPid;Client process ID (set after connect).
variable c2sWritePos
Section titled “variable c2sWritePos”std::atomic< uint64_t > c2sWritePos;Client write position.
variable c2sWakeFlag
Section titled “variable c2sWakeFlag”std::atomic< uint32_t > c2sWakeFlag;Wake flag for server.
variable c2sReadPos
Section titled “variable c2sReadPos”std::atomic< uint64_t > c2sReadPos;Server read position.
Updated on 2026-01-26 at 17:14:35 -0500