Main Page   Modules   Alphabetical List   Data Structures   File List   Data Fields  

ToyMem_Internal.h

00001 /***************************************************************************
00002                           ToyMem_Internal.h  - Contains function headers
00003     that only ToyMem.c use.
00004                              -------------------
00005     begin                : Sat Jan 25 2003
00006     copyright            : (C) 2003 by Tyler Montbriand
00007     student #            : 200200370
00008     class                : CS330
00009     email                : monttyle@heavyspace.ca 
00010 ***************************************************************************/
00011 #ifndef __TOYMEM_INTERNAL_H__
00012 #define __TOYMEM_INTERNAL_H__
00013 
00014 #ifdef __cplusplus
00015   extern "C" {
00016 #endif/*__cplusplus*/
00017 
00029 #define ERR_PREFIX  "******* ERROR: "
00030 
00031 #define LINE_RULE   "+--------------------------------------------------\n"
00032 
00033 #define LINE_PREFIX "| "
00034 
00035 #define LINE_NUMBER_FORMAT "%4d"
00036 
00037 #define PRINT_ERROR(error) if(error!=ERR_UNKNOWN) printf(ERR_PREFIX"%s\n",ErrMessages[error])
00038 
00039 
00041 extern const char *ErrMessages[];
00043 ErrMessage_t TMM_StoreInteger(ToyMM *tm,int process,int addr,int val);
00045 ErrMessage_t TMM_StoreString(ToyMM *tm, int process, int addr, const char *str);
00047 ErrMessage_t TMM_StoreHeapInteger(ToyMM *tm, int process, int addr, int value);
00049 ErrMessage_t TMM_StoreHeapString(ToyMM *tm, int process, int addr, const char *str);
00051 ErrMessage_t TMM_PrintProcessTable(ToyMM *tm, int process);
00053 ErrMessage_t TMM_PrintProcessMemory(ToyMM *tm, int process);
00055 ErrMessage_t TMM_TerminateProcess(ToyMM *tm, int process);
00057 ErrMessage_t TMM_PrintAllMemory(ToyMM *tm);
00059 ErrMessage_t TMM_AllocateHeap(ToyMM *tm, int process, int size);
00061 ErrMessage_t TMM_ReallocateHeap(ToyMM *tm, int process, int addr, int size);
00063 ErrMessage_t TMM_FreeHeap(ToyMM *tm, int process, int addr);
00065 ErrMessage_t TMM_PrintHeap(ToyMM *tm, int process);
00069 ErrMessage_t TMM_AllocateSegmentAt(ToyMM *tmm, int pos, int size);
00070 
00072 ErrMessage_t TMM_AllocateProcessAt(ToyMM *tm,int pID, int addr,int segs, int sizes[]);
00073 
00075 int TMM_AllocateSegment(ToyMM *tmm, int size);
00076 
00078 ErrMessage_t TMM_FreeSegment(ToyMM *tmm, int pos, int size);
00079 
00081 int TMM_FindFreeMem(ToyMM *tmm, int size);
00082 
00084 ErrMessage_t TMM_CopyMem(ToyMM *tmm, int destaddr, int srcaddr, int len);
00086 ErrMessage_t TMM_MarkMemEmpty(ToyMM *tmm,int addr, int len);
00087 
00089 void TMM_PrintMem(ToyMM *tmm, int addr);
00090 
00092 struct Process *TMM_GetProcess(ToyMM *tmm, int process);
00093 
00094 
00095 /* Gets the address of a memory segment. */
00096 int TMM_GetSegmentAddr(ToyMM *tm, int process, SegType_e seg);
00097 /* Gets the linked-list node for a segment. */
00098 struct SegList *TMM_GetSegmentNode(ToyMM *tm, int process, SegType_e seg);
00099 
00100 
00101 
00102 #ifdef __cplusplus
00103     }
00104 #endif/*__cplusplus*/
00105 
00106 #endif/*__TOYMEM_INTERNAL_H__*/
00107 

Generated on Fri Apr 4 14:29:07 2003 for ToyMem by doxygen1.3-rc3