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, bool try_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