Back to index

glibc  2.9
Functions | Variables
eintr.c File Reference
#include <pthread.h>
#include <signal.h>
#include <unistd.h>
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

static void eintr_handler (int sig)
static void * eintr_source (void *arg)
static void setup_eintr (int sig, pthread_t *thp)

Variables

static int the_sig

Function Documentation

static void eintr_handler ( int  sig) [static]

Definition at line 29 of file eintr.c.

{
  if (sig != the_sig)
    {
      write (STDOUT_FILENO, "eintr_handler: signal number wrong\n", 35);
      _exit (1);
    }
  write (STDOUT_FILENO, ".", 1);
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void* eintr_source ( void *  arg) [static]

Definition at line 41 of file eintr.c.

{
  struct timespec ts = { .tv_sec = 0, .tv_nsec = 500000 };

  if (arg == NULL)
    {
      sigset_t ss;
      sigemptyset (&ss);
      sigaddset (&ss, the_sig);
      pthread_sigmask (SIG_BLOCK, &ss, NULL);
    }

  while (1)
    {
      if (arg != NULL)
       pthread_kill (*(pthread_t *) arg, the_sig);
      else
       kill (getpid (), the_sig);

      nanosleep (&ts, NULL);
    }

  /* NOTREACHED */
  return NULL;
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void setup_eintr ( int  sig,
pthread_t thp 
) [static]

Definition at line 69 of file eintr.c.

{
  struct sigaction sa;
  sigemptyset (&sa.sa_mask);
  sa.sa_flags = 0;
  sa.sa_handler = eintr_handler;
  if (sigaction (sig, &sa, NULL) != 0)
    {
      puts ("setup_eintr: sigaction failed");
      exit (1);
    }
  the_sig = sig;

  /* Create the thread which will fire off the signals.  */
  pthread_t th;
  if (pthread_create (&th, NULL, eintr_source, thp) != 0)
    {
      puts ("setup_eintr: pthread_create failed");
      exit (1);
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:


Variable Documentation

int the_sig [static]

Definition at line 25 of file eintr.c.