CMSDK 2.0.1
Cross-platform C++ base library and SDK for the Psyclone AIOS platform
Loading...
Searching...
No Matches
MemoryRequestQueues.h File Reference

Static algorithms for request queues and the request-status map used by the shared-memory request/reply server. More...

#include "PsyTime.h"
#include "DataMessage.h"
Include dependency graph for MemoryRequestQueues.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  cmlabs::RequestQueueHeader
 Header of one circular request queue; followed by serialized DataMessages between startPos and endPos. More...
struct  cmlabs::RequestStatusHeader
 Header of the request-status table; followed by a bitfield and countTotal RequestStatusEntry records. More...
struct  cmlabs::RequestStatusEntry
 One request transaction's status record. More...
class  cmlabs::MemoryRequestQueues
 Static helpers for request queues and the request-status map (raw shared memory). More...

Namespaces

namespace  cmlabs

Macros

Request lifecycle status values for the request server (RequestStatusEntry::status)
#define MEMORYREQUEST_ERROR   0
 Error/invalid.
#define MEMORYREQUEST_IDLE   1
 Slot unused.
#define MEMORYREQUEST_INIT   2
 Request being composed.
#define MEMORYREQUEST_SUBMITTED   3
 Placed on the server's queue.
#define MEMORYREQUEST_RECEIVED   4
 Dequeued by the server.
#define MEMORYREQUEST_STARTED   5
 Processing started.
#define MEMORYREQUEST_COMPLETED   6
 Processing finished.
#define MEMORYREQUEST_REPLIED   7
 Reply enqueued to the requester.
#define MEMORYREQUEST_REPLYRECEIVED   8
 Requester consumed the reply.
#define MEMORYREQUEST_FINISHED   9
 Transaction closed; slot reclaimable.

Detailed Description

Static algorithms for request queues and the request-status map used by the shared-memory request/reply server.

Provides the raw building blocks for MemoryRequestServer/MemoryRequestConnection: circular DataMessage queues (RequestQueueHeader) and a bitfield-indexed request-status table (RequestStatusHeader/RequestStatusEntry) that tracks each request through the MEMORYREQUEST_* lifecycle. All functions operate on raw mapped addresses; callers coordinate locking.

Warning
Shared-memory layouts; changing any struct here requires a full rebuild of all binaries (make clean && make) — see MemoryManager.h for the ABI warning.

Definition in file MemoryRequestQueues.h.

Macro Definition Documentation

◆ MEMORYREQUEST_COMPLETED

#define MEMORYREQUEST_COMPLETED   6

Processing finished.

Definition at line 30 of file MemoryRequestQueues.h.

◆ MEMORYREQUEST_ERROR

#define MEMORYREQUEST_ERROR   0

◆ MEMORYREQUEST_FINISHED

#define MEMORYREQUEST_FINISHED   9

Transaction closed; slot reclaimable.

Definition at line 33 of file MemoryRequestQueues.h.

◆ MEMORYREQUEST_IDLE

#define MEMORYREQUEST_IDLE   1

Slot unused.

Definition at line 25 of file MemoryRequestQueues.h.

◆ MEMORYREQUEST_INIT

#define MEMORYREQUEST_INIT   2

Request being composed.

Definition at line 26 of file MemoryRequestQueues.h.

Referenced by cmlabs::MemoryRequestConnection::makeRequest().

◆ MEMORYREQUEST_RECEIVED

#define MEMORYREQUEST_RECEIVED   4

Dequeued by the server.

Definition at line 28 of file MemoryRequestQueues.h.

Referenced by cmlabs::MemoryRequestConnection::waitForRequest().

◆ MEMORYREQUEST_REPLIED

#define MEMORYREQUEST_REPLIED   7

Reply enqueued to the requester.

Definition at line 31 of file MemoryRequestQueues.h.

Referenced by cmlabs::MemoryRequestConnection::replyToRequest(), and cmlabs::MemoryRequestServer::UnitTest().

◆ MEMORYREQUEST_REPLYRECEIVED

#define MEMORYREQUEST_REPLYRECEIVED   8

◆ MEMORYREQUEST_STARTED

#define MEMORYREQUEST_STARTED   5

Processing started.

Definition at line 29 of file MemoryRequestQueues.h.

◆ MEMORYREQUEST_SUBMITTED

#define MEMORYREQUEST_SUBMITTED   3