#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; } }