X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=Kernel%2Fthreads.c;fp=Kernel%2Fthreads.c;h=956eede82281ff1e3153bc6da1d090c22943d478;hb=675118a5a3e81149709179b4f52281d52092b233;hp=87d30d3d0237c266db41776d5dd72a44fd15b1bd;hpb=7eb6db3530ddbc4443e92ffc0e1e9d5a50acee47;p=tpg%2Facess2.git diff --git a/Kernel/threads.c b/Kernel/threads.c index 87d30d3d..956eede8 100644 --- a/Kernel/threads.c +++ b/Kernel/threads.c @@ -9,6 +9,7 @@ #include #include #include +#include // VFS Handle maintainence // Configuration #define DEBUG_TRACE_TICKETS 0 // Trace ticket counts @@ -151,11 +152,16 @@ void Threads_Delete(tThread *Thread) if( Thread->Process->nThreads == 0 ) { tProcess *proc = Thread->Process; + // VFS Cleanup + VFS_CloseAllUserHandles(); + // Architecture cleanup Proc_ClearProcess( proc ); + // VFS Configuration strings if( proc->CurrentWorkingDir) free( proc->CurrentWorkingDir ); if( proc->RootDir ) free( proc->RootDir ); + // Process descriptor free( proc ); } @@ -319,6 +325,8 @@ tThread *Threads_CloneTCB(Uint Flags) else newproc->RootDir = NULL; newproc->nThreads = 1; + // Reference all handles in the VFS + VFS_ReferenceUserHandles(); } else { new->Process->nThreads ++;