* AcessMicro VFS
* - File IO Passthru's
*/
-#include <common.h>
+#include <acess.h>
#include "vfs.h"
#include "vfs_int.h"
// === GLOBALS ===
int gVFS_NextInodeHandle = 1;
- int gilVFS_InodeCache = 0;
+tShortSpinlock glVFS_InodeCache;
tInodeCache *gVFS_InodeCache = NULL;
// === CODE ===
ent->Next = NULL; ent->FirstNode = NULL;
// Add to list
- LOCK( &gilVFS_InodeCache );
+ SHORTLOCK( &glVFS_InodeCache );
ent->Next = gVFS_InodeCache;
gVFS_InodeCache = ent;
- RELEASE( &gilVFS_InodeCache );
+ SHORTREL( &glVFS_InodeCache );
return gVFS_NextInodeHandle-1;
}
tCachedInode *ent, *prev;
cache = Inode_int_GetFSCache(Handle);
- if(!cache) return;
+ if(!cache) return ;
- if(Inode > cache->MaxCached) return;
+ if(Inode > cache->MaxCached) return ;
// Search Cache
ent = cache->FirstNode;
free(ent);
}
- return;
+ return ;
}
+
+ return ;
}
/**
void Inode_ClearCache(int Handle)
{
tInodeCache *cache;
- tInodeCache *prev = (tInodeCache*) &gVFS_InodeCache;
+ tInodeCache *prev = NULL;
tCachedInode *ent, *next;
// Find the cache
cache && cache->Handle < Handle;
prev = cache, cache = cache->Next
);
- if(!cache) return;
+ if(!cache || cache->Handle != Handle) return;
// Search Cache
ent = cache->FirstNode;
}
// Free Cache
- prev->Next = cache->Next;
+ if(prev == NULL)
+ gVFS_InodeCache = cache->Next;
+ else
+ prev->Next = cache->Next;
free(cache);
}