title: 1ms resolution timer under linux recommended way
body: <p>I need a timer tick with 1ms resolution under linux. It is used to increment a timer value that in turn is used to see if various Events should be triggered. The POSIX timerfd_create is not an option because of the glibc requirement. I tried timer_create and timer_settimer, but the best I get from them is a 10ms resolution, smaller values seem to default to 10ms resolution. Getittimer and setitimer have a 10 ms resolution according to the manpage.</p>
  
  <p>The only way to do this timer I can currently think of is to use clock_gettime with CLOCK_MONOTONIC in my main loop an test if a ms has passed, and if so to increase the counter (and then check if the various Events should fire).</p>
  
  <p>Is there a better way to do this than to constantly query in the main loop? What is the recommended solution to this?</p>
  
  <p>The language I am using is plain old c</p>
  
  <p><strong>Update</strong><br>
  I am using a 2.6.26 Kernel. I know you can have it interrupt at 1kHz, and the POSIX timer_* functions then can be programmed to up to 1ms but that seems not to be reliable and I don't want to use that, because it may need a new kernel on some Systems. Some stock Kernel seem to still have the 100Hz configured. And I would need to detect that. The application may be run on something else than my System :)</p>
  
  <p>I can not sleep for 1ms because there may be network events I have to react to.</p>
  
  <p><strong>How I resolved it</strong>
  Since it is not that important I simply declared that the global timer has a 100ms resolution. All events using their own timer have to set at least 100ms for timer expiration. I was more or less wondering if there would be a better way, hence the question.</p>
  
  <p><strong>Why I accepted the answer</strong>
  I think the answer from freespace best described why it is not really possible without a realtime Linux System.</p>