From: Andrey Rys Date: Sun, 28 Nov 2021 13:07:23 +0000 (+0100) Subject: moving to clock_gettime and add correction of time spent in freezed state. X-Git-Url: https://jxself.org/git/?a=commitdiff_plain;h=96e6e88fd94af95e15d143e4a86d5a9e858d340d;p=tfcrypt.git moving to clock_gettime and add correction of time spent in freezed state. --- diff --git a/VERSION b/VERSION index c739b42..ea90ee3 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -44 +45 diff --git a/tfc_misc.c b/tfc_misc.c index 3bfd214..a39f459 100644 --- a/tfc_misc.c +++ b/tfc_misc.c @@ -85,11 +85,11 @@ const char *tfc_modename(int mode) void tfc_getcurtime(tfc_useconds *tx) { - struct timeval t; + struct timespec t; memset(&t, 0, sizeof(t)); - gettimeofday(&t, NULL); - *tx = (tfc_useconds)t.tv_sec * 1000000 + t.tv_usec; + clock_gettime(CLOCK_MONOTONIC, &t); + *tx = (tfc_useconds)t.tv_sec * 1000000 + (t.tv_nsec / 1000); memset(&t, 0, sizeof(t)); } @@ -108,10 +108,10 @@ char *tfc_format_time(tfc_useconds t) minutes = (secs / 60) % 60; seconds = secs % 60; - if (days > 0) sprintf(r, "%ud,%02u:%02u:%02u.%03u", days, hours, minutes, seconds, (unsigned)(dsecs / 1000)); - else if (hours > 0) sprintf(r, "%02u:%02u:%02u.%03u", hours, minutes, seconds, (unsigned)(dsecs / 1000)); - else if (minutes > 0) sprintf(r, "%02u:%02u.%03u", minutes, seconds, (unsigned)(dsecs / 1000)); - else sprintf(r, "%02u.%03u", seconds, (unsigned)(dsecs / 1000)); + if (days > 0) sprintf(r, "%ud,%02u:%02u:%02u.%04u", days, hours, minutes, seconds, (unsigned)(dsecs / 100)); + else if (hours > 0) sprintf(r, "%02u:%02u:%02u.%04u", hours, minutes, seconds, (unsigned)(dsecs / 100)); + else if (minutes > 0) sprintf(r, "%02u:%02u.%04u", minutes, seconds, (unsigned)(dsecs / 100)); + else sprintf(r, "%02u.%04u", seconds, (unsigned)(dsecs / 100)); return r; } diff --git a/tfc_signal.c b/tfc_signal.c index b2862ee..4c91819 100644 --- a/tfc_signal.c +++ b/tfc_signal.c @@ -35,7 +35,14 @@ void exit_sigterm(int signal) void handle_sigtstp(int signal) { - if (signal == SIGTSTP) kill(getpid(), SIGSTOP); + if (signal == SIGTSTP) { + tfc_useconds freeze_start, freeze_end; + + tfc_getcurtime(&freeze_start); + kill(getpid(), SIGSTOP); + tfc_getcurtime(&freeze_end); + total_time -= (freeze_end - freeze_start); + } } void print_crypt_status(int signal) @@ -79,8 +86,7 @@ void print_crypt_status(int signal) "avg. speed %llu (%.2f%s) B/s, time %.4fs.", oper_mode, total_processed_src, human_totalproc_src, tfc_getscale(src_scale_idx), - wr_speed, human_wr_speed, tfc_getscale(wr_speed_scale), - TFC_UTODSECS(current_time - delta_time)); + wr_speed, human_wr_speed, tfc_getscale(wr_speed_scale), seconds); tfc_esay("\n"); xexit(0); } diff --git a/tfcrypt.h b/tfcrypt.h index e9aedd6..67b4956 100644 --- a/tfcrypt.h +++ b/tfcrypt.h @@ -61,6 +61,7 @@ #include #include #include +#include #include #include