X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Fvfs%2Fhandle.c;h=55c841ec0d65ab3e2429d6da2f1b99f153550253;hb=7177e27ebe90ae180a0c645f319f39c89f07373b;hp=4a8d4786c738ca77036dce8a10792b761ba4a088;hpb=4e949acb1c98bc071af2d5d9038b4a3e703bf33d;p=tpg%2Facess2.git diff --git a/Kernel/vfs/handle.c b/Kernel/vfs/handle.c index 4a8d4786..55c841ec 100644 --- a/Kernel/vfs/handle.c +++ b/Kernel/vfs/handle.c @@ -13,11 +13,13 @@ #define MAX_KERNEL_FILES 128 // === PROTOTYPES === +#if 0 tVFS_Handle *VFS_GetHandle(int FD); +#endif int VFS_AllocHandle(int FD, tVFS_Node *Node, int Mode); // === GLOBALS === -tVFS_Handle *gaUserHandles = (void*)MM_PPD_VFS; +tVFS_Handle *gaUserHandles = (void*)MM_PPD_HANDLES; tVFS_Handle *gaKernelHandles = (void*)MM_KERNEL_VFS; // === CODE === @@ -60,7 +62,13 @@ int VFS_AllocHandle(int bIsUser, tVFS_Node *Node, int Mode) Uint addr, size; size = CFGINT(CFG_VFS_MAXFILES) * sizeof(tVFS_Handle); for(addr = 0; addr < size; addr += 0x1000) - MM_Allocate( (Uint)gaUserHandles + addr ); + { + if( !MM_Allocate( (Uint)gaUserHandles + addr ) ) + { + Warning("OOM - VFS_AllocHandle"); + Threads_Exit(0, 0xFF); // Terminate user + } + } memset( gaUserHandles, 0, size ); } // Get a handle @@ -81,7 +89,13 @@ int VFS_AllocHandle(int bIsUser, tVFS_Node *Node, int Mode) Uint addr, size; size = MAX_KERNEL_FILES * sizeof(tVFS_Handle); for(addr = 0; addr < size; addr += 0x1000) - MM_Allocate( (Uint)gaKernelHandles + addr ); + { + if( !MM_Allocate( (Uint)gaKernelHandles + addr ) ) + { + Panic("OOM - VFS_AllocHandle"); + Threads_Exit(0, 0xFF); // Terminate application (get some space back) + } + } memset( gaKernelHandles, 0, size ); } // Get a handle