00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef ZYGOMA_PAGEFRAME_H_
00024 #define ZYGOMA_PAGEFRAME_H_
00025
00026 #include "config.h"
00027
00028 namespace Zygoma
00029 {
00039 class PageFrame
00040 {
00041 public:
00042
00046 PageFrame()
00047 : m_owningTaskId(0)
00048 , m_isLocked(false)
00049 , m_isInvalid(false)
00050 , m_stats(0)
00051 { }
00052
00056 ~PageFrame()
00057 { }
00058
00064 unsigned int
00065 owningTaskId() const
00066 { return m_owningTaskId; }
00067
00073 void
00074 setOwningTaskId(unsigned int taskId)
00075 { m_owningTaskId = taskId; }
00076
00082 bool
00083 isLocked() const
00084 { return m_isLocked; }
00085
00089 void
00090 lock()
00091 { m_isLocked = true; }
00092
00096 void
00097 unlock()
00098 { m_isLocked = false; }
00099
00105 bool
00106 isValid() const
00107 { return m_isInvalid == false; }
00108
00112 void
00113 invalidate()
00114 { m_isInvalid = true; }
00115
00116 private:
00117 PageFrame(const PageFrame&);
00118 PageFrame& operator=(const PageFrame&);
00119
00120 private:
00121 unsigned int m_owningTaskId: 14;
00122 bool m_isLocked: 1;
00123 bool m_isInvalid: 1;
00124 unsigned int m_stats: 16;
00125 } ZYGOMA_PACKED;
00126 }
00127
00128 #endif // ZYGOMA_PAGEFRAME_H_