aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristofer Jonsson <kristofer.jonsson@arm.com>2021-02-01 11:22:59 +0100
committerKristofer Jonsson <kristofer.jonsson@arm.com>2021-02-01 11:22:59 +0100
commit2cda7fb4fb07a64891767e27eb07a13073f6db2b (patch)
tree39cd330fd89d510f7f00ffc985d8016f433a53c6
parentdc84f4f1668a7c53dfe684ce6beac0bcd559eaec (diff)
downloadethos-u-core-software-2cda7fb4fb07a64891767e27eb07a13073f6db2b.tar.gz
Missing cache maintenance
Add missing cache invalidate before queue header is checked for available messages. Change-Id: Iba1238dddcf6b9771d17c9b9edab3f7594ee59af
-rw-r--r--applications/message_process/src/message_process.cpp10
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;