diff options
author | Kristofer Jonsson <kristofer.jonsson@arm.com> | 2021-02-01 11:22:59 +0100 |
---|---|---|
committer | Kristofer Jonsson <kristofer.jonsson@arm.com> | 2021-02-01 11:22:59 +0100 |
commit | 2cda7fb4fb07a64891767e27eb07a13073f6db2b (patch) | |
tree | 39cd330fd89d510f7f00ffc985d8016f433a53c6 /applications/message_process/src/message_process.cpp | |
parent | dc84f4f1668a7c53dfe684ce6beac0bcd559eaec (diff) | |
download | ethos-u-core-software-2cda7fb4fb07a64891767e27eb07a13073f6db2b.tar.gz |
Missing cache maintenance
Add missing cache invalidate before queue header is checked for
available messages.
Change-Id: Iba1238dddcf6b9771d17c9b9edab3f7594ee59af
Diffstat (limited to 'applications/message_process/src/message_process.cpp')
-rw-r--r-- | applications/message_process/src/message_process.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/applications/message_process/src/message_process.cpp b/applications/message_process/src/message_process.cpp index 9795c25..84a3742 100644 --- a/applications/message_process/src/message_process.cpp +++ b/applications/message_process/src/message_process.cpp @@ -35,10 +35,14 @@ QueueImpl::QueueImpl(ethosu_core_queue &_queue) : queue(_queue) { } bool QueueImpl::empty() const { + invalidateHeaderData(); + return queue.header.read == queue.header.write; } size_t QueueImpl::available() const { + invalidateHeaderData(); + size_t avail = queue.header.write - queue.header.read; if (queue.header.read > queue.header.write) { @@ -54,14 +58,14 @@ size_t QueueImpl::capacity() const { bool QueueImpl::read(uint8_t *dst, uint32_t length) { const uint8_t *end = dst + length; - uint32_t rpos = queue.header.read; - - invalidateHeaderData(); + // Available will invalidate the cache if (length > available()) { return false; } + uint32_t rpos = queue.header.read; + while (dst < end) { *dst++ = queue.data[rpos]; rpos = (rpos + 1) % queue.header.size; |