void test_insert_2_process_in_shedular(){ Shedular* shedular; shedular = create(); insertProcess(shedular ,2 ,4); insertProcess(shedular ,10 ,3); ASSERT(10 == shedular->head->time); ASSERT(3 == shedular->head->priority); }
void test_add_process_with_priority_higher_than_first_process(){ Status statusp1 = {0,1,0}; Process p1 = {"p1",1000,statusp1,3,NULL}; Process p2 = {"p2",500,statusp1,1,NULL}; queue = create(); ASSERT(1 == insertProcess(queue, &p1)); ASSERT(2 == insertProcess(queue, &p2)); }
void test_3_adds_process_that_have_high_priority_rather_than_first(){ Scheduler expected = {NULL,0}; Status status = {0,1,0}; Process firstProcess = {"firstProcess",3000,status,7,NULL}; Process secondProcess = {"secondProcess",900,status,1,NULL}; q = create(); ASSERT(1 == insertProcess(q, &firstProcess,compareInt)); ASSERT(2 == insertProcess(q, &secondProcess,compareInt)); ASSERT(q->front == &secondProcess); ASSERT(q->front->next == &firstProcess); }
void test_remove_processes_in_middle(){ Process* res; Status statusp1 = {0,1,0}; Process p1 = {"p1",100,statusp1,5,NULL}; Process p2 = {"p2",0,statusp1,1,NULL}; queue = create(); insertProcess(queue, &p1); insertProcess(queue, &p2); res = removeProcess(queue); ASSERT(&p2 == res); }
void test_7_removes_processes_in_middle(){ Status statusp1 = {0,1,0}; Process process1 = {"process1",1000,statusp1,1,NULL}; Process process2 = {"process2",0,statusp1,5,NULL}; Process process3 = {"process3",1000,statusp1,7,NULL}; q = create(); insertProcess(q, &process1,compareInt); insertProcess(q, &process2,compareInt); insertProcess(q, &process3,compareInt); ASSERT(2 == removeProcess(q)); ASSERT(q->front->next == &process3); }
void test_9_removes_first_process_in_many(){ Status statusp1 = {0,1,0}; Process process1 = {"process1",0,statusp1,1,NULL}; Process process2 = {"process2",10,statusp1,5,NULL}; Process process3 = {"process3",65,statusp1,7,NULL}; q = create(); insertProcess(q, &process1,compareInt); insertProcess(q, &process2,compareInt); insertProcess(q, &process3,compareInt); ASSERT(2 == removeProcess(q)); ASSERT(q->front == &process2); }
void test_remove_last_process(){ Process* res; Status statusp1 = {0,1,0}; Process p1 = {"p1",1000,statusp1,1,NULL}; Process p2 = {"p2",10,statusp1,5,NULL}; Process p3 = {"p3",0,statusp1,7,NULL}; queue = create(); insertProcess(queue, &p1); insertProcess(queue, &p2); insertProcess(queue, &p3); res = removeProcess(queue); ASSERT(&p3 == res); }
int main(int argc, char *argv[]) { DIR *dirp; struct dirent *dp; Status *status; Status *previous = NULL; dirp = opendir("/proc/"); while ((dp = readdir(dirp)) != NULL) { if (isNumericString(dp->d_name)) { status = getProcessStatus(atoi(dp->d_name)); if (status != NULL) { insertProcess(previous, status); previous = status; } } } draw(status); freeAll(previous); closedir(dirp); exit(EXIT_SUCCESS); }
virtual void construct(std::shared_ptr<library::XML> xml) override { //-------- // CONSTRUCT ROLES //-------- // CLEAR ORDINARY ROLES process_map_.clear(); // CREATE ROLES if (xml->has("processes") == true && xml->get("processes")->front()->has("process") == true) { std::shared_ptr<library::XMLList> &role_xml_list = xml->get("processes")->front()->get("process"); for (size_t i = 0; i < role_xml_list->size(); i++) { std::shared_ptr<library::XML> &role_xml = role_xml_list->at(i); // CONSTRUCT ROLE FROM XML std::shared_ptr<DistributedProcess> role(createProcess(role_xml)); role->construct(role_xml); // AND INSERT TO ROLE_MAP insertProcess(role); } } //-------- // CONSTRUCT SYSTEMS //-------- super::construct(xml); };
void test_insert_a_process_in_empty_shedular(){ Shedular* shedular; shedular = create(); insertProcess(shedular ,2 ,4); ASSERT(2 == shedular->head->time); ASSERT(4 == shedular->head->priority); }
void test_6_removes_first_which_is_only_process(){ Status statusp1 = {0,1,0}; Process process1 = {"process1",0,statusp1,5,NULL}; q = create(); insertProcess(q, &process1,compareInt); ASSERT(0 == removeProcess(q)); ASSERT(NULL == q->front); }
void test_remove_first_and_only_process(){ Status statusp1 = {0,1,0}; Process p1 = {"p1",0,statusp1,5,NULL}; Process* res; queue = create(); insertProcess(queue, &p1); res = removeProcess(queue); ASSERT(&p1 == res); }
void test_4_adds_process_with_priority_in_between_process_queue(){ Scheduler expected = {NULL,0}; Status status = {0,1,0}; Process *second,*third; Process firstProcess = {"First Process",3000,status,7,NULL}; Process secondProcess = {"Second Process",900,status,1,NULL}; Process thirdProcess = {"Third Process",400,status,2,NULL}; q = create(); ASSERT(1 == insertProcess(q, &firstProcess,compareInt)); ASSERT(2 == insertProcess(q, &secondProcess,compareInt)); ASSERT(3 == insertProcess(q, &thirdProcess,compareInt)); ASSERT(q->front == &secondProcess); second = q->front->next; third = second->next; ASSERT(second == &thirdProcess); ASSERT(third == &firstProcess); ASSERT(third->next == NULL); }
void test_2_adds_front_process(){ Scheduler expected = {NULL,0}; Status status = {0,1,0}; Process firstProcess = {"firstProcess",3000,status,10,NULL}; q = create(); ASSERT(1 == insertProcess(q, &firstProcess,compareInt)); ASSERT(q->front == &firstProcess); ASSERT(q->front->next == NULL); }
void test_4_inserts_process_in_scheduler(){ Process process1 = {"Process1",10,1,NULL}; Scheduler *scheduler = createScheduler(10); int result; result = insertProcess(scheduler,&process1); ASSERT(scheduler->head == &process1); ASSERT(scheduler->total == 1); ASSERT(result == 1); };
int main() { print("HOLA"); setupEverything(); void ** pargs= (void**)malloc(sizeof(void*)); pargs[0] = (void*)"init"; insertProcess(&init, 1, pargs); pargs[0] = (void*)"shell"; insertProcess(sampleCodeModuleAddress, 1, pargs); setForeground(1); beginScheduler(); //((EntryPoint)sampleCodeModuleAddress)(); return 0; }
void test_5_adds_process_with_very_low_priority(){ Status statusp1 = {0,1,0}; Process *second,*third,*fourth,*fifth; Process process1 = {"process1",1000,statusp1,5,NULL}; Process process2 = {"process2",500,statusp1,1,NULL}; Process process3 = {"process3",400,statusp1,3,NULL}; Process process4 = {"process4",400,statusp1,2,NULL}; Process process5 = {"pprocess5",400,statusp1,8,NULL}; q = create(); ASSERT(1 == insertProcess(q, &process1,compareInt)); ASSERT(2 == insertProcess(q, &process2,compareInt)); ASSERT(3 == insertProcess(q, &process3,compareInt)); ASSERT(4 == insertProcess(q, &process4,compareInt)); ASSERT(5 == insertProcess(q, &process5,compareInt)); second = q->front->next; third = second->next; fourth = third->next; fifth = fourth->next; ASSERT(fifth == &process5); ASSERT(NULL == fifth->next); }
void executeExternalCommand(char *cmd) { int bgFg = getFgBg(cmd); /* fg(0) or bg(1) */ int status; pid_t pid = fork(); if(pid < 0) { perror("Fork error, pid < 0"); /* parent */ } else if(pid > 0) { /* set process group ID of child to self pid */ /* will suspend when receive SIGTTIN and SIGTTOU signals */ setpgid(pid, pid); /* set terminal control to new process group with child */ tcsetpgrp(STDIN_FILENO, pid); /* insert process in the list */ insertProcess(pid, bgFg, cmd); if(processList.current->process.status == FOREGROUND) { /* wait child finish */ waitpid(pid, &status, WUNTRACED); } /* parent regains terminal control */ tcsetpgrp(STDIN_FILENO, getpgid(0)); /* child */ } else { /* signals SIGTSTP and SIGINT will show default behavior in child */ defaultSignals(); /* set group id of child to self pid */ /* suspend when receive signals SIGTTIN and SIGTTOUT */ /* the child could go through exec before the parent set the group */ setpgid(0, 0); /* try to execute command */ analyseCommand(cmd); } }
void OdroidFlashManager::updateProcessView() { // maintain correct process view if(mAppSettings->flashMode()) // if write mode { if(mRunningProcesses.contains(READING_IMAGE) || mRunningProcesses.contains(READING_IMAGE_VERIFY)) { mRunningProcesses.clear(); emit clearProcessList(); } if(mAppSettings->useCompression()) // should decompress before write { if(!mRunningProcesses.contains(DECOMPRESSING)) { if(mRunningProcesses.isEmpty()) { emit appendProcess("DECOMPRESS"); mRunningProcesses.append(DECOMPRESSING); } else { emit insertProcess(0,"DECOMPRESS"); mRunningProcesses.insert(0,DECOMPRESSING); } } if(mAppSettings->deleteAfterDecompress()) { if(mRunningProcesses.contains(DELETE_IMAGE)) { int indexd(-1); if((indexd = mRunningProcesses.indexOf(DELETE_IMAGE)) >=0) { emit removeProcessAt(indexd); mRunningProcesses.removeAll(DELETE_IMAGE); } } emit appendProcess("DELETE IMG"); mRunningProcesses.append(DELETE_IMAGE); } else { int indexd(-1); if((indexd = mRunningProcesses.indexOf(DELETE_IMAGE)) >=0) { emit removeProcessAt(indexd); mRunningProcesses.removeAll(DELETE_IMAGE); } } } else { int index(mRunningProcesses.indexOf(DECOMPRESSING)); if(index >=0) { emit removeProcessAt(index); mRunningProcesses.removeAll(DECOMPRESSING); } int indexd(mRunningProcesses.indexOf(DELETE_IMAGE)); if(indexd >=0) { emit removeProcessAt(indexd); mRunningProcesses.removeAll(DELETE_IMAGE); } } if(mAppSettings->verifyFlash()) // verify write { int index(mRunningProcesses.indexOf(WRITING_IMAGE)); if(index >= 0) { emit removeProcessAt(index); mRunningProcesses.removeAt(index); } if(!mRunningProcesses.contains(WRITING_IMAGE_VERIFY)) { if(mAppSettings->useCompression()) { emit insertProcess(1,"WRITE IMG(V)"); mRunningProcesses.insert(1,WRITING_IMAGE_VERIFY); } else { emit insertProcess(0,"WRITE IMG(V)"); mRunningProcesses.insert(0,WRITING_IMAGE_VERIFY); } } } else { int index(mRunningProcesses.indexOf(WRITING_IMAGE_VERIFY)); if(index >= 0) { emit removeProcessAt(index); mRunningProcesses.removeAt(index); } if(!mRunningProcesses.contains(WRITING_IMAGE)) { if(mAppSettings->useCompression()) { emit insertProcess(1,"WRITE IMG"); mRunningProcesses.insert(1,WRITING_IMAGE); } else { emit insertProcess(0,"WRITE IMG"); mRunningProcesses.insert(0,WRITING_IMAGE); } } } if(mAppSettings->writeBootIni()) { if(!mRunningProcesses.contains(WRITING_BOOT)) { if(mRunningProcesses.contains(DELETE_IMAGE)) { int delete_index = mRunningProcesses.indexOf(DELETE_IMAGE); emit insertProcess(delete_index-1,"WRITE BOOT"); mRunningProcesses.insert(delete_index-1,WRITING_BOOT); } else { emit appendProcess("WRITE BOOT"); mRunningProcesses.append(WRITING_BOOT); } } } else { int indexw(-1); if((indexw = mRunningProcesses.indexOf(WRITING_BOOT)) >=0) { emit removeProcessAt(indexw); mRunningProcesses.removeAll(WRITING_BOOT); } } } else // read mode { if(mRunningProcesses.contains(WRITING_IMAGE) || mRunningProcesses.contains(WRITING_IMAGE_VERIFY)) { mRunningProcesses.clear(); emit clearProcessList(); } if(mAppSettings->verifyFlash()) { if(mRunningProcesses.isEmpty()) { emit appendProcess("READ IMG(V)"); mRunningProcesses.append(READING_IMAGE_VERIFY); } else { int read_index(-1); int readv_index(-1); if((read_index = mRunningProcesses.indexOf(READING_IMAGE)) >= 0 || (readv_index = mRunningProcesses.indexOf(READING_IMAGE_VERIFY)) >= 0) { if(read_index >= 0) { emit removeProcessAt(read_index); mRunningProcesses.removeAll(READING_IMAGE); } if(readv_index >= 0) { emit removeProcessAt(readv_index); mRunningProcesses.removeAll(READING_IMAGE_VERIFY); } } emit insertProcess(0,"READ IMG(V)"); mRunningProcesses.insert(0,READING_IMAGE_VERIFY); } } else { if(mRunningProcesses.isEmpty()) { emit appendProcess("READ IMG"); mRunningProcesses.append(READING_IMAGE); } else { int read_index(-1); int readv_index(-1); if((read_index = mRunningProcesses.indexOf(READING_IMAGE)) >= 0 || (readv_index = mRunningProcesses.indexOf(READING_IMAGE_VERIFY)) >= 0) { if(readv_index >= 0) { emit removeProcessAt(readv_index); mRunningProcesses.removeAll(READING_IMAGE_VERIFY); } if(read_index >= 0) { emit removeProcessAt(read_index); mRunningProcesses.removeAll(READING_IMAGE); } } emit insertProcess(0,"READ IMG"); mRunningProcesses.insert(0,READING_IMAGE); } } if(mAppSettings->useCompression()) { int index(-1); if((index = mRunningProcesses.indexOf(COMPRESSING)) >= 0) { emit removeProcessAt(index); mRunningProcesses.removeAll(COMPRESSING); } emit appendProcess("COMPRESS"); mRunningProcesses.append(COMPRESSING); if(mAppSettings->deleteAfterCompress()) { int index(-1); if((index = mRunningProcesses.indexOf(DELETE_IMAGE) ) >=0) { emit removeProcessAt(index); mRunningProcesses.removeAll(DELETE_IMAGE); } emit appendProcess("DELETE IMG"); mRunningProcesses.append(DELETE_IMAGE); } else { int indexd(-1); if((indexd = mRunningProcesses.indexOf(DELETE_IMAGE)) >=0) { emit removeProcessAt(indexd); mRunningProcesses.removeAll(DELETE_IMAGE); } } } else { int cindex(-1); if((cindex = mRunningProcesses.indexOf(COMPRESSING)) >= 0) { emit removeProcessAt(cindex); mRunningProcesses.removeAll(COMPRESSING); } int indexd(-1); if((indexd = mRunningProcesses.indexOf(DELETE_IMAGE)) >=0) { emit removeProcessAt(indexd); mRunningProcesses.removeAll(DELETE_IMAGE); } } if(mAppSettings->writeBootIni()) { if(mAppSettings->preserveBootIni()) { if(mRunningProcesses.isEmpty()) { if(mAppSettings->preserveBootIni()) { mRunningProcesses.append(READING_BOOT); emit appendProcess("READ BOOT"); } emit appendProcess("WRITE BOOT"); mRunningProcesses.append(WRITING_BOOT); } else { emit insertProcess(0,"READ BOOT"); mRunningProcesses.insert(0,READING_BOOT); emit insertProcess(1,"WRITE BOOT"); mRunningProcesses.insert(1,WRITING_BOOT); } emit appendProcess("RESTORE BOOT"); mRunningProcesses.append(RESTORING_BOOT); } else { int restore(-1); int read(-1); int write(-1); if((restore = mRunningProcesses.indexOf(RESTORING_BOOT))) mRunningProcesses.removeAll(READING_BOOT); mRunningProcesses.removeAll(WRITING_BOOT); emit appendProcess("WRITE BOOT"); mRunningProcesses.append(WRITING_BOOT); } } else { // fill in removal } } }
void CDlgProcessSequence::OnInsertBefore() { insertProcess(TRUE); }
void CDlgProcessSequence::OnInsertAfter() { insertProcess(FALSE); }
void test_add_first_process(){ Status statusp1 = {0,1,0}; Process p1 = {"p1",1000,statusp1,3,NULL}; queue = create(); ASSERT(1 == insertProcess(queue, &p1)); }
void executePipe(char *line, char *cmd) { int bgFg = getFgBg(cmd); /* fg(0) or bg(1) */ int status; pid_t pid = fork(); if(pid < 0) { perror("Fork error, pid < 0"); /* parent */ } else if(pid > 0) { /* set process group ID of child to self pid */ /* will suspend when receive SIGTTIN and SIGTTOU signals */ setpgid(pid, pid); /* set terminal control to new process group with child */ tcsetpgrp(STDIN_FILENO, pid); /* insert process in the list */ insertProcess(pid, bgFg, cmd); if(processList.current->process.status == FOREGROUND) { /* wait child finish */ waitpid(pid, &status, WUNTRACED); } /* parent regains terminal control */ tcsetpgrp(STDIN_FILENO, getpgid(0)); /* child */ } else { /* signals SIGTSTP and SIGINT will show default behavior in child */ defaultSignals(); /* set group id of child to self pid */ /* suspend when receive signals SIGTTIN and SIGTTOUT */ /* the child could go through exec before the parent set the group */ setpgid(0, 0); int startLine = 0; /* search begin of next expression */ int start, end; /* expression delimiters */ char *previousCmd; /* while find commands between pipes */ while(setExpressionDelimiters(line + startLine, "[^| ]([^|]*[^| ])?", &start, &end)) { previousCmd = cmd; /* get current command */ cmd = getExpression(line + startLine, start, end, 0); /* go to next search */ startLine += end; /* file input and output of pipe */ int file[2]; pid_t pid; newPipe(file, &pid); /* parent */ if(pid > 0) { readPipe(file); /* child */ } else { writePipe(file); internalExternalPipe(previousCmd, NO_JOBS_CONTROL); } } /* execute last command */ internalExternalPipe(cmd, NO_JOBS_CONTROL); } }
qword sys_exec(qword entry_point, qword pid, qword cargs, qword pargs, qword r9) { int * retPid = (int *) pid; *retPid = insertProcess((void *)entry_point, (int)cargs, (void **)pargs); return 0; }