Concept for a revoker.
More...
#include <hardware_revoker.hh>
template<typename T>
requires(T v) {
{ T::IsAsynchronous } -> std::same_as<const bool &>;
{ v.init() } -> std::same_as<void>;
{ v.system_epoch_get() } -> std::same_as<uint32_t>;
{ v.system_bg_revoker_kick() } -> std::same_as<void>;
} &&
requires(T v, uint32_t epoch) {
{
v.template has_revocation_finished_for_epoch<true>(epoch)
} -> std::same_as<uint32_t>;
{
v.template has_revocation_finished_for_epoch<false>(epoch)
} -> std::same_as<uint32_t>;
} &&
requires(T v,
ptraddr_t addr,
ptraddr_t endAddr,
CHERI::Capability<void> *cap) {
{ v.mark_get(addr) } -> std::same_as<bool>;
{ v.mark_set_one(cap) } -> std::same_as<void>;
{ v.mark_clear_one(addr) } -> std::same_as<void>;
{ v.mark_set_range(cap) } -> std::same_as<void>;
{ v.mark_clear_range(addr, endAddr) } -> std::same_as<void>;
}
Concept for a revoker.
Boards can provide their own definition of this, which must be found in <platform-hardware_revoker.hh> in a path provided by the board include directories.
Definition at line 16 of file hardware_revoker.hh.