Example #1
0
static int __init start(void)
{
    printCurrent();
    printAll();
    printAllGrouped();
    return 0;
}
Example #2
0
int Menu::menu(){
	while(true){				// så länge användaren inte har gjort ett menyval
		printCurrent();			// skriv ut markören
		int inp = keys->getch();// vänta på inputs
		if(inp == '\n')			// om det är enter/retur knappen 
			return current;		// användaren har valt current menyalternativ
		else if(inp == 'q' || inp == 'Q')// om det är q tangenten så avslutas programmet
			return 6;
		else{					// anars läser vi in hela bufferten ...
			std::string kb = "";
			kb += inp;			// lägger till den föregående inläsningen
			//if(keys.kbhit())
			while(keys->kbhit())// så länge det finns kvar info att läsa
				kb += keys->getch();//lägg till i kb
			if( kb == VK_UP || kb == VK_DOWN){// om det är upp eller nertangenten
				int dir = (kb[kb.length()-1]) - 'A';// avgör vilken av tangenterna det är
				if(dir)							// om det är ner pilen
					next();						// gå ett steg framot i menyn
				else
					previous();					// annars gå ett steg bakot i menyn
			}
		}
	}
	return current;// kommer aldrig hit
}
Example #3
0
int main(int argc, char *argv[])
{

	list_entry_t *pos;
	int byteStart, byteEnd, globalEnd;
	struct ProcStruct *next;

	schedInit();                                          //init schedule 
  
	printf("SchedInit finished!\n");
	
	cpu_init();                                          //init cpu
 
	printf("Cpu init finished!\n");

	initProcList();                                      //runnbale process 
 
	printf("Init process list finished!\n");

	procInit();                                          //init process table

	printf("The first proc init finished!\n");

	initWaitQueue();                                     //init wait queue

	printf("Init wait queue finished!\n");

	bc_read(&byteStart, &byteEnd, &globalEnd);           //读取字节码

	/*
	for (int i = 0; i < 7; i++) {
		printf("%d %d %d\n", byte_code[i].code, byte_code[i].arg1, byte_code[i].arg2);
	}
*/
	createProcess(byteStart, byteEnd, globalEnd);        //根据字节码的初始下标和终止下标创建第一个进程

//	createProcess(0, 9, 3);                              //根据字节码的初始下标和终止下标创建第一个进程

	printCurrent();

	addRunEqueue();                                     //将创建的进程加入到就绪队列
	
	printf("The proc addRunEqueu finished!\n");


	    while (cpu_state != 0 && rq->proc_num)
	    {
		    printf("schedul start...\n");
		    cpuSchedProc();
	    }
	    while (rq->proc_num == 0 && wq->wait_num != 0)
	    {
		    next = waitQueuePickNext(wq);
		    delWaitQueue(wq, next);
		    schedClassEnqueue(next);
		    schedule();
	    }
	
	return 0;
}
Example #4
0
void executeOneTime () {
	
	printCurrent();

	time += 1;
	ktime += 1;
	int i;

	// Allot to the next process that has pending operations
	process_p_t p = *(pross + k);
	if (ktime % quantum == 0 || p->rt <= 0) {
		ktime = 0;
		k = (k + 1) % n;
		p = *(pross + k);
		int kk = k;
		while (p->rt <= 0) {
			k = (k + 1) % n;
			p = *(pross + k);
			if (k == kk) {
				printf("-- NO PENDING PROCESSES --\n");
				return;
			}
		}
	}
	
	for (i = 0; i < n; ++i) {
		p = *(pross + i);
		if (i == k) {
			printf("Servicing process %d [AT = %d, RT = %d]\n", p->id, p->at, p->rt);
			fprintf(gantt, "%4d ||", time);
			int l;
			for (l = 0; l < n; ++l) {
				if (l == p->id)
					fprintf(gantt, " * |");
				else
					fprintf(gantt, "   |");
			}
			fprintf(gantt, "\n");
			p->rt -= 1;
			p->tat += 1;
		} else {
			if (p->rt > 0) {
				p->wt += 1;
				p->tat += 1;
			}
		}
	}

}
Example #5
0
void executeOneTime () {
	
	printCurrent();

	time += 1;
	k = -1;
	int i;

	for (i = 0; i < n; ++i) {
		process_p_t p = *(pross + i);
		if (p->rt > 0) {
			k = i;
			break;
		}
	}
	if (k == -1) {
		printf("-- NO PENDING PROCESSES --\n");
		return;
	}
	
	for (i = 0; i < n; ++i) {
		process_p_t p = *(pross + i);
		if (i == k) {
			printf("Servicing process %d [AT = %d, RT = %d]\n", p->id, p->at, p->rt);
			fprintf(gantt, "%4d ||", time);
			int l;
			for (l = 0; l < n; ++l) {
				if (l == p->id)
					fprintf(gantt, " * |");
				else
					fprintf(gantt, "   |");
			}
			fprintf(gantt, "\n");
			p->rt -= 1;
			p->tat += 1;
		} else {
			if (p->rt > 0) {
				p->wt += 1;
				p->tat += 1;
			}
		}
	}

}