// PART OF THE MACHINE SIMULATION. DO NOT CHANGE. package nachos.machine; import nachos.machine.*; /** * A single translation between a virtual page and a physical page. */ public final class TranslationEntry { /** * Allocate a new invalid translation entry. */ public TranslationEntry() { valid = false; } /** * Allocate a new translation entry with the specified initial state. * * @param vpn the virtual page numben. * @param ppn the physical page number. * @param valid the valid bit. * @param readOnly the read-only bit. * @param used the used bit. * @param dirty the dirty bit. */ public TranslationEntry(int vpn, int ppn, boolean valid, boolean readOnly, boolean used, boolean dirty) { this.vpn = vpn; this.ppn = ppn; this.valid = valid; this.readOnly = readOnly; this.used = used; this.dirty = dirty; } /** * Allocate a new translation entry, copying the contents of an existing * one. * * @param entry the translation entry to copy. */ public TranslationEntry(TranslationEntry entry) { vpn = entry.vpn; ppn = entry.ppn; valid = entry.valid; readOnly = entry.readOnly; used = entry.used; dirty = entry.dirty; } /** The virtual page number. */ public int vpn; /** The physical page number. */ public int ppn; /** * If this flag is <tt>false</tt>, this translation entry is ignored. */ public boolean valid; /** * If this flag is <tt>true</tt>, the user pprogram is not allowed to * modify the contents of this virtual page. */ public boolean readOnly; /** * This flag is set to <tt>true</tt> every time the page is read or written * by a user program. */ public boolean used; /** * This flag is set to <tt>true</tt> every time the page is written by a * user program. */ public boolean dirty; }