Newer
Older
void kernelInit(KernelStruct* Colonel) {
int i;
TD* temp;
TDPQ* PQ;
int FreeBitMask = 1<<31;
temp = &(Colonel->Tasks[i]);
temp->TaskID = i | FreeBitMask;
temp->ParentID = 0;
temp->TaskState = Init;
temp->TaskPriority = Prio0;
if (i == MAX_NUM_TD-1) temp->NextFree = 0;
else temp->NextFree = &(Colonel->Tasks[i+1]);
temp->NextInPQ = 0;
temp->sp = (int *)(USER_STACK_TOP - (STACK_SIZE*i));
for(i = 0; i<MAX_NUM_PRIORITY ;i++){
PQ = &(Colonel->ArrayPQ[i]);
PQ->Head = NULL;
PQ->Tail = NULL;
PQ->Length = 0;
}
Colonel->FirstOfFreeList = &(Colonel->Tasks[0]);
Colonel->LastOfFreeList = &(Colonel->Tasks[MAX_NUM_TD-1]);
asm volatile("mov r4, #0x28\n\t"
"ldr r5, =kerent\n\t"
"add r5, r5, #0x218000\n\t"
"str r5, [r4]\n\t");
}
void activate(KernelStruct* Colonel, TD* Active) {
*/
/*
void kprint(){
bwprintf(COM2,"asdf");
}*/