Fixed Segfault if execve fails, fixed errors in LibC pertaining to stdin,... not...
[tpg/acess2.git] / Kernel / threads.c
index bcea3fa..54438c3 100644 (file)
@@ -20,6 +20,7 @@ extern int    Proc_Clone(Uint *Err, Uint Flags);
 // === PROTOTYPES ===
 void   Threads_Init();
 void   Threads_SetName(char *NewName);
+char   *Threads_GetName(int ID);
 void   Threads_SetTickets(int Num);
  int   Threads_WaitTID(int TID, int *status);
 tThread        *Threads_GetThread(Uint TID);
@@ -117,6 +118,18 @@ void Threads_SetName(char *NewName)
        strcpy(cur->ThreadName, NewName);
 }
 
+/**
+ * \fn char *Threads_GetName(int ID)
+ * \brief Gets a thread's name
+ */
+char *Threads_GetName(int ID)
+{
+       if(ID == -1) {
+               return Proc_GetCurThread()->ThreadName;
+       }
+       return NULL;
+}
+
 /**
  * \fn void Threads_SetTickets(int Num)
  * \brief Sets the 'priority' of a task
@@ -273,7 +286,7 @@ void Threads_Kill(tThread *Thread, int Status)
        tMsg    *msg;
        
        // Kill all children
-       #if 1
+       #if 0
        {
                tThread *child;
                for(child = gActiveThreads;
@@ -586,5 +599,6 @@ tThread *Threads_GetNextToRun(int CPU)
 void Threads_SegFault(tVAddr Addr)
 {
        //Threads_SendSignal( Proc_GetCurThread()->TID, SIGSEGV );
-       Threads_Kill( Proc_GetCurThread(), 0 );
+       Log("Thread #%i committed a segfault at address %p\n", Proc_GetCurThread()->TID, Addr);
+       Threads_Exit( 0, 0 );
 }

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