class DiscardableVmoTracker
Defined at line 51 of file ../../zircon/kernel/vm/include/vm/discardable_vmo_tracker.h
Tracks state relevant for discardable VMOs. This class offers separation of the logic
required for discardable VMO management; the members are still protected by the owning
VmCowPages' lock.
Public Methods
void DiscardableVmoTracker ()
Defined at line 53 of file ../../zircon/kernel/vm/include/vm/discardable_vmo_tracker.h
void ~DiscardableVmoTracker ()
Defined at line 54 of file ../../zircon/kernel/vm/include/vm/discardable_vmo_tracker.h
void DiscardableVmoTracker (const DiscardableVmoTracker & )
Defined at line 56 of file ../../zircon/kernel/vm/include/vm/discardable_vmo_tracker.h
DiscardableVmoTracker & operator= (const DiscardableVmoTracker & )
Defined at line 57 of file ../../zircon/kernel/vm/include/vm/discardable_vmo_tracker.h
void DiscardableVmoTracker (DiscardableVmoTracker && )
Defined at line 58 of file ../../zircon/kernel/vm/include/vm/discardable_vmo_tracker.h
DiscardableVmoTracker & operator= (DiscardableVmoTracker && )
Defined at line 59 of file ../../zircon/kernel/vm/include/vm/discardable_vmo_tracker.h
void InitCowPages (VmCowPages * cow)
Defined at line 61 of file ../../zircon/kernel/vm/include/vm/discardable_vmo_tracker.h
void RemoveFromDiscardableListLocked (Lock<CriticalMutex> & cow_lock)
Remove a discardable object from whichever global discardable list it is in.
Called from the VmCowPages destructor. Also resets the cow_ back reference.
Defined at line 86 of file ../../zircon/kernel/vm/include/vm/discardable_vmo_tracker.h
ktl::pair<zx_status_t, bool> LockDiscardableLocked (Lock<CriticalMutex> &cow_lock,booltry_lock,bool *was_discarded_out)
Lock and unlock functions. Returns ZX_OK if the operation succeeded or an error code
if it failed, along with whether the VMO was moved between the discardable reclaimable
and non-reclaimable lists. The intent of this is to inform the caller if they might need
to update any book-keeping depending on whether the VMO becomes reclaimable or
unreclaimable.
Defined at line 96 of file ../../zircon/kernel/vm/include/vm/discardable_vmo_tracker.h
ktl::pair<zx_status_t, bool> UnlockDiscardableLocked (Lock<CriticalMutex> & cow_lock)
Defined at line 105 of file ../../zircon/kernel/vm/include/vm/discardable_vmo_tracker.h
bool IsEligibleForReclamationLocked (Lock<CriticalMutex> & cow_lock)
Returns whether this object qualifies for reclamation based on whether its state is
kReclaimable.
Defined at line 116 of file ../../zircon/kernel/vm/include/vm/discardable_vmo_tracker.h
bool WasDiscardedLocked (Lock<CriticalMutex> & cow_lock)
Whether the VMO has been discarded and not locked again yet.
Defined at line 122 of file ../../zircon/kernel/vm/include/vm/discardable_vmo_tracker.h
void SetDiscardedLocked (Lock<CriticalMutex> & cow_lock)
Mark the VMO as discarded.
Defined at line 128 of file ../../zircon/kernel/vm/include/vm/discardable_vmo_tracker.h
DiscardablePageCounts DebugDiscardablePageCounts ()
Defined at line 138 of file ../../zircon/kernel/vm/include/vm/discardable_vmo_tracker.h
DiscardableState discardable_state_locked (Lock<CriticalMutex> & cow_lock)
Accessors for private members.
Defined at line 145 of file ../../zircon/kernel/vm/include/vm/discardable_vmo_tracker.h
uint64_t DebugGetLockCount ()
Debug functions exposed for testing.
Defined at line 152 of file ../../zircon/kernel/vm/include/vm/discardable_vmo_tracker.h
bool DebugIsReclaimable ()
Defined at line 155 of file ../../zircon/kernel/vm/include/vm/discardable_vmo_tracker.h
bool DebugIsUnreclaimable ()
Defined at line 158 of file ../../zircon/kernel/vm/include/vm/discardable_vmo_tracker.h
bool DebugIsDiscarded ()
Defined at line 161 of file ../../zircon/kernel/vm/include/vm/discardable_vmo_tracker.h
Enumerations
enum class DiscardableState : uint8_t
| Name | Value |
|---|---|
| kUnset | 0 |
| kReclaimable | 1 |
| kUnreclaimable | 2 |
| kDiscarded | 3 |
See comment near discardable_state_ for details.
Defined at line 67 of file ../../zircon/kernel/vm/include/vm/discardable_vmo_tracker.h