public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Richard C Bilson <rcbilson@plg2.math.uwaterloo.ca>
To: linux-kernel@vger.kernel.org
Subject: setitimer 1 usec fails
Date: Mon, 26 May 2003 17:09:34 -0400	[thread overview]
Message-ID: <200305262109.RAA23875@plg2.math.uwaterloo.ca> (raw)

In trying the latest development kernel, I've noticed that calling
setitimer with a 1 usec delay (the shortest possible delay) results in
the timer never going off.  2 usec is ok but 1 is not, so I suspect
that somehow things are being rounded off incorrectly.  The attached
program demonstrates the problem on 2.5.69, but runs correctly on a
2.4.20 kernel.

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

             reply	other threads:[~2003-05-26 20:55 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-05-26 21:09 Richard C Bilson [this message]
     [not found] <20030526142555.67a79694.akpm@digeo.com>
2003-05-26 22:00 ` setitimer 1 usec fails george anzinger
2003-05-27  9:05   ` Eric Piel
2003-05-27 18:27   ` David Mosberger
2003-05-27 20:01     ` george anzinger
  -- strict thread matches above, loose matches on Subject: below --
2003-05-27 17:19 Richard C Bilson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200305262109.RAA23875@plg2.math.uwaterloo.ca \
    --to=rcbilson@plg2.math.uwaterloo.ca \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox