#ifndef SIMULATORX #define SIMULATORX #include "StandardConstants.h" #include "configops.h" #include "metadataops.h" #include "simtimer.h" // data structures typedef enum{ PROCESS_STATE_NEW = 0, PROCESS_STATE_READY, PROCESS_STATE_RUNNING, PROCESS_STATE_BLOCKED, PROCESS_STATE_TERMINATED } PROCESS_STATES; typedef struct ProcessControlBlockStruct { int uniquePid; PROCESS_STATES process_state; // need a process start ptr for where the process starts. // this will be a mini loop within the master loop that goes until it // hits the app end command. // it may hold the next opcode, since you don't need to traverse backward // have an IO cycle count here // have a CPU cycle count here // maybe have a total cycle count here // time left could be calculated from these. // potentially could change the cycles or have a 'left' variable to // see how many are left. // also need a time left state here? } ProcessControlBlock; /* Name: ??? Process: ??? Function Input/Parameters: ??? Function Output/Parameters: none Function Output/Returned: none Device Input/Device: none Device Output/Device: none Dependencies: ??? */ // need a function (or functions) to handle FILE I/O? // runSim function will have a FILE * // will have a function that gets the FILE * and // adds whatever operation occurred /* Name: ??? Process: ??? // Function Input/Parameters: ??? Function Output/Parameters: none Function Output/Returned: none Device Input/Device: none Device Output/Device: none Dependencies: ??? */ // need a function for the global/local timer (given??? may need to just import) // need a function for scheduler/dispatcher // this could use a switch statement to tell which scheduling method to choose from. // Sim02 only requires FCFS working atm. // need a function called createProcessList // this makes a linked list of PCBs, loads the first instruction after app start // and ... // need a function called destroyProcessList // deallocated the ll of PCBs recursively, frees the rest of the struct. // /* Name: runSim Process: primary simulation driver Function Input/Parameters: configuration data (ConfigDataType *), metadata (OpCodeType *) Function Output/Parameters: none Function Output/Returned: none Device Input/Device: none Device Output/Device: none Dependencies: ??? */ void runSim(ConfigDataType *configPtr, OpCodeType *metaDataMstrPtr); #endif // SIMULATORX