[common/idd] recovery: reserve IVSHMEM control region

Define a fixed, protocol-independent recovery ABI in the final 64 KiB
of IVSHMEM.

Provide crash-safe multi-client requests and coherent producer status.

Exclude the region from LGMP allocation and frame capacity so future
protocol mismatches retain a stable control path.
This commit is contained in:
Geoffrey McRae
2026-08-11 22:08:34 +10:00
parent 61a49ebaba
commit 9898e9bcec
5 changed files with 285 additions and 6 deletions

View File

@@ -119,7 +119,7 @@ bool CLGMPFrameTransport::Initialize()
void CLGMPFrameTransport::SealMemoryLayout()
{
m_frameMemoryOffset =
m_ivshmem.GetSize() - m_host.Available();
m_ivshmem.GetUsableSize() - m_host.Available();
}
bool CLGMPFrameTransport::Setup(size_t alignSize)
@@ -246,7 +246,7 @@ void CLGMPFrameTransport::DeInit()
FrameMemoryLimits CLGMPFrameTransport::GetMemoryLimits() const
{
FrameMemoryLimits limits;
limits.capacity = m_ivshmem.GetSize();
limits.capacity = m_ivshmem.GetUsableSize();
limits.frameMemoryOffset = m_frameMemoryOffset;
limits.alignment = m_alignSize;
limits.maxFrameSize = m_maxFrameSize;