Hi, all I'm working on a test which invoking setitimer(), and it hang in ia32 and ppc, but passed in amd64, could you guys give some help? 1, I know the 'value.it_interval.tv_usec' is too short, but why amd64 passed? 2, If I switch clock source from "tsc" to "hpet" on ia32, it passed. 3, I compiled it in ia32 and run it with ia32-libs in amd64, it passed. Here is the source: #include <sys/time.h> #include <signal.h> #include <unistd.h> #include <stdio.h> #include <time.h> #include <errno.h> #define LOOP_LIMIT 1E2 volatile int sigcount = 0; void catcher(int sig) { struct itimerval value; int which = ITIMER_REAL; sigcount++; if (sigcount > 1) { getitimer(which, &value); value.it_value.tv_sec = 0; value.it_value.tv_usec = 0; /*setitimer( which, &value, NULL ); */ } } int main(int argc, char *argv[]) { int result = 0; struct itimerval value, ovalue, pvalue; int which = ITIMER_REAL; struct sigaction sact; volatile double count; time_t t; sigemptyset(&sact.sa_mask); sact.sa_flags = 0; sact.sa_handler = catcher; sigaction(SIGALRM, &sact, NULL); getitimer(which, &pvalue); /*Set a real time interval timer to repeat */ value.it_interval.tv_sec = 0; value.it_interval.tv_usec = 1; value.it_value.tv_sec = 0; value.it_value.tv_usec = 5; result = setitimer(which, &value, &ovalue); /*The interval timer value returned by setitimer() should be */ /*identical to the timer value returned by getitimer() */ if (ovalue.it_interval.tv_sec != pvalue.it_interval.tv_sec || ovalue.it_interval.tv_usec != pvalue.it_interval.tv_usec || ovalue.it_value.tv_sec != pvalue.it_value.tv_sec || ovalue.it_value.tv_usec != pvalue.it_value.tv_usec) { printf("Real time interval timer mismatch, test Failed\n"); result = -1; } time(&t); printf("Before loop, time is %s", ctime(&t)); for (count = 0; ((count < LOOP_LIMIT)); count++) ; time(&t); printf("After loop, time is %s\n", ctime(&t)); if (sigcount == 0) printf("The signal catcher never gained control\n"); else printf("The signal catcher gained control\n"); printf("The value of count is %.0f\n", count); return (result); } -- Regards, Adam Lee -------------------------------------------------- E-mail: adam8157@xxxxxxxxx Website: http://www.adam8157.info -------------------------------------------------- _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies