You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
752 B
C++
31 lines
752 B
C++
#include "guard.h"
|
|
|
|
#include "../arch/core.h"
|
|
#include "../debug/output.h"
|
|
#include "../object/bbuffer.h"
|
|
#include "../sync/ticketlock.h"
|
|
#include "epilogues.h"
|
|
|
|
#define FOR_CURRENT_CORE [Core::getID()]
|
|
|
|
//! \brief The protected data for the epilogue level
|
|
static Vault global_vault;
|
|
|
|
// lists of pending epilogues
|
|
static BBuffer<Epilogue, 32> epilogue_queue[Core::MAX] = {};
|
|
// Big Kernel Lock (BKL) for the epilogue level
|
|
constinit Ticketlock global_lock;
|
|
constinit bool epi_flag[Core::MAX] = {false};
|
|
|
|
Vault::Vault() {}
|
|
|
|
Guarded::~Guarded() { Guard::leave(); }
|
|
|
|
Guarded Guard::enter() { while (true); }
|
|
|
|
void Guard::leave() {}
|
|
|
|
void Guard::relay(Epilogue handler) { (void)handler; }
|
|
|
|
const Vault &Guard::unsafeConstAccess() { return global_vault; }
|