Reset shared memory when start time is reset

This commit is contained in:
Stéphane Veyret
2022-06-13 11:42:35 +02:00
parent b61fade280
commit 431f09eb19

View File

@@ -710,6 +710,25 @@ static void next_time(struct timespec *tp, struct timespec *ticklen)
}
}
static void reset_time()
{
system_time_from_system(&ftpl_starttime);
if (shared_sem != NULL)
{
if (sem_wait(shared_sem) == -1)
{
perror("libfaketime: In reset_time(), sem_wait failed");
exit(1);
}
ft_shared->start_time = ftpl_starttime;
if (sem_post(shared_sem) == -1)
{
perror("libfaketime: In reset_time(), sem_post failed");
exit(1);
}
}
}
/*
* =======================================================================
@@ -2533,7 +2552,7 @@ static void parse_ft_string(const char *user_faked_time)
/* Reset starttime */
if (NULL == getenv("FAKETIME_DONT_RESET"))
system_time_from_system(&ftpl_starttime);
reset_time();
goto parse_modifiers;
break;
@@ -2561,7 +2580,7 @@ static void parse_ft_string(const char *user_faked_time)
}
}
if (NULL == getenv("FAKETIME_DONT_RESET"))
system_time_from_system(&ftpl_starttime);
reset_time();
goto parse_modifiers;
break;