Back to index

glibc  2.9
Defines | Functions
tst-timer.c File Reference
#include <errno.h>
#include <signal.h>
#include <stdio.h>
#include <time.h>
#include <unistd.h>

Go to the source code of this file.

Defines

#define ZSIGALRM   14

Functions

static void notify_func (union sigval sigval)
static void signal_func (int sig)
static void intr_sleep (int sec)
int main (void)

Define Documentation

#define ZSIGALRM   14

Definition at line 55 of file tst-timer.c.


Function Documentation

static void intr_sleep ( int  sec) [static]

Definition at line 44 of file tst-timer.c.

{
  struct timespec ts;

  ts.tv_sec = sec;
  ts.tv_nsec = 0;

  while (nanosleep (&ts, &ts) == -1 && errno == EINTR)
    ;
}

Here is the caller graph for this function:

int main ( void  )

Definition at line 59 of file tst-timer.c.

{
  struct timespec ts;
  timer_t timer_sig, timer_thr1, timer_thr2;
  int retval;
  struct sigevent sigev1 =
  {
    .sigev_notify = SIGEV_SIGNAL,
    .sigev_signo = ZSIGALRM
  };
  struct sigevent sigev2;
  struct itimerspec itimer1 = { { 0, 200000000 }, { 0, 200000000 } };
  struct itimerspec itimer2 = { { 0, 100000000 }, { 0, 500000000 } };
  struct itimerspec itimer3 = { { 0, 150000000 }, { 0, 300000000 } };
  struct itimerspec old;

  retval = clock_gettime (CLOCK_REALTIME, &ts);

  sigev2.sigev_notify = SIGEV_THREAD;
  sigev2.sigev_notify_function = notify_func;
  sigev2.sigev_notify_attributes = NULL;

  setvbuf (stdout, 0, _IOLBF, 0);

  printf ("clock_gettime returned %d, timespec = { %ld, %ld }\n",
         retval, ts.tv_sec, ts.tv_nsec);

  retval = clock_getres (CLOCK_REALTIME, &ts);

  printf ("clock_getres returned %d, timespec = { %ld, %ld }\n",
         retval, ts.tv_sec, ts.tv_nsec);

  timer_create (CLOCK_REALTIME, &sigev1, &timer_sig);
  timer_create (CLOCK_REALTIME, &sigev2, &timer_thr1);
  timer_create (CLOCK_REALTIME, &sigev2, &timer_thr2);

  timer_settime (timer_thr1, 0, &itimer2, &old);
  timer_settime (timer_thr2, 0, &itimer3, &old);

  signal (ZSIGALRM, signal_func);

  timer_settime (timer_sig, 0, &itimer1, &old);

  timer_delete (-1);

  intr_sleep (3);

  timer_delete (timer_sig);
  timer_delete (timer_thr1);

  intr_sleep (3);

  timer_delete (timer_thr2);

  return 0;
}

Here is the call graph for this function:

static void notify_func ( union sigval  sigval) [static]

Definition at line 29 of file tst-timer.c.

{
  puts ("notify_func");
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void signal_func ( int  sig) [static]

Definition at line 36 of file tst-timer.c.

{
  static const char text[] = "signal_func\n";
  signal (sig, signal_func);
  write (STDOUT_FILENO, text, sizeof text - 1);
}

Here is the call graph for this function:

Here is the caller graph for this function: