Back to index

glibc  2.9
Defines | Functions
tst-sem1.c File Reference
#include <errno.h>
#include <semaphore.h>
#include <stdio.h>
#include <unistd.h>
#include "../test-skeleton.c"

Go to the source code of this file.

Defines

#define TEST_FUNCTION   do_test ()

Functions

static int do_test (void)

Define Documentation

#define TEST_FUNCTION   do_test ()

Definition at line 88 of file tst-sem1.c.


Function Documentation

static int do_test ( void  ) [static]

Definition at line 27 of file tst-sem1.c.

{
  sem_t s;

  if (sem_init (&s, 0, 1) == -1)
    {
      puts ("init failed");
      return 1;
    }

  if (TEMP_FAILURE_RETRY (sem_wait (&s)) == -1)
    {
      puts ("1st wait failed");
      return 1;
    }

  if (sem_post (&s) == -1)
    {
      puts ("1st post failed");
      return 1;
    }

  if (TEMP_FAILURE_RETRY (sem_trywait (&s)) == -1)
    {
      puts ("1st trywait failed");
      return 1;
    }

  errno = 0;
  if (TEMP_FAILURE_RETRY (sem_trywait (&s)) != -1)
    {
      puts ("2nd trywait succeeded");
      return 1;
    }
  else if (errno != EAGAIN)
    {
      puts ("2nd trywait did not set errno to EAGAIN");
      return 1;
    }

  if (sem_post (&s) == -1)
    {
      puts ("2nd post failed");
      return 1;
    }

  if (TEMP_FAILURE_RETRY (sem_wait (&s)) == -1)
    {
      puts ("2nd wait failed");
      return 1;
    }

  if (sem_destroy (&s) == -1)
    {
      puts ("destroy failed");
      return 1;
    }

  return 0;
}

Here is the call graph for this function: