I have only had the opportunity to try this on a single architecture
(ia64), so if anyone can convince me that it's a platform-specific
problem I'll be happy to take my gripe to the ia64 list. I've tried to
figure out how the usecs are converted to jiffies, but the code is
sufficiently convoluted that I thought I'd throw it out in the hope of
finding someone who understands the situation a little better.
- Richard
// When run, this program should print "handled alarm" from within the
// signal handler, and "out of sigsuspend" right after. It works on
// 2.4.20 or if MY_TIMER_USEC is >= 2, but not on 2.5.69 with
// MY_TIMER_USEC = 1.
#define MY_TIMER_USEC 1
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <sys/time.h>
void
alarm_handler( int x )
{
printf( "handled alarm\n" );
return;
}
int
main()
{
struct itimerval it = { { 0, 0 }, { 0, MY_TIMER_USEC } };
sigset_t mask;
struct sigaction act;
act.sa_handler = alarm_handler;
act.sa_flags = 0;
sigemptyset( &act.sa_mask );
if( sigaction(SIGALRM, &act, 0) ) {
perror( "sigaction" );
exit( 1 );
}
if( setitimer(ITIMER_REAL, &it, 0) ) {
perror( "setitimer" );
exit( 1 );
}
sigemptyset( &mask );
sigsuspend( &mask );
printf( "out of sigsuspend\n" );
return 0;
}
-- Richard C. Bilson, Research Assistant | School of Computer Science rcbilson@plg.uwaterloo.ca | University of Waterloo http://plg.uwaterloo.ca/~rcbilson | 200 University Avenue West Office: DC 3548F Ph: (519)888-4567x4822 | Waterloo, Ontario, CANADA N2L 3G1 - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/