#include "task-descriptor.h"
#include "kernel.h"
#include "syscall-handler.h"



int handlerCreate(KernelStruct* Colonel, TD* Active, int priority, void (*code)()) {

    TD* NewTask = NewTask(priority,Active->TaskID),code);
    return pushToScheduler(Colonel, NewTask);
}


void Handle(KernelStruct* Colonel, int n) {
    switch(n) {
        case SYS_Create:
            return handlerCreate(Colonel); 
        case SYS_MyTid:
            (Colonel->Active)->RetVal = (Colonel->Active)->TaskID;
            pushToScheduler(Colonel);
            break;
        case SYS_ParentTid:
            (Colonel->Active)->RetVal = (Colonel->Active)->ParentID;
            pushToScheduler(Colonel);
            break;
        case SYS_Pass:
            pushToScheduler(Colonel);
            break;
        case SYS_Exit:
            (Colonel->Active)->TaskState = Zombie;
            break;
    }
}