00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef __TOYVIRTUALMEM_H__
00010 #define __TOYVIRTUALMEM_H__
00011
00012 #ifdef __cplusplus
00013 extern "C" {
00014 #endif
00015
00021 int TMM_PagingEnabled(ToyMM *tmm);
00022
00024 int TMM_GetRealAddress(ToyMM *tmm, int process, int vaddr);
00025
00027 int TMM_GetNumPages(ToyMM *tmm);
00028
00030 int TMM_GetFramedSize(ToyMM *tmm, int size);
00031
00033 int TMM_VirtualToReal(ToyMM *tmm, Process *proc, int vaddr);
00034
00036 int TMM_GetNumFrames(ToyMM *tmm, int length);
00037
00039 void TMM_AssignFrame(ToyMM *tmm, int process, int frame, int page);
00040
00042 void TMM_EmptyFrame(ToyMM *tmm, int frame);
00043
00045 void TMM_FreeFrame(ToyMM *tmm, int process, int page);
00046
00048 int TMM_FindFreeFrame(ToyMM *tmm);
00049
00051 int TMM_FrameFree(ToyMM *tmm, int frame);
00052
00054 struct InvPageTable *TMM_GetFrame(ToyMM *tmm, int frame);
00055
00057 struct PageTable *TMM_GetPage(ToyMM *tmm, int process, int page);
00058
00060 int TMM_PageFree(ToyMM *tmm, int process, int page);
00061
00063 int TMM_CountFreePages(ToyMM *tmm, int process);
00065 void TMM_IncrementLinearScan(ToyMM *tmm);
00067 int TMM_PageSwappedOut(ToyMM *tmm, int process, int page);
00069 int TMM_PageSwappedIn(ToyMM *tmm, int process, int page);
00071 void TMM_MarkPageSwappedOut(ToyMM *tmm,int process,int page);
00073 void TMM_ClearFrameStatus(ToyMM *tmm, int frame);
00075 void TMM_SetFrameStatus(ToyMM *tmm, int frame);
00076
00079 #ifdef __cplusplus
00080 }
00081 #endif
00082
00083 #endif
00084