diff options
| author | Miika Pekkarinen <miipekk@ihme.org> | 2006-03-28 11:51:12 +0000 |
|---|---|---|
| committer | Miika Pekkarinen <miipekk@ihme.org> | 2006-03-28 11:51:12 +0000 |
| commit | 2d93495df2dd0c7c61fa73e07bb8fcae3d1ea5fd (patch) | |
| tree | 38d90cb0894b238b84cfa88b3e4cc3658b8a7ced /firmware/common/dircache.c | |
| parent | 6784e0333f3d8ee806a7eacbf2b709f45ffea0f5 (diff) | |
| download | rockbox-2d93495df2dd0c7c61fa73e07bb8fcae3d1ea5fd.zip rockbox-2d93495df2dd0c7c61fa73e07bb8fcae3d1ea5fd.tar.gz rockbox-2d93495df2dd0c7c61fa73e07bb8fcae3d1ea5fd.tar.bz2 rockbox-2d93495df2dd0c7c61fa73e07bb8fcae3d1ea5fd.tar.xz | |
Boost open() performance on platforms with dircache. Tagcache initial
scanning now over 50% faster than before.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9306 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/common/dircache.c')
| -rw-r--r-- | firmware/common/dircache.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/firmware/common/dircache.c b/firmware/common/dircache.c index f9fd63b..873e0f9 100644 --- a/firmware/common/dircache.c +++ b/firmware/common/dircache.c @@ -798,12 +798,20 @@ void dircache_bind(int fd, const char *path) fd_bindings[fd] = entry; } -void dircache_update_filesize(int fd, long newsize) +void dircache_update_filesize(int fd, long newsize, long startcluster) { if (!dircache_initialized || fd < 0) return ; + if (fd_bindings[fd] == NULL) + { + logf("dircache fd access error"); + dircache_initialized = false; + return ; + } + fd_bindings[fd]->size = newsize; + fd_bindings[fd]->startcluster = startcluster; } void dircache_mkdir(const char *path) @@ -915,13 +923,19 @@ void dircache_rename(const char *oldpath, const char *newpath) newentry->wrtdate = oldentry.wrtdate; } -void dircache_add_file(const char *path) +void dircache_add_file(const char *path, long startcluster) { + struct dircache_entry *entry; + if (!dircache_initialized) return ; logf("add file: %s", path); - dircache_new_entry(path, 0); + entry = dircache_new_entry(path, 0); + if (entry == NULL) + return ; + + entry->startcluster = startcluster; } DIRCACHED* opendir_cached(const char* name) |