Go to the documentation of this file.
74 kpanic(
"Unable to create task list");
76 taskList->
id = nextID++;
79 kprintf(
"sched0 - Address: [0x%X]\n", taskList);
97 for (; tmpTask != 0x0; tmpTask = tmpTask->
next) {
108 if (delTask->
parent != 0x0) {
114 tmpTask = tmpTask->
next;
122 if (0x0 == tmpTask) {
131 kprintf(
"IRQD(%i): 0x%X*0x%X:0x%X@, esp: 0x%X:0x%X, ebp: 0x%X:0x%X ds: 0x%X",
_current->
id,
_current->
tss.
eflags,
_current->
tss.
cs,
_current->
tss.
eip,
_current->
tss.
ss,
_current->
tss.
esp,
_current->
tss.
ss,
_current->
tss.
ebp,
_current->
tss.
ds);
148 asm(
"ljmp $0x20,$0");
162 struct file *fp = 0x0;
165 kpanic(
"Error: schedNewTask() - kmalloc failed trying to initialize a new task struct\n");
176 for (i = 0; i < 3; i++) {
184 tmpTask->
id = nextID++;
185 tmpTask->
next = taskList;
187 taskList->
prev = tmpTask;
199 for (tmpTask = taskList; tmpTask != 0x0; tmpTask = tmpTask->
next) {
200 if (tmpTask->
id ==
id) {
201 if (tmpTask->
prev != 0x0)
203 if (tmpTask->
next != 0x0)
205 if (taskList == tmpTask)
206 taskList = tmpTask->
next;
215 tmpTask->
next = delList;
218 delList->
prev = tmpTask;
230 delList = delList->
next;
237 for (tmpTask = taskList; tmpTask; tmpTask = tmpTask->
next) {
238 if (tmpTask->
id ==
id)
325 if ((*p == wait) && ((*p = wait->
next) == wait)) {
330 while (tmp->
next != wait) {
343 if (!q || !(tmp = *q))
354 kprintf(
"wait_queue is bad (eip = %08lx)\n", ((
unsigned long *) q)[-1]);
368 if (!q || !(tmp = *q))
379 kprintf(
"wait_queue is bad (eip = %08lx)\n", ((
unsigned long *) q)[-1]);
int sched_addDelTask(kTask_t *tmpTask)
struct gdtDescriptor descriptor
union descriptorTableUnion ubixGDT[11]
void schedEndTask(pidType pid)
void irqDisable(uInt16 irqNo)
void spinUnlock(spinLock_t *lock)
void remove_wait_queue(struct wait_queue **p, struct wait_queue *wait)
#define SPIN_LOCK_INITIALIZER
void add_wait_queue(struct wait_queue **p, struct wait_queue *wait)
void wake_up_interruptible(struct wait_queue **q)
void kpanic(const char *fmt,...)
print panic message and halt system
void * memcpy(const void *dst, const void *src, size_t length)
void spinLock(spinLock_t *lock)
kTask_t * schedFindTask(uInt32 id)
struct taskStruct * parent
void wake_up(struct wait_queue **q)
int sched_setStatus(pidType pid, tState state)
void * kmalloc(uInt32 len)
void * memset(void *dst, int c, size_t length)
int kprintf(const char *,...)
int sched_deleteTask(pidType id)
int spinTryLock(spinLock_t *lock)
kTask_t * sched_getDelTask()