00001 /***************************************************************************************** 00002 Copyright (c) 2002-2004 The UbixOS Project 00003 All rights reserved. 00004 00005 Redistribution and use in source and binary forms, with or without modification, are 00006 permitted provided that the following conditions are met: 00007 00008 Redistributions of source code must retain the above copyright notice, this list of 00009 conditions, the following disclaimer and the list of authors. Redistributions in binary 00010 form must reproduce the above copyright notice, this list of conditions, the following 00011 disclaimer and the list of authors in the documentation and/or other materials provided 00012 with the distribution. Neither the name of the UbixOS Project nor the names of its 00013 contributors may be used to endorse or promote products derived from this software 00014 without specific prior written permission. 00015 00016 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 00017 EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 00018 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 00019 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 00020 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 00021 OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 00022 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 00023 TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00024 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00025 00026 $Id: sched_8h-source.html 88 2016-01-12 00:11:29Z reddawg $ 00027 00028 *****************************************************************************************/ 00029 00030 #ifndef _SCHED_H 00031 #define _SCHED_H 00032 00033 #include <ubixos/types.h> 00034 //#include <ubixos/elf.h> 00035 #include <ubixos/tty.h> 00036 #include <vfs/file.h> 00037 #include <sys/tss.h> 00038 #include <sys/thread.h> 00039 00040 00041 typedef enum { PLACEHOLDER=-2,DEAD=-1,NEW=0,READY=1,RUNNING=2,IDLE=3,FORK=4,WAIT=5 } tState; 00042 00043 struct osInfo { 00044 uInt8 timer; 00045 uInt8 v86Task; 00046 bool v86If; 00047 uInt32 vmStart; 00048 uInt32 stdinSize; 00049 uInt32 controlKeys; 00050 char *stdin; 00051 char cwd[1024]; /* current working dir */ 00052 }; 00053 00054 typedef struct taskStruct { 00055 pidType id; 00056 struct taskStruct *prev; 00057 struct taskStruct *next; 00058 struct tssStruct tss; 00059 struct i387Struct i387; 00060 struct osInfo oInfo; 00061 fileDescriptor *imageFd; 00062 tState state; 00063 uInt32 gid; 00064 uInt32 uid; 00065 uInt16 usedMath; 00066 tty_term *term; 00067 struct thread td; 00068 } kTask_t; 00069 00070 00071 int sched_init(); 00072 int sched_setStatus(pidType,tState); 00073 int sched_deleteTask(pidType); 00074 int sched_addDelTask(kTask_t *); 00075 kTask_t *sched_getDelTask(); 00076 void sched_yield(); 00077 void sched(); 00078 00079 void schedEndTask(pidType pid); 00080 kTask_t *schedNewTask(); 00081 kTask_t *schedFindTask(uInt32 id); 00082 00083 extern kTask_t *_current; 00084 extern kTask_t *_usedMath; 00085 00086 00087 #endif 00088 00089 /*** 00090 $Log: sched_8h-source.html,v $ 00090 Revision 1.7 2006/12/15 17:47:06 reddawg 00090 Updates 00090 00091 Revision 1.3 2006/12/15 15:43:46 reddawg 00092 Changes 00093 00094 Revision 1.2 2006/10/27 16:42:42 reddawg 00095 Testing 00096 00097 Revision 1.1.1.1 2006/06/01 12:46:14 reddawg 00098 ubix2 00099 00100 Revision 1.2 2005/10/12 00:13:37 reddawg 00101 Removed 00102 00103 Revision 1.1.1.1 2005/09/26 17:23:55 reddawg 00104 no message 00105 00106 Revision 1.30 2004/09/11 22:21:11 reddawg 00107 oInfo.cwd is now an array no longer a pointer.. 00108 00109 Revision 1.29 2004/09/08 23:19:58 reddawg 00110 hmm 00111 00112 Revision 1.28 2004/09/08 22:16:02 reddawg 00113 Fixens 00114 00115 Revision 1.27 2004/09/08 21:19:32 reddawg 00116 All good now 00117 00118 Revision 1.26 2004/09/07 21:54:38 reddawg 00119 ok reverted back to old scheduling for now.... 00120 00121 Revision 1.20 2004/08/09 12:58:05 reddawg 00122 let me know when you got the surce 00123 00124 Revision 1.19 2004/08/06 22:43:04 reddawg 00125 ok 00126 00127 Revision 1.18 2004/08/06 22:32:16 reddawg 00128 Ubix Works Again 00129 00130 Revision 1.16 2004/08/04 08:17:57 reddawg 00131 tty: we have primative ttys try f1-f5 so it is easier to use and debug 00132 ubixos 00133 00134 Revision 1.15 2004/07/29 21:32:16 reddawg 00135 My quick lunchs breaks worth of updates.... 00136 00137 Revision 1.14 2004/07/21 17:15:02 reddawg 00138 removed garbage 00139 00140 Revision 1.13 2004/07/21 14:43:14 flameshadow 00141 add: added cwc (current working container) to the osInfo strut 00142 00143 Revision 1.12 2004/07/19 02:32:21 reddawg 00144 sched: we now set task status to dead which then makes the scheduler do some clean it could be some minor overhead but i feel this is our most efficient approach right now to prevent corruption of the queues 00145 00146 Revision 1.11 2004/07/19 02:08:27 reddawg 00147 Cleaned out the rest of debuging code also temporarily disabled the ip stack to improve boot time 00148 00149 Revision 1.10 2004/07/18 05:24:15 reddawg 00150 Fixens 00151 00152 Revision 1.9 2004/07/09 13:23:20 reddawg 00153 sched: schedInit to sched_init 00154 Adjusted initialization routines 00155 00156 Revision 1.8 2004/06/22 14:02:14 solar 00157 Added the PLACEHOLDER state for a task 00158 00159 Revision 1.7 2004/06/18 13:01:47 solar 00160 Added nice and timeSlice members to the kTask_t type 00161 00162 Revision 1.6 2004/06/17 02:12:57 reddawg 00163 Cleaned Out Dead Code 00164 00165 Revision 1.5 2004/06/16 14:04:51 reddawg 00166 Renamed a typedef 00167 00168 Revision 1.4 2004/06/14 12:20:54 reddawg 00169 notes: many bugs repaired and ld works 100% now. 00170 00171 Revision 1.3 2004/05/21 15:49:13 reddawg 00172 The os does better housekeeping now when a task is exited 00173 00174 Revision 1.2 2004/05/21 15:20:00 reddawg 00175 Cleaned up 00176 00177 00178 END 00179 ***/ 00180