/* *ATDPiteratorperformsapre-orderwalkoveraTDPpagingstructure.
*/ struct tdp_iter { /* *Theiteratorwilltraversethepagingstructuretowardsthemapping *forthisGFN.
*/
gfn_t next_last_level_gfn; /* *Thenext_last_level_gfnatthetimewhenthethreadlast *yielded.Onlyyieldingwhenthenext_last_level_gfn!= *yielded_gfnhelpsensureforwardprogress.
*/
gfn_t yielded_gfn; /* Pointers to the page tables traversed to reach the current SPTE */
tdp_ptep_t pt_path[PT64_ROOT_MAX_LEVEL]; /* A pointer to the current SPTE */
tdp_ptep_t sptep; /* The lowest GFN (mask bits excluded) mapped by the current SPTE */
gfn_t gfn; /* Mask applied to convert the GFN to the mapping GPA */
gfn_t gfn_bits; /* The level of the root page given to the iterator */ int root_level; /* The lowest level the iterator should traverse to */ int min_level; /* The iterator's current level within the paging structure */ int level; /* The address space ID, i.e. SMM vs. regular. */ int as_id; /* A snapshot of the value at sptep */
u64 old_spte; /* *Whethertheiteratorhasavalidstate.Thiswillbefalseifthe *iteratorwalksofftheendofthepagingstructure.
*/ bool valid; /* *TrueifKVMdroppedmmu_lockandyieldedinthemiddleofawalk,in *whichcasetdp_iter_next()needstorestartthewalkattheroot *levelinsteadofadvancingtothenextentry.
*/ bool yielded;
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.