X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Tools%2FNetTest%2Fvfs_shim.c;h=d2d1d5fe5c45bb3cf3d0ff71816062edb25c1280;hb=07e446727e54a17327b53928ce8582ba10eec619;hp=97ac4db1da257c7b50113b7fdea06408cfb2a2be;hpb=083c31409b9f25c96807ab8fef8ac79e8fe4cf9e;p=tpg%2Facess2.git diff --git a/Tools/NetTest/vfs_shim.c b/Tools/NetTest/vfs_shim.c index 97ac4db1..d2d1d5fe 100644 --- a/Tools/NetTest/vfs_shim.c +++ b/Tools/NetTest/vfs_shim.c @@ -10,87 +10,9 @@ #include // === CODE === -int VFS_SelectNode(tVFS_Node *Node, int Type, tTime *Timeout, const char *Name) -{ - tThread *us = Proc_GetCurThread(); - - int ret = 0; - - Threads_ClearEvent(THREAD_EVENT_VFS); - - if( Type & VFS_SELECT_READ ) { - Node->ReadThreads = (void*)us; - if(Node->DataAvaliable) ret |= VFS_SELECT_READ; - } - if( Type & VFS_SELECT_WRITE ) { - Node->WriteThreads = (void*)us; - if(!Node->BufferFull) ret |= VFS_SELECT_WRITE; - } - if( Type & VFS_SELECT_ERROR ) { - Node->ErrorThreads = (void*)us; - if(Node->ErrorOccurred) ret |= VFS_SELECT_ERROR; - } - - if( !ret ) - { - // TODO: Timeout - Threads_WaitEvents(THREAD_EVENT_VFS); - } - - if( Type & VFS_SELECT_READ ) { - Node->ReadThreads = NULL; - if(Node->DataAvaliable) ret |= VFS_SELECT_READ; - } - if( Type & VFS_SELECT_WRITE ) { - Node->WriteThreads = NULL; - if(!Node->BufferFull) ret |= VFS_SELECT_WRITE; - } - if( Type & VFS_SELECT_ERROR ) { - Node->ErrorThreads = NULL; - if(Node->ErrorOccurred) ret |= VFS_SELECT_ERROR; - } - return ret; -} - -int VFS_MarkAvaliable(tVFS_Node *Node, BOOL bAvail) -{ - Node->DataAvaliable = bAvail; - if( Node->DataAvaliable && Node->ReadThreads ) - Threads_PostEvent( (void*)Node->ReadThreads, THREAD_EVENT_VFS ); - return 0; -} - -int VFS_MarkError(tVFS_Node *Node, BOOL bError) -{ - Node->ErrorOccurred = bError; - if( Node->ErrorOccurred && Node->ErrorThreads ) - Threads_PostEvent( (void*)Node->ErrorThreads, THREAD_EVENT_VFS ); - return 0; -} - -int VFS_MarkFull(tVFS_Node *Node, BOOL bError) -{ - Node->BufferFull = bError; - if( !Node->BufferFull && Node->WriteThreads ) - Threads_PostEvent( (void*)Node->WriteThreads, THREAD_EVENT_VFS ); - return 0; -} - - -#if 0 -int VFS_Open(const char *Path, Uint Flags) -{ - return -1; -} - -void VFS_Close(int FD) -{ -} -#endif - int VFS_AllocHandle(int bIsUser, tVFS_Node *Node, int Mode) { - const int maxfd = *Threads_GetMaxFD(); + const int maxfd = *Threads_GetMaxFD(NULL); tVFS_Handle *handles = *Threads_GetHandlesPtr(); if( !handles ) { handles = calloc( maxfd, sizeof(tVFS_Handle) ); @@ -112,7 +34,7 @@ int VFS_AllocHandle(int bIsUser, tVFS_Node *Node, int Mode) tVFS_Handle *VFS_GetHandle(int FD) { - const int maxfd = *Threads_GetMaxFD(); + const int maxfd = *Threads_GetMaxFD(NULL); tVFS_Handle *handles = *Threads_GetHandlesPtr(); if( !handles ) return NULL; @@ -122,3 +44,18 @@ tVFS_Handle *VFS_GetHandle(int FD) return &handles[FD]; } + +int VFS_SetHandle(int FD, tVFS_Node *Node, int Mode) +{ + const int maxfd = *Threads_GetMaxFD(NULL); + tVFS_Handle *handles = *Threads_GetHandlesPtr(); + if( !handles ) + return -1; + + if( FD < 0 || FD >= maxfd ) + return -1; + + handles[FD].Node = Node; + handles[FD].Mode = Mode; + return FD; +}