diff --git a/src/backend/file.c b/src/backend/file.c index cd22d00ba..8302f9149 100644 --- a/src/backend/file.c +++ b/src/backend/file.c @@ -95,7 +95,6 @@ lumiera_file_handle_acquire (LumieraFile self) TRACE (file_dbg); REQUIRE (self); REQUIRE (self->descriptor); - REQUIRE (lumiera_fhcache); return lumiera_filedescriptor_handle_acquire (self->descriptor); } @@ -107,7 +106,6 @@ lumiera_file_handle_release (LumieraFile self) TRACE (file_dbg); REQUIRE (self); REQUIRE (self->descriptor); - REQUIRE (lumiera_fhcache); return lumiera_filedescriptor_handle_release (self->descriptor); } diff --git a/src/backend/filedescriptor.c b/src/backend/filedescriptor.c index 876fc0768..849b2cd84 100644 --- a/src/backend/filedescriptor.c +++ b/src/backend/filedescriptor.c @@ -214,9 +214,9 @@ lumiera_filedescriptor_handle_acquire (LumieraFiledescriptor self) { if (!self->handle) /* no handle yet, get a new one */ - lumiera_filehandlecache_handle_acquire (lumiera_fhcache, self); + lumiera_filehandlecache_handle_acquire (self); else - lumiera_filehandlecache_checkout (lumiera_fhcache, self->handle); + lumiera_filehandlecache_checkout (self->handle); fd = lumiera_filehandle_handle (self->handle); } @@ -232,7 +232,7 @@ lumiera_filedescriptor_handle_release (LumieraFiledescriptor self) REQUIRE (self->handle); LUMIERA_MUTEX_SECTION (mutex_sync, &self->lock) - lumiera_filehandlecache_checkin (lumiera_fhcache, self->handle); + lumiera_filehandlecache_checkin (self->handle); } @@ -299,11 +299,11 @@ lumiera_filedescriptor_delete (LumieraFiledescriptor self, const char* name) if (self->handle && name && ((self->flags & O_RDWR) == O_RDWR)) { TRACE (filedescriptor_dbg, "truncate %s to %lld", name, (long long)self->realsize); - lumiera_filehandlecache_checkout (lumiera_fhcache, self->handle); + lumiera_filehandlecache_checkout (self->handle); int dummy = ftruncate (lumiera_filehandle_handle (self->handle), self->realsize); (void) dummy; /* this is present to silence a warning */ TODO ("handle error case better"); - lumiera_filehandlecache_checkin (lumiera_fhcache, self->handle); + lumiera_filehandlecache_checkin (self->handle); } lumiera_mmapings_delete (self->mmapings); diff --git a/src/backend/filehandlecache.c b/src/backend/filehandlecache.c index f2cf4623b..2f5002e58 100644 --- a/src/backend/filehandlecache.c +++ b/src/backend/filehandlecache.c @@ -64,21 +64,21 @@ lumiera_filehandlecache_delete (void) LumieraFilehandle -lumiera_filehandlecache_handle_acquire (LumieraFilehandlecache self, LumieraFiledescriptor desc) +lumiera_filehandlecache_handle_acquire (LumieraFiledescriptor desc) { TRACE (filehandlecache_dbg); LumieraFilehandle ret = NULL; - LUMIERA_MUTEX_SECTION (mutex_sync, &self->lock) + LUMIERA_MUTEX_SECTION (mutex_sync, &lumiera_fhcache->lock) { - if (self->available <= 0 && self->cache.cached) + if (lumiera_fhcache->available <= 0 && lumiera_fhcache->cache.cached) { /* pop a filehandle from cache */ - ret = lumiera_mrucache_pop (&self->cache); - ret = lumiera_filehandle_init (lumiera_mrucache_pop (&self->cache), desc); - if (self->available < 0) + ret = lumiera_mrucache_pop (&lumiera_fhcache->cache); + ret = lumiera_filehandle_init (lumiera_mrucache_pop (&lumiera_fhcache->cache), desc); + if (lumiera_fhcache->available < 0) /* try to free overallocated filehandles */ - self->available -= self->available + lumiera_mrucache_age (&self->cache, -self->available); + lumiera_fhcache->available -= lumiera_fhcache->available + lumiera_mrucache_age (&lumiera_fhcache->cache, -lumiera_fhcache->available); } else { @@ -89,51 +89,49 @@ lumiera_filehandlecache_handle_acquire (LumieraFilehandlecache self, LumieraFile if (!ret) LUMIERA_ERROR_SET_ALERT (file, FILEHANDLECACHE_NOHANDLE, lumiera_filedescriptor_name (desc)); else - --self->available; + --lumiera_fhcache->available; } desc->handle = ret; - ++self->checked_out; + ++lumiera_fhcache->checked_out; } return ret; } LumieraFilehandle -lumiera_filehandlecache_checkout (LumieraFilehandlecache self, LumieraFilehandle handle) +lumiera_filehandlecache_checkout (LumieraFilehandle handle) { - REQUIRE (self); REQUIRE (handle); /* This function is called with the associated descriptor locked, nothing can modify 'handle' */ if (!handle->use_cnt) { /* lock cache and checkout */ - LUMIERA_MUTEX_SECTION (mutex_sync, &self->lock) + LUMIERA_MUTEX_SECTION (mutex_sync, &lumiera_fhcache->lock) { - lumiera_mrucache_checkout (&self->cache, &handle->cachenode); + lumiera_mrucache_checkout (&lumiera_fhcache->cache, &handle->cachenode); } } ++handle->use_cnt; - ++self->checked_out; + ++lumiera_fhcache->checked_out; return handle; } void -lumiera_filehandlecache_checkin (LumieraFilehandlecache self, LumieraFilehandle handle) +lumiera_filehandlecache_checkin (LumieraFilehandle handle) { - REQUIRE (self); REQUIRE (handle); REQUIRE (handle->use_cnt); - /* This function is called with the associated descriptor locked, nothing can modify 'self' */ + /* This function is called with the associated descriptor locked, nothing can modify the fhcache */ if (!--handle->use_cnt) { /* lock cache and checin */ - LUMIERA_MUTEX_SECTION (mutex_sync, &self->lock) + LUMIERA_MUTEX_SECTION (mutex_sync, &lumiera_fhcache->lock) { - --self->checked_out; - lumiera_mrucache_checkin (&self->cache, &handle->cachenode); + --lumiera_fhcache->checked_out; + lumiera_mrucache_checkin (&lumiera_fhcache->cache, &handle->cachenode); } } } diff --git a/src/backend/filehandlecache.h b/src/backend/filehandlecache.h index 41030425d..29a023b17 100644 --- a/src/backend/filehandlecache.h +++ b/src/backend/filehandlecache.h @@ -51,8 +51,6 @@ struct lumiera_filehandlecache_struct lumiera_mutex lock; }; -extern LumieraFilehandlecache lumiera_fhcache; - /** * Initializes the filehandle cache. * @param max_entries number how much filehandles shall be managed @@ -76,7 +74,7 @@ lumiera_filehandlecache_delete (void); * @return the new filehandle */ LumieraFilehandle -lumiera_filehandlecache_handle_acquire (LumieraFilehandlecache self, LumieraFiledescriptor desc); +lumiera_filehandlecache_handle_acquire (LumieraFiledescriptor desc); /** * Remove a filehandle from cache aging @@ -85,7 +83,7 @@ lumiera_filehandlecache_handle_acquire (LumieraFilehandlecache self, LumieraFile * @param handle the filehandle to be checked out */ LumieraFilehandle -lumiera_filehandlecache_checkout (LumieraFilehandlecache self, LumieraFilehandle handle); +lumiera_filehandlecache_checkout (LumieraFilehandle handle); /** * Put a filehandle into the cache @@ -94,6 +92,6 @@ lumiera_filehandlecache_checkout (LumieraFilehandlecache self, LumieraFilehandle * @param handle the filehandle to be checked in */ void -lumiera_filehandlecache_checkin (LumieraFilehandlecache self, LumieraFilehandle handle); +lumiera_filehandlecache_checkin (LumieraFilehandle handle); #endif