summaryrefslogtreecommitdiffstats
path: root/hwclock/hwclock.c
diff options
context:
space:
mode:
authorSami Kerola2011-07-25 22:08:40 +0200
committerSami Kerola2011-07-26 18:15:14 +0200
commitea0804b0c7deaf462ba5ce35289b773c054433a2 (patch)
tree44a3087d917aea866d50ce3a3ddda27c44084a02 /hwclock/hwclock.c
parenthwclock: fix compiler warnings (diff)
downloadkernel-qcow2-util-linux-ea0804b0c7deaf462ba5ce35289b773c054433a2.tar.gz
kernel-qcow2-util-linux-ea0804b0c7deaf462ba5ce35289b773c054433a2.tar.xz
kernel-qcow2-util-linux-ea0804b0c7deaf462ba5ce35289b773c054433a2.zip
hwclock: remove goto statement
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Diffstat (limited to 'hwclock/hwclock.c')
-rw-r--r--hwclock/hwclock.c34
1 files changed, 21 insertions, 13 deletions
diff --git a/hwclock/hwclock.c b/hwclock/hwclock.c
index 30ee856bd..f070b19aa 100644
--- a/hwclock/hwclock.c
+++ b/hwclock/hwclock.c
@@ -516,15 +516,7 @@ set_hardware_clock_exact(const time_t sethwtime,
time_t newhwtime;
struct timeval beginsystime, nowsystime;
double tdiff;
-
- time_resync:
- gettimeofday(&beginsystime, NULL);
- tdiff = time_diff(beginsystime, refsystime);
- newhwtime = sethwtime + (int)(tdiff + 0.5);
- if (debug)
- printf(_
- ("Time elapsed since reference time has been %.6f seconds.\n"
- "Delaying further to reach the new time.\n"), tdiff);
+ int time_resync = 1;
/*
* Now delay some more until Hardware Clock time newhwtime arrives.
@@ -533,12 +525,28 @@ set_hardware_clock_exact(const time_t sethwtime,
* second precisely 500 ms after you finish the setting).
*/
do {
+ if (time_resync) {
+ gettimeofday(&beginsystime, NULL);
+ tdiff = time_diff(beginsystime, refsystime);
+ newhwtime = sethwtime + (int)(tdiff + 0.5);
+ if (debug)
+ printf(_
+ ("Time elapsed since reference time has been %.6f seconds.\n"
+ "Delaying further to reach the new time.\n"),
+ tdiff);
+ time_resync = 0;
+ }
+
gettimeofday(&nowsystime, NULL);
tdiff = time_diff(nowsystime, beginsystime);
- if (tdiff < 0)
- goto time_resync; /* probably backward time reset */
- if (tdiff > 0.1)
- goto time_resync; /* probably forward time reset */
+ if (tdiff < 0) {
+ time_resync = 1; /* probably backward time reset */
+ continue;
+ }
+ if (tdiff > 0.1) {
+ time_resync = 1; /* probably forward time reset */
+ continue;
+ }
beginsystime = nowsystime;
tdiff = time_diff(nowsystime, refsystime);
} while (newhwtime == sethwtime + (int)(tdiff + 0.5));