//------------------------------------------------------------------- // trytimer.cpp // // This demo studies the effects of the 'setitimer()' function // on timer-related fields within the 'task_struct' structure. // Requires our 'timerinfo.o' module in the current directory. // // programmer: ALLAN CRUSE // date begun: 18 SEP 2004 //------------------------------------------------------------------- #include // for printf(), perror() #include // for open() #include // for system(), exit() #include // for read(), close() #include // for signal() #include // for setitimer() char filename[] = "/proc/timerinfo"; int main( int argc, char **argv ) { system(" /sbin/insmod timerinfo.o" ); signal( SIGALRM, SIG_IGN ); int fd = open( filename, O_RDONLY ); if ( fd < 0 ) { perror( filename ); exit(1); } char buffer[ 1024 ] = {0}; int nbytes = read( fd, buffer, sizeof buffer ); if ( nbytes < 0 ) { perror( "read" ); exit(1); } else write( 1, buffer, nbytes ); struct itimerval it, oldit; it.it_value.tv_sec = 2; it.it_value.tv_usec = 0; it.it_interval.tv_sec = 1; it.it_interval.tv_usec = 0; setitimer( ITIMER_REAL, &it, &oldit ); lseek( fd, 0, SEEK_SET ); nbytes = read( fd, buffer, sizeof buffer ); if ( nbytes < 0 ) { perror( "read" ); exit(1); } else write( 1, buffer, nbytes ); getchar(); lseek( fd, 0, SEEK_SET ); nbytes = read( fd, buffer, sizeof buffer ); if ( nbytes < 0 ) { perror( "read" ); exit(1); } else write( 1, buffer, nbytes ); close( fd ); printf( "\n" ); system(" /sbin/rmmod timerinfo" ); }