Exclusive Monitor: Allow clearing a single processor.

This commit is contained in:
Fernando Sahmkow
2020-03-07 15:07:29 -04:00
committed by MerryMage
parent 2068658a82
commit b5d8b24a3c
2 changed files with 10 additions and 1 deletions

View File

@@ -46,6 +46,8 @@ public:
/// Unmark everything.
void Clear();
/// Unmark processor id
void Clear(size_t processor_id);
private:
bool CheckAndClear(size_t processor_id, VAddr address, size_t size);
@@ -53,7 +55,7 @@ private:
void Lock();
void Unlock();
static constexpr VAddr RESERVATION_GRANULE_MASK = 0xFFFF'FFFF'FFFF'FFF0ull;
static constexpr VAddr RESERVATION_GRANULE_MASK = 0xFFFF'FFFF'FFFF'FFFFull;
static constexpr VAddr INVALID_EXCLUSIVE_ADDRESS = 0xDEAD'DEAD'DEAD'DEADull;
std::atomic_flag is_locked;
std::vector<VAddr> exclusive_addresses;