diff --git a/BUGS b/BUGS new file mode 100644 index 0000000..0e2d0f6 --- /dev/null +++ b/BUGS @@ -0,0 +1,5 @@ +$Id$ + +Bugs: + +1) System task can not fclose the tasks FD problem in VFS...... diff --git a/src/sys/include/ubixos/sched.h b/src/sys/include/ubixos/sched.h index 4369b6d..5f3dd2c 100644 --- a/src/sys/include/ubixos/sched.h +++ b/src/sys/include/ubixos/sched.h @@ -94,11 +94,30 @@ extern kTask_t *_current; extern kTask_t *_usedMath; extern kTask_t *delList; +extern kTask_t *runList; #endif /*** $Log$ + Revision 1.23 2004/08/26 22:51:18 reddawg + TCA touched me :( i think he likes men.... + + + sched.h: kTask_t added parentPid + endtask.c: fixed term back to parentPid + exec.c: cleaned warnings + fork.c: fixed term to childPid + sched.c: clean up for dead tasks + systemtask.c: clean up dead tasks + kmalloc.c: cleaned up warnings + udp.c: cleaned up warnings + bot.c: cleaned up warnings + shell.c: cleaned up warnings + tcpdump.c: took a dump + hd.c: cleaned up warnings + ubixfs.c: stopped prning debug info + Revision 1.22 2004/08/21 23:47:50 reddawg *** empty log message *** diff --git a/src/sys/kernel/endtask.c b/src/sys/kernel/endtask.c index bd088e9..daddd2e 100644 --- a/src/sys/kernel/endtask.c +++ b/src/sys/kernel/endtask.c @@ -32,6 +32,7 @@ #include #include #include +#include /************************************************************************ @@ -43,27 +44,59 @@ ************************************************************************/ void endTask(pidType pid) { - kTask_t *tmpTask = schedFindTask(pid); + kTask_t *tmpTask = 0x0; + + irqDisable(0x1); + + tmpTask = schedFindTask(pid); + tmpTask->state = DEAD; tmpTask->term->owner = tmpTask->parentPid; - vmmFreeProcessPages(pid); + /* Remove task from run queue */ + if (tmpTask->prev != 0x0) + tmpTask->prev->next = tmpTask->next; + if (tmpTask->next != 0x0) + tmpTask->next->prev = tmpTask->prev; + if (tmpTask == runList) + runList = tmpTask->next; - if (_current->imageFd) - fclose(_current->imageFd); - - sched_setStatus(pid,DEAD); - sched_yield(); - while (1) { - //kprintf("Should Of Ended: [%i:%i:%i]\n",pid,_current->id,_current->state); - asm("hlt"); - } + /* Add task to del queue */ + tmpTask->next = delList; + tmpTask->prev = 0x0; + + if (delList != 0x0) + delList->prev = tmpTask; + delList = tmpTask; + + irqEnable(0x1); + + while (1); + return; } /*** $Log$ + Revision 1.17 2004/08/26 22:51:18 reddawg + TCA touched me :( i think he likes men.... + + + sched.h: kTask_t added parentPid + endtask.c: fixed term back to parentPid + exec.c: cleaned warnings + fork.c: fixed term to childPid + sched.c: clean up for dead tasks + systemtask.c: clean up dead tasks + kmalloc.c: cleaned up warnings + udp.c: cleaned up warnings + bot.c: cleaned up warnings + shell.c: cleaned up warnings + tcpdump.c: took a dump + hd.c: cleaned up warnings + ubixfs.c: stopped prning debug info + Revision 1.16 2004/08/09 12:58:05 reddawg let me know when you got the surce diff --git a/src/sys/kernel/sched.c b/src/sys/kernel/sched.c index 75f590c..3173682 100644 --- a/src/sys/kernel/sched.c +++ b/src/sys/kernel/sched.c @@ -41,12 +41,12 @@ static spinLock_t sched_spinLock = SPIN_LOCK_INITIALIZER; -static kTask_t *runList = 0x0; static uInt32 nextID = -1; kTask_t *_current = 0x0; kTask_t *_usedMath = 0x0; kTask_t *delList = 0x0; +kTask_t *runList = 0x0; static struct tssStruct *sched_tss = 0x0; @@ -57,27 +57,9 @@ tmpTask = _current->next; schedStart: - /* Yield the next task from the current prio queue */ + for (;tmpTask != 0x0; tmpTask = tmpTask->next) { - - /* Fix fork mode we hold one cycle to let the task get a good footing */ - if (tmpTask->state == DEAD) { - if (tmpTask->prev != 0x0) - tmpTask->prev->next = tmpTask->next; - if (tmpTask->next != 0x0) - tmpTask->next->prev = tmpTask->prev; - if (tmpTask == runList) - runList = tmpTask->next; - delTask = tmpTask; - tmpTask = tmpTask->next; - - delTask->next = delList; - if (delList != 0x0) - delList->prev = delTask; - delList = delTask; - - } if (tmpTask->state == FORK) tmpTask->state = READY; @@ -283,6 +265,12 @@ /*** $Log$ + Revision 1.45 2004/08/29 21:43:06 reddawg + sched: we now yeild almost propper + syscall: it still uses ebx,ecx,edx + + Boys don't cry + Revision 1.44 2004/08/26 22:51:18 reddawg TCA touched me :( i think he likes men.... diff --git a/src/sys/kernel/systemtask.c b/src/sys/kernel/systemtask.c index 56adabc..f8f38a9 100644 --- a/src/sys/kernel/systemtask.c +++ b/src/sys/kernel/systemtask.c @@ -97,9 +97,16 @@ if (delList != 0x0) { tmpTask = delList; delList = tmpTask->next; + + vmmFreeProcessPages(tmpTask->id); - //kfree(tmpTask->oInfo.cwd); - //kfree(tmpTask); + /* + if (_current->imageFd) + fclose(_current->imageFd); + */ + + kfree(tmpTask->oInfo.cwd); + kfree(tmpTask); } sched_yield(); @@ -110,6 +117,12 @@ /*** $Log$ + Revision 1.16 2004/08/29 21:43:06 reddawg + sched: we now yeild almost propper + syscall: it still uses ebx,ecx,edx + + Boys don't cry + Revision 1.15 2004/08/26 22:51:18 reddawg TCA touched me :( i think he likes men.... diff --git a/src/sys/kernel/tty.c b/src/sys/kernel/tty.c index 7442db3..47bcc15 100644 --- a/src/sys/kernel/tty.c +++ b/src/sys/kernel/tty.c @@ -139,8 +139,16 @@ } } bufferOffset >>= 1; /* Set the new cursor position */ - term->tty_x = (bufferOffset & 0xFF); - term->tty_y = (bufferOffset >> 8); + term->tty_x = (bufferOffset & 0xFF); + term->tty_y = (bufferOffset >> 0x8); + + if (term == tty_foreground) { + outportByte(0x3D4, 0x0f); + outportByte(0x3D5, term->tty_x); + outportByte(0x3D4, 0x0e); + outportByte(0x3D5, term->tty_y); + } + spinUnlock(&tty_spinLock); return(0x0); @@ -152,6 +160,9 @@ /*** $Log$ + Revision 1.6 2004/08/09 12:58:05 reddawg + let me know when you got the surce + Revision 1.5 2004/08/09 05:40:31 reddawg tty: removed current and made a foreground diff --git a/src/sys/sys/video.c b/src/sys/sys/video.c index 5fc9e66..142fd5c 100644 --- a/src/sys/sys/video.c +++ b/src/sys/sys/video.c @@ -31,9 +31,9 @@ #include #include #include +#include static unsigned char *videoBuffer = (char *)0xB8000; -static spinLock_t videoSpinLock = SPIN_LOCK_INITIALIZER; int printColor = defaultColor; @@ -41,26 +41,28 @@ uInt32 bufferOffset = 0x0; outportByte(0x3d4, 0x0e); bufferOffset = inportByte(0x3d5); - bufferOffset <<= 8; /* Shift Address Left 8 Bits */ + bufferOffset <<= 0x8; /* Shift Address Left 8 Bits */ outportByte(0x3d4, 0x0f); bufferOffset += inportByte(0x3d5); - bufferOffset <<= 1; /* Shift Address Left 1 Bits */ + bufferOffset <<= 0x1; /* Shift Address Left 1 Bits */ videoBuffer[bufferOffset--] = 0x20; videoBuffer[bufferOffset--] = printColor; videoBuffer[bufferOffset] = 0x20; - bufferOffset >>= 1; + bufferOffset >>= 0x1; + tty_foreground->tty_x = (bufferOffset & 0xFF); + tty_foreground->tty_y = (bufferOffset >> 0x8); outportByte(0x3D4, 0x0f); - outportByte(0x3D5, ((bufferOffset & 0x0ff) & 0xFF)); + outportByte(0x3D5, tty_foreground->tty_x); outportByte(0x3D4, 0x0e); - outportByte(0x3D5, ((bufferOffset >> 8) & 0xFF)); + outportByte(0x3D5, tty_foreground->tty_y); return; -} /* backSpace() */ + } void kprint(char *string) { unsigned int bufferOffset = 0x0, character = 0x0, i = 0x0; - spinLock(&videoSpinLock); + /* We Need To Get The Y Position */ outportByte(0x3D4, 0x0e); bufferOffset = inportByte(0x3D5); @@ -97,7 +99,7 @@ outportByte(0x3D5, ((bufferOffset & 0x0ff) & 0xFF)); outportByte(0x3D4, 0x0e); outportByte(0x3D5, ((bufferOffset >> 8) & 0xFF)); - spinUnlock(&videoSpinLock); + return; } @@ -117,6 +119,9 @@ /*** $Log$ + Revision 1.9 2004/08/06 22:32:16 reddawg + Ubix Works Again + Revision 1.7 2004/07/22 18:46:16 reddawg Fixed up exec.c