Kernel - Fixing bugs
authorJohn Hodge <[email protected]>
Thu, 13 Oct 2011 13:43:39 +0000 (21:43 +0800)
committerJohn Hodge <[email protected]>
Thu, 13 Oct 2011 13:43:39 +0000 (21:43 +0800)
Kernel/Makefile
Kernel/lib.c
Kernel/threads.c

index f76540c..bb76c13 100644 (file)
@@ -59,8 +59,7 @@ MODS += $(addprefix ../Modules/, $(addsuffix .xo.$(ARCH),$(MODULES)))
 BIN = ../Acess2.$(ARCH).bin
 GZBIN = ../Acess2.$(ARCH).gz
 
-DEPFILES  = $(filter %.o$(OBJSUFFIX),$(OBJ))
-DEPFILES := $(DEPFILES:%.o$(OBJSUFFIX)=%.dep$(OBJSUFFIX))
+DEPFILES := $(OBJ:%$(OBJSUFFIX)=%.dep$(OBJSUFFIX))
 
 SRCFILES  = $(OBJ:$(OBJDIR)%.o$(OBJSUFFIX)=%.c)
 SRCFILES := $(SRCFILES:$(OBJDIR)%.ao$(OBJSUFFIX)=%.$(AS_SUFFIX))
@@ -97,6 +96,9 @@ $(OBJDIR)%.ao$(OBJSUFFIX): %.$(AS_SUFFIX) Makefile
        @echo --- AS -o $@
        @mkdir -p $(dir $@)
        @$(AS) $(ASFLAGS) $< -o $@
+ifeq ($(AS_SUFFIX),S)
+       @$(MAKEDEP) $(CPPFLAGS) -MT $@ -o $(OBJDIR)$*.ao.dep$(OBJSUFFIX) $<
+endif
 
 $(OBJDIR)%.o$(OBJSUFFIX): %.c Makefile
 #      if exists %*/Makefile
@@ -105,7 +107,7 @@ $(OBJDIR)%.o$(OBJSUFFIX): %.c Makefile
        @echo --- CC -o $@
        @mkdir -p $(dir $@)
        @$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
-       @$(MAKEDEP) $(CPPFLAGS) -MT $@ -o $(OBJDIR)$*.dep$(OBJSUFFIX) $<
+       @$(MAKEDEP) $(CPPFLAGS) -MT $@ -o $(OBJDIR)$*.o.dep$(OBJSUFFIX) $<
 #      endif
 
 %.xo.$(ARCH):
index c4251a6..472351c 100644 (file)
@@ -357,7 +357,7 @@ int vsnprintf(char *__s, size_t __maxlen, const char *__format, va_list args)
                // String - Null Terminated Array
                case 's':
                        p = va_arg(args, char*);        // Get Argument
-                       if( !CheckString(p) )   p = "(inval)";  // Avoid #PFs  
+                       if( !p || !CheckString(p) )     p = "(inval)";  // Avoid #PFs  
                printString:
                        if(!p)          p = "(null)";
                        len = strlen(p);
index 76041f5..57382a8 100644 (file)
@@ -311,9 +311,8 @@ tThread *Threads_CloneTCB(Uint Flags)
  */
 tThread *Threads_CloneThreadZero(void)
 {
-       tThread *cur, *new;
+       tThread *new;
         int    i;
-       cur = Proc_GetCurThread();
        
        // Allocate and duplicate
        new = malloc(sizeof(tThread));
@@ -340,28 +339,17 @@ tThread *Threads_CloneThreadZero(void)
        new->LastMessage = NULL;
        
        // Set State
-       new->Remaining = new->Quantum = cur->Quantum;
-       new->Priority = cur->Priority;
+       new->Remaining = new->Quantum = DEFAULT_QUANTUM;
+       new->Priority = DEFAULT_PRIORITY;
        new->bInstrTrace = 0;
        
        // Set Signal Handlers
        new->CurFaultNum = 0;
-       new->FaultHandler = cur->FaultHandler;
+       new->FaultHandler = 0;
        
        for( i = 0; i < NUM_CFG_ENTRIES; i ++ )
        {
-               switch(cCONFIG_TYPES[i])
-               {
-               default:
-                       new->Config[i] = cur->Config[i];
-                       break;
-               case CFGT_HEAPSTR:
-                       if(cur->Config[i])
-                               new->Config[i] = (Uint) strdup( (void*)cur->Config[i] );
-                       else
-                               new->Config[i] = 0;
-                       break;
-               }
+               new->Config[i] = 0;
        }
        
        // Maintain a global list of threads
@@ -677,6 +665,7 @@ void Threads_Kill(tThread *Thread, int Status)
  */
 void Threads_Yield(void)
 {
+       Log("Threads_Yield: by %p", __builtin_return_address(0));
        Proc_Reschedule();
 }
 

UCC git Repository :: git.ucc.asn.au