While working on implementing the settimeofday function in the linuxolator, I was using the LTP testcase settimeofday01 to test it. Running this test caused the system to hang for 24-30 minutes. I then decided to rewrite the testcase so that it would run on FreeBSD, and it also hung the system for 24-30 minutes. What the settimeofday01 test was doing is to set the time to a known value (100 sec, 100 usec) and then use gettimeofday to retrieve the current time. It then compared the returned value to check if it was within +/- 500 msec. I have since reduced the testcode down to the following testcase that is causing the hang. Any ideals as to what could be causing this hang? Scot #include <sys/time.h> #include <errno.h> #include <unistd.h> #define VAL_SEC 100 #define VAL_MSEC 100 int main(int argc, char **argv) { struct timeval tp, tp1, save_tv; long return_test, errno_test; suseconds_t delta; #define TEST(SCALL) \ do { \ errno = 0; \ return_test = SCALL; \ errno_test = errno; \ } while (0) /* Save the current time values */ if ((gettimeofday(&save_tv, (struct timezone *)&tp1)) == -1) { printf("BROK: gettimeofday failed. errno=%d\n", errno); exit(1); } else { printf("INFO: Saved current time\n"); } tp.tv_sec = VAL_SEC; tp.tv_usec = VAL_MSEC; /* Hang occurs here */ TEST(settimeofday(&tp, NULL)); if (return_test == -1) { printf("FAIL: Error Setting Time, errno=%d\n", errno_test); } else { printf("INFO: settimeofday completed sucessfully\n"); } /* restore the original time values. */ if ((settimeofday(&save_tv, NULL)) == -1) { printf("WARN: FATAL COULD NOT RESET THE CLOCK\n"); printf("FAIL: Error Setting Time, errno=%d (%d, %d)\n", errno, tp.tv_sec, tp.tv_usec); } else { printf("INFO: Reset time to original value\n"); } return(0); } -- DISCLAIMER: No electrons were mamed while sending this message. Only slightly bruised.Received on Tue Dec 19 2006 - 16:43:04 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:04 UTC