diff options
author | David Crocker <dcrocker@eschertech.com> | 2020-12-16 19:08:16 +0300 |
---|---|---|
committer | David Crocker <dcrocker@eschertech.com> | 2020-12-16 19:08:16 +0300 |
commit | 95fcaa1d4264d7a11225b2450f8aee553c66f7d5 (patch) | |
tree | 42e0ab8dad2852b4882223e2947a9ea721de319d /src/Storage/FileWriteBuffer.h | |
parent | b546702e73667a4ca9c42d7a8ef2b2c1b65ef29f (diff) |
File write buffers moved to non-cached memory for SAME70
Diffstat (limited to 'src/Storage/FileWriteBuffer.h')
-rw-r--r-- | src/Storage/FileWriteBuffer.h | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/Storage/FileWriteBuffer.h b/src/Storage/FileWriteBuffer.h index bd3804db..0708f042 100644 --- a/src/Storage/FileWriteBuffer.h +++ b/src/Storage/FileWriteBuffer.h @@ -32,13 +32,17 @@ const size_t FileWriteBufLen = 4096; class FileWriteBuffer { public: +#if SAME70 + FileWriteBuffer(FileWriteBuffer *n, char *storage) noexcept : next(n), index(0), buf(storage) { } +#else FileWriteBuffer(FileWriteBuffer *n) noexcept : next(n), index(0) { } +#endif FileWriteBuffer *Next() const noexcept { return next; } void SetNext(FileWriteBuffer *n) noexcept { next = n; } - char *Data() noexcept { return reinterpret_cast<char *>(data32); } - const char *Data() const noexcept { return reinterpret_cast<const char *>(data32); } + char *Data() noexcept { return buf; } + const char *Data() const noexcept { return buf; } const size_t BytesStored() const noexcept { return index; } const size_t BytesLeft() const noexcept { return FileWriteBufLen - index; } @@ -50,13 +54,17 @@ private: FileWriteBuffer *next; size_t index; - uint32_t data32[FileWriteBufLen / sizeof(uint32_t)]; // 32-bit aligned buffer for better HSMCI performance +#if SAME70 + char *buf; +#else + alignas(4) char buf[FileWriteBufLen]; // 32-bit aligned buffer for better HSMCI performance +#endif }; inline size_t FileWriteBuffer::Store(const char *data, size_t length) noexcept { size_t bytesToStore = min<size_t>(BytesLeft(), length); - memcpy(Data() + index, data, bytesToStore); + memcpy(buf + index, data, bytesToStore); index += bytesToStore; return bytesToStore; } |