From 4a18caf2451fa4ee960dca0b7675bf216733c8ea Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Tue, 14 Jun 2022 18:39:03 -0700 Subject: [PATCH] ircd::vg: Add template convenience defined(); improve call interface. --- include/ircd/vg.h | 31 ++++++++++++++++++++++++------- ircd/vg.cc | 15 ++++++++------- 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/include/ircd/vg.h b/include/ircd/vg.h index be81c3fd4..4d77a6003 100644 --- a/include/ircd/vg.h +++ b/include/ircd/vg.h @@ -15,16 +15,33 @@ namespace ircd::vg { extern const bool active; - size_t errors() noexcept; - bool defined(const const_buffer &) noexcept; - void set_defined(const const_buffer &) noexcept; - void set_undefined(const const_buffer &) noexcept; - void set_noaccess(const const_buffer &) noexcept; + [[gnu::hot]] size_t errors() noexcept; + [[gnu::hot]] bool defined(const void *, const size_t) noexcept; + template bool defined(const T *const &, const size_t & = sizeof(T)); + bool defined(const const_buffer &); + + void set_defined(const const_buffer) noexcept; + void set_undefined(const const_buffer) noexcept; + void set_noaccess(const const_buffer) noexcept; } namespace ircd::vg::stack { - uint add(const mutable_buffer &) noexcept; - void del(const uint &id) noexcept; + uint add(const mutable_buffer) noexcept; + void del(const uint id) noexcept; +} + +inline bool +ircd::vg::defined(const const_buffer &buf) +{ + return vg::defined(data(buf), size(buf)); +} + +template +inline bool +ircd::vg::defined(const T *const &t, + const size_t &size) +{ + return vg::defined(static_cast(t), size); } diff --git a/ircd/vg.cc b/ircd/vg.cc index d05db0a30..ba882955d 100644 --- a/ircd/vg.cc +++ b/ircd/vg.cc @@ -14,7 +14,7 @@ [[gnu::visibility("protected")]] void -ircd::vg::set_noaccess(const const_buffer &buf) +ircd::vg::set_noaccess(const const_buffer buf) noexcept { #ifdef HAVE_VALGRIND_MEMCHECK_H @@ -24,7 +24,7 @@ noexcept [[gnu::visibility("protected")]] void -ircd::vg::set_undefined(const const_buffer &buf) +ircd::vg::set_undefined(const const_buffer buf) noexcept { #ifdef HAVE_VALGRIND_MEMCHECK_H @@ -34,7 +34,7 @@ noexcept [[gnu::visibility("protected")]] void -ircd::vg::set_defined(const const_buffer &buf) +ircd::vg::set_defined(const const_buffer buf) noexcept { #ifdef HAVE_VALGRIND_MEMCHECK_H @@ -44,11 +44,12 @@ noexcept [[gnu::visibility("protected")]] bool -ircd::vg::defined(const const_buffer &buf) +ircd::vg::defined(const void *const ptr, + const size_t size) noexcept { #ifdef HAVE_VALGRIND_MEMCHECK_H - return VALGRIND_CHECK_MEM_IS_DEFINED(data(buf), size(buf)) == 0; + return VALGRIND_CHECK_MEM_IS_DEFINED(ptr, size) == 0; #else return true; #endif @@ -82,7 +83,7 @@ ircd::vg::active{[]() -> bool [[gnu::visibility("protected")]] void -ircd::vg::stack::del(const uint &id) +ircd::vg::stack::del(const uint id) noexcept { #ifdef HAVE_VALGRIND_MEMCHECK_H @@ -92,7 +93,7 @@ noexcept [[gnu::visibility("protected")]] uint -ircd::vg::stack::add(const mutable_buffer &buf) +ircd::vg::stack::add(const mutable_buffer buf) noexcept { #ifdef HAVE_VALGRIND_MEMCHECK_H