/* * Copyright (c) 2020, Tom * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include namespace Kernel { struct DeferredCallEntry { using HandlerFunction = Function; DeferredCallEntry* next; alignas(HandlerFunction) u8 handler_storage[sizeof(HandlerFunction)]; bool was_allocated; HandlerFunction& handler_value() { return *bit_cast(&handler_storage); } void invoke_handler() { handler_value()(); } }; }