VFS GC: use mc_timer.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
This commit is contained in:
Andrew Borodin 2020-03-01 19:55:34 +03:00
parent 7a58b5e498
commit a94dd7d2de
25 changed files with 58 additions and 23 deletions

View File

@ -39,13 +39,12 @@
#include <config.h> #include <config.h>
#include <stdlib.h> /* For atol() */ #include <stdlib.h>
#include <sys/types.h>
#include <sys/time.h> /* gettimeofday() */
#include "lib/global.h" #include "lib/global.h"
#include "lib/event.h" #include "lib/event.h"
#include "lib/util.h" /* MC_PTR_FREE */ #include "lib/util.h" /* MC_PTR_FREE */
#include "lib/timer.h"
#include "vfs.h" #include "vfs.h"
#include "utilvfs.h" #include "utilvfs.h"
@ -99,7 +98,7 @@ struct vfs_stamping
{ {
struct vfs_class *v; struct vfs_class *v;
vfsid id; vfsid id;
struct timeval time; guint64 time;
}; };
/*** file scope variables ************************************************************************/ /*** file scope variables ************************************************************************/
@ -110,17 +109,6 @@ static GSList *stamps = NULL;
/*** file scope functions ************************************************************************/ /*** file scope functions ************************************************************************/
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */
/** Compare two timeval structures. Return TRUE if t1 is less than t2. */
static gboolean
timeoutcmp (const struct timeval *t1, const struct timeval *t2)
{
return ((t1->tv_sec < t2->tv_sec)
|| ((t1->tv_sec == t2->tv_sec) && (t1->tv_usec <= t2->tv_usec)));
}
/* --------------------------------------------------------------------------------------------- */
static gint static gint
vfs_stamp_compare (gconstpointer a, gconstpointer b) vfs_stamp_compare (gconstpointer a, gconstpointer b)
{ {
@ -142,7 +130,7 @@ vfs_addstamp (struct vfs_class *v, vfsid id)
stamp = g_new (struct vfs_stamping, 1); stamp = g_new (struct vfs_stamping, 1);
stamp->v = v; stamp->v = v;
stamp->id = id; stamp->id = id;
gettimeofday (&(stamp->time), NULL); stamp->time = mc_timer_elapsed (mc_global.timer);
stamps = g_slist_append (stamps, stamp); stamps = g_slist_append (stamps, stamp);
} }
@ -165,7 +153,7 @@ vfs_stamp (struct vfs_class *v, vfsid id)
stamp = g_slist_find_custom (stamps, &what, vfs_stamp_compare); stamp = g_slist_find_custom (stamps, &what, vfs_stamp_compare);
if (stamp != NULL && stamp->data != NULL) if (stamp != NULL && stamp->data != NULL)
{ {
gettimeofday (&(VFS_STAMPING (stamp->data)->time), NULL); VFS_STAMPING (stamp->data)->time = mc_timer_elapsed (mc_global.timer);
ret = TRUE; ret = TRUE;
} }
@ -251,7 +239,7 @@ void
vfs_expire (gboolean now) vfs_expire (gboolean now)
{ {
static gboolean locked = FALSE; static gboolean locked = FALSE;
struct timeval curr_time, exp_time; guint64 curr_time, exp_time;
GSList *stamp; GSList *stamp;
/* Avoid recursive invocation, e.g. when one of the free functions /* Avoid recursive invocation, e.g. when one of the free functions
@ -260,9 +248,8 @@ vfs_expire (gboolean now)
return; return;
locked = TRUE; locked = TRUE;
gettimeofday (&curr_time, NULL); curr_time = mc_timer_elapsed (mc_global.timer);
exp_time.tv_sec = curr_time.tv_sec - vfs_timeout; exp_time = curr_time - vfs_timeout * G_USEC_PER_SEC;
exp_time.tv_usec = curr_time.tv_usec;
if (now) if (now)
{ {
@ -282,7 +269,7 @@ vfs_expire (gboolean now)
stamping->v->free (stamping->id); stamping->v->free (stamping->id);
MC_PTR_FREE (stamp->data); MC_PTR_FREE (stamp->data);
} }
else if (timeoutcmp (&stamping->time, &exp_time)) else if (stamping->time <= exp_time)
{ {
/* update timestamp of VFS that is in use, or free unused VFS */ /* update timestamp of VFS that is in use, or free unused VFS */
if (stamping->v->nothingisopen != NULL && !stamping->v->nothingisopen (stamping->id)) if (stamping->v->nothingisopen != NULL && !stamping->v->nothingisopen (stamping->id))

View File

@ -43,6 +43,7 @@ static char resolved_path[PATH_MAX];
static void static void
setup (void) setup (void)
{ {
mc_global.timer = mc_timer_new ();
str_init_strings (NULL); str_init_strings (NULL);
vfs_init (); vfs_init ();
vfs_init_localfs (); vfs_init_localfs ();
@ -55,6 +56,7 @@ teardown (void)
{ {
vfs_shut (); vfs_shut ();
str_uninit_strings (); str_uninit_strings ();
mc_timer_destroy (mc_global.timer);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

View File

@ -79,6 +79,7 @@ config_object__deinit (void)
static void static void
setup (void) setup (void)
{ {
mc_global.timer = mc_timer_new ();
str_init_strings ("KOI8-R"); str_init_strings ("KOI8-R");
vfs_init (); vfs_init ();
vfs_init_localfs (); vfs_init_localfs ();
@ -96,6 +97,7 @@ teardown (void)
vfs_shut (); vfs_shut ();
str_uninit_strings (); str_uninit_strings ();
mc_timer_destroy (mc_global.timer);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

View File

@ -59,6 +59,7 @@ setup (void)
g_setenv ("XDG_DATA_HOME", CONF_DATA, TRUE); g_setenv ("XDG_DATA_HOME", CONF_DATA, TRUE);
g_setenv ("XDG_CACHE_HOME", CONF_CACHE, TRUE); g_setenv ("XDG_CACHE_HOME", CONF_CACHE, TRUE);
#endif #endif
mc_global.timer = mc_timer_new ();
str_init_strings ("UTF-8"); str_init_strings ("UTF-8");
vfs_init (); vfs_init ();
vfs_init_localfs (); vfs_init_localfs ();
@ -72,6 +73,7 @@ teardown (void)
{ {
vfs_shut (); vfs_shut ();
str_uninit_strings (); str_uninit_strings ();
mc_timer_destroy (mc_global.timer);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

View File

@ -45,6 +45,7 @@ static struct vfs_class vfs_test_ops;
static void static void
setup (void) setup (void)
{ {
mc_global.timer = mc_timer_new ();
str_init_strings (NULL); str_init_strings (NULL);
vfs_init (); vfs_init ();
@ -71,7 +72,9 @@ teardown (void)
#endif #endif
vfs_shut (); vfs_shut ();
str_uninit_strings (); str_uninit_strings ();
mc_timer_destroy (mc_global.timer);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

View File

@ -55,6 +55,7 @@ test_chdir (const vfs_path_t * vpath)
static void static void
setup (void) setup (void)
{ {
mc_global.timer = mc_timer_new ();
str_init_strings (NULL); str_init_strings (NULL);
vfs_init (); vfs_init ();
@ -74,6 +75,7 @@ teardown (void)
{ {
vfs_shut (); vfs_shut ();
str_uninit_strings (); str_uninit_strings ();
mc_timer_destroy (mc_global.timer);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

View File

@ -42,6 +42,7 @@
static void static void
setup (void) setup (void)
{ {
mc_global.timer = mc_timer_new ();
str_init_strings (NULL); str_init_strings (NULL);
vfs_init (); vfs_init ();
@ -66,6 +67,7 @@ teardown (void)
vfs_shut (); vfs_shut ();
str_uninit_strings (); str_uninit_strings ();
mc_timer_destroy (mc_global.timer);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

View File

@ -42,6 +42,7 @@
static void static void
setup (void) setup (void)
{ {
mc_global.timer = mc_timer_new ();
str_init_strings (NULL); str_init_strings (NULL);
vfs_init (); vfs_init ();
@ -66,6 +67,7 @@ teardown (void)
vfs_shut (); vfs_shut ();
str_uninit_strings (); str_uninit_strings ();
mc_timer_destroy (mc_global.timer);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

View File

@ -60,7 +60,7 @@ init_test_classes (void)
static void static void
setup (void) setup (void)
{ {
mc_global.timer = mc_timer_new ();
str_init_strings (NULL); str_init_strings (NULL);
vfs_init (); vfs_init ();
@ -87,6 +87,7 @@ teardown (void)
vfs_shut (); vfs_shut ();
str_uninit_strings (); str_uninit_strings ();
mc_timer_destroy (mc_global.timer);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

View File

@ -65,6 +65,7 @@ teardown (void)
static void static void
test_init_vfs (const char *encoding) test_init_vfs (const char *encoding)
{ {
mc_global.timer = mc_timer_new ();
str_init_strings (encoding); str_init_strings (encoding);
vfs_init (); vfs_init ();
@ -85,6 +86,7 @@ test_deinit_vfs (void)
free_codepages_list (); free_codepages_list ();
str_uninit_strings (); str_uninit_strings ();
vfs_shut (); vfs_shut ();
mc_timer_destroy (mc_global.timer);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

View File

@ -45,6 +45,7 @@ static struct vfs_class vfs_test_ops1, vfs_test_ops2, vfs_test_ops3;
static void static void
setup (void) setup (void)
{ {
mc_global.timer = mc_timer_new ();
str_init_strings (NULL); str_init_strings (NULL);
vfs_init (); vfs_init ();
@ -78,6 +79,7 @@ teardown (void)
vfs_shut (); vfs_shut ();
str_uninit_strings (); str_uninit_strings ();
mc_timer_destroy (mc_global.timer);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

View File

@ -73,6 +73,7 @@ test_chdir__deinit (void)
static void static void
setup (void) setup (void)
{ {
mc_global.timer = mc_timer_new ();
str_init_strings (NULL); str_init_strings (NULL);
vfs_init (); vfs_init ();
@ -101,6 +102,7 @@ teardown (void)
vfs_shut (); vfs_shut ();
str_uninit_strings (); str_uninit_strings ();
mc_timer_destroy (mc_global.timer);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

View File

@ -45,6 +45,7 @@
static void static void
setup (void) setup (void)
{ {
mc_global.timer = mc_timer_new ();
str_init_strings (NULL); str_init_strings (NULL);
vfs_init (); vfs_init ();
@ -60,6 +61,7 @@ teardown (void)
{ {
vfs_shut (); vfs_shut ();
str_uninit_strings (); str_uninit_strings ();
mc_timer_destroy (mc_global.timer);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

View File

@ -55,6 +55,7 @@ setup (void)
{ {
static struct stat initstat; static struct stat initstat;
mc_global.timer = mc_timer_new ();
str_init_strings (NULL); str_init_strings (NULL);
vfs_init (); vfs_init ();
@ -80,6 +81,7 @@ teardown (void)
vfs_s_free_entry (vfs_test_ops1, vfs_root_entry); vfs_s_free_entry (vfs_test_ops1, vfs_root_entry);
vfs_shut (); vfs_shut ();
str_uninit_strings (); str_uninit_strings ();
mc_timer_destroy (mc_global.timer);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

View File

@ -46,6 +46,7 @@ mc_config_get_home_dir (void)
static void static void
setup (void) setup (void)
{ {
mc_global.timer = mc_timer_new ();
str_init_strings (NULL); str_init_strings (NULL);
vfs_init (); vfs_init ();
@ -61,6 +62,7 @@ teardown (void)
{ {
vfs_shut (); vfs_shut ();
str_uninit_strings (); str_uninit_strings ();
mc_timer_destroy (mc_global.timer);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

View File

@ -48,6 +48,7 @@ static struct vfs_class vfs_test_ops1, vfs_test_ops2, vfs_test_ops3;
static void static void
setup (void) setup (void)
{ {
mc_global.timer = mc_timer_new ();
str_init_strings (NULL); str_init_strings (NULL);
vfs_init (); vfs_init ();
@ -81,6 +82,7 @@ teardown (void)
vfs_shut (); vfs_shut ();
str_uninit_strings (); str_uninit_strings ();
mc_timer_destroy (mc_global.timer);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

View File

@ -55,6 +55,7 @@ test_which (struct vfs_class *me, const char *path)
static void static void
setup (void) setup (void)
{ {
mc_global.timer = mc_timer_new ();
str_init_strings (NULL); str_init_strings (NULL);
vfs_init (); vfs_init ();
@ -80,6 +81,7 @@ teardown (void)
{ {
vfs_shut (); vfs_shut ();
str_uninit_strings (); str_uninit_strings ();
mc_timer_destroy (mc_global.timer);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

View File

@ -82,6 +82,7 @@ test1_mock_archive_same (const vfs_path_element_t * vpath_element, struct vfs_s_
static void static void
setup (void) setup (void)
{ {
mc_global.timer = mc_timer_new ();
str_init_strings (NULL); str_init_strings (NULL);
vfs_init (); vfs_init ();
@ -109,6 +110,7 @@ teardown (void)
{ {
vfs_shut (); vfs_shut ();
str_uninit_strings (); str_uninit_strings ();
mc_timer_destroy (mc_global.timer);
} }

View File

@ -76,6 +76,7 @@ mc_stat (const vfs_path_t * vpath, struct stat *my_stat)
static void static void
setup (void) setup (void)
{ {
mc_global.timer = mc_timer_new ();
str_init_strings (NULL); str_init_strings (NULL);
vfs_init (); vfs_init ();
@ -91,6 +92,7 @@ teardown (void)
{ {
vfs_shut (); vfs_shut ();
str_uninit_strings (); str_uninit_strings ();
mc_timer_destroy (mc_global.timer);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

View File

@ -41,6 +41,7 @@ static struct vfs_class vfs_test_ops1, vfs_test_ops2, vfs_test_ops3;
static void static void
setup (void) setup (void)
{ {
mc_global.timer = mc_timer_new ();
str_init_strings (NULL); str_init_strings (NULL);
vfs_init (); vfs_init ();
@ -65,6 +66,7 @@ teardown (void)
{ {
vfs_shut (); vfs_shut ();
str_uninit_strings (); str_uninit_strings ();
mc_timer_destroy (mc_global.timer);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

View File

@ -238,6 +238,7 @@ mc_ungetlocalcopy__deinit (void)
static void static void
setup (void) setup (void)
{ {
mc_global.timer = mc_timer_new ();
str_init_strings (NULL); str_init_strings (NULL);
vfs_init (); vfs_init ();
vfs_init_localfs (); vfs_init_localfs ();
@ -266,6 +267,7 @@ teardown (void)
vfs_shut (); vfs_shut ();
str_uninit_strings (); str_uninit_strings ();
mc_timer_destroy (mc_global.timer);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

View File

@ -95,6 +95,7 @@ mc_config_get_string__deinit (void)
static void static void
setup (void) setup (void)
{ {
mc_global.timer = mc_timer_new ();
str_init_strings (NULL); str_init_strings (NULL);
vfs_init (); vfs_init ();
vfs_init_localfs (); vfs_init_localfs ();
@ -113,6 +114,7 @@ teardown (void)
vfs_shut (); vfs_shut ();
str_uninit_strings (); str_uninit_strings ();
mc_timer_destroy (mc_global.timer);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

View File

@ -80,6 +80,7 @@ mc_config_get_home_dir (void)
static void static void
setup (void) setup (void)
{ {
mc_global.timer = mc_timer_new ();
str_init_strings (NULL); str_init_strings (NULL);
vfs_init (); vfs_init ();
@ -97,6 +98,7 @@ teardown (void)
vfs_path_free (do_cd__new_dir_vpath__captured); vfs_path_free (do_cd__new_dir_vpath__captured);
vfs_shut (); vfs_shut ();
str_uninit_strings (); str_uninit_strings ();
mc_timer_destroy (mc_global.timer);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

View File

@ -42,6 +42,7 @@
static void static void
setup (void) setup (void)
{ {
mc_global.timer = mc_timer_new ();
str_init_strings (NULL); str_init_strings (NULL);
vfs_init (); vfs_init ();
@ -61,6 +62,7 @@ teardown (void)
{ {
vfs_shut (); vfs_shut ();
str_uninit_strings (); str_uninit_strings ();
mc_timer_destroy (mc_global.timer);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

View File

@ -38,6 +38,7 @@
static void static void
setup (void) setup (void)
{ {
mc_global.timer = mc_timer_new ();
str_init_strings (NULL); str_init_strings (NULL);
vfs_init (); vfs_init ();
@ -53,6 +54,7 @@ teardown (void)
{ {
vfs_shut (); vfs_shut ();
str_uninit_strings (); str_uninit_strings ();
mc_timer_destroy (mc_global.timer);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */