|
CMSDK 2.0.1
Cross-platform C++ base library and SDK for the Psyclone AIOS platform
|
Static helpers for request queues and the request-status map (raw shared memory). More...
#include <MemoryRequestQueues.h>
Static Public Member Functions | |
| static bool | InitQueue (char *data, uint32 size) |
| Initialise a queue region of size bytes. | |
| static bool | CheckQueue (char *data, uint32 size) |
| Validate an existing queue region. | |
| static bool | AddToQueue (char *data, DataMessage *msg) |
| Append a copy of msg (caller keeps ownership). | |
| static DataMessage * | GetNextQueueMessage (char *data) |
| Pop the next message. | |
| static bool | InitRequestMap (char *data, uint32 count) |
| Initialise a status map for count requests. | |
| static bool | CheckRequestMap (char *data, uint32 count) |
| Validate an existing status map. | |
| static uint64 | AddNewRequest (char *data, uint16 status, uint32 from, uint32 to) |
| Allocate a request slot. | |
| static bool | SetRequestStatus (char *data, uint64 id, uint16 status) |
| Advance a request's MEMORYREQUEST_* status. | |
| static uint32 | GetRequestStatus (char *data, uint64 id, uint64 &createdTime, uint64 &lastUpdateTime) |
| static bool | CloseRequest (char *data, uint64 id) |
| Release the request slot. | |
Static helpers for request queues and the request-status map (raw shared memory).
Init* lays out a fresh region, Check* validates an existing one; queue functions copy DataMessages in/out (returned messages are caller-owned heap copies). Callers must provide external synchronisation (the request server/connection mutexes).
Definition at line 82 of file MemoryRequestQueues.h.
|
static |
Allocate a request slot.
Definition at line 133 of file MemoryRequestQueues.cpp.
References cmlabs::RequestStatusHeader::bitFieldSize, BITOCCUPIED, cmlabs::RequestStatusHeader::countInUse, cmlabs::RequestStatusHeader::countTotal, cmlabs::RequestStatusEntry::createdTime, cmlabs::RequestStatusEntry::from, cmlabs::utils::GetFirstFreeBitLoc(), cmlabs::GetTimeNow(), cmlabs::RequestStatusEntry::id, cmlabs::RequestStatusEntry::lastUpdateTime, cmlabs::utils::SetBit(), cmlabs::RequestStatusEntry::status, and cmlabs::RequestStatusEntry::to.
Referenced by cmlabs::MemoryRequestConnection::makeRequest().
|
static |
Append a copy of msg (caller keeps ownership).
Definition at line 23 of file MemoryRequestQueues.cpp.
References cmlabs::RequestQueueHeader::count, cmlabs::DataMessage::data, cmlabs::RequestQueueHeader::endPos, cmlabs::DataMessage::getSize(), cmlabs::RequestQueueHeader::padding, cmlabs::RequestQueueHeader::size, and cmlabs::RequestQueueHeader::startPos.
Referenced by cmlabs::MemoryRequestConnection::makeRequest(), and cmlabs::MemoryRequestConnection::replyToRequest().
|
static |
Validate an existing queue region.
Definition at line 18 of file MemoryRequestQueues.cpp.
Referenced by cmlabs::MemoryRequestConnection::makeRequest(), and cmlabs::MemoryRequestConnection::replyToRequest().
|
static |
Validate an existing status map.
Definition at line 128 of file MemoryRequestQueues.cpp.
Referenced by cmlabs::MemoryRequestConnection::connect().
|
static |
Release the request slot.
Definition at line 179 of file MemoryRequestQueues.cpp.
References cmlabs::RequestStatusHeader::bitFieldSize, BITFREE, cmlabs::RequestStatusHeader::countInUse, and cmlabs::utils::SetBit().
Referenced by cmlabs::MemoryRequestConnection::makeRequest(), cmlabs::MemoryRequestConnection::waitForRequestReply(), and cmlabs::MemoryRequestConnection::waitForRequestReply().
|
static |
Pop the next message.
Definition at line 86 of file MemoryRequestQueues.cpp.
References cmlabs::RequestQueueHeader::count, cmlabs::DataMessage::getSize(), cmlabs::RequestQueueHeader::padding, cmlabs::RequestQueueHeader::size, and cmlabs::RequestQueueHeader::startPos.
|
static |
Definition at line 171 of file MemoryRequestQueues.cpp.
References cmlabs::RequestStatusEntry::status.
Referenced by cmlabs::MemoryRequestConnection::getRequestStatus(), and cmlabs::MemoryRequestConnection::replyToRequest().
|
static |
Initialise a queue region of size bytes.
Definition at line 9 of file MemoryRequestQueues.cpp.
References cmlabs::RequestQueueHeader::createdTime, cmlabs::GetTimeNow(), cmlabs::RequestQueueHeader::lastUpdateTime, and cmlabs::RequestQueueHeader::size.
Referenced by cmlabs::MemoryRequestConnection::connect().
|
static |
Initialise a status map for count requests.
Definition at line 108 of file MemoryRequestQueues.cpp.
References cmlabs::RequestStatusHeader::bitFieldSize, BITOCCUPIED, cmlabs::utils::Calc32BitFieldSize(), cmlabs::RequestStatusHeader::countTotal, cmlabs::RequestStatusHeader::createdTime, cmlabs::GetTimeNow(), cmlabs::RequestStatusHeader::lastUpdateTime, cmlabs::utils::SetBit(), and cmlabs::RequestStatusHeader::size.
Referenced by cmlabs::MemoryRequestServer::init().
|
static |
Advance a request's MEMORYREQUEST_* status.
Definition at line 163 of file MemoryRequestQueues.cpp.
References cmlabs::RequestStatusEntry::status.
Referenced by cmlabs::MemoryRequestConnection::makeRequest(), cmlabs::MemoryRequestConnection::replyToRequest(), cmlabs::MemoryRequestConnection::setRequestStatus(), cmlabs::MemoryRequestConnection::waitForRequest(), cmlabs::MemoryRequestConnection::waitForRequestReply(), and cmlabs::MemoryRequestConnection::waitForRequestReply().