From 60d2f04c1451a30f7e7cbcc0f01dd23582e28611 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Thu, 9 Jul 2020 17:06:26 -0700 Subject: [PATCH] ircd::buffer: Add pointer alignment check tool to suite. --- include/ircd/buffer/buffer.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/include/ircd/buffer/buffer.h b/include/ircd/buffer/buffer.h index b81385f4f..75e546680 100644 --- a/include/ircd/buffer/buffer.h +++ b/include/ircd/buffer/buffer.h @@ -61,6 +61,7 @@ namespace ircd::buffer // Misc utils constexpr size_t padding(const size_t &size, const size_t &alignment); constexpr size_t pad_to(const size_t &size, const size_t &alignment); + bool aligned(const void *const &, const size_t &alignment); // Single buffer iteration of contents template const it &begin(const buffer &buffer); @@ -329,7 +330,7 @@ ircd::buffer::aligned(const buffer &buffer, const size_t &a) { return likely(a)? - uintptr_t(data(buffer)) % a == 0 && padded(buffer, a): + aligned(data(buffer), a) && padded(buffer, a): true; } @@ -442,6 +443,13 @@ ircd::buffer::begin(const buffer &buffer) return get<0>(buffer); } +inline bool +ircd::buffer::aligned(const void *const &ptr, + const size_t &alignment) +{ + return uintptr_t(ptr) % alignment == 0; +} + constexpr size_t ircd::buffer::pad_to(const size_t &size, const size_t &alignment)