Prex Home / Browse Source - Prex Version: 0.9.0

root/usr/test/mutex/mutex.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. main

   1 /*
   2  * Copyright (c) 2005, Kohsuke Ohtani
   3  * All rights reserved.
   4  *
   5  * Redistribution and use in source and binary forms, with or without
   6  * modification, are permitted provided that the following conditions
   7  * are met:
   8  * 1. Redistributions of source code must retain the above copyright
   9  *    notice, this list of conditions and the following disclaimer.
  10  * 2. Redistributions in binary form must reproduce the above copyright
  11  *    notice, this list of conditions and the following disclaimer in the
  12  *    documentation and/or other materials provided with the distribution.
  13  * 3. Neither the name of the author nor the names of any co-contributors
  14  *    may be used to endorse or promote products derived from this software
  15  *    without specific prior written permission.
  16  *
  17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  20  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  21  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  23  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  24  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  25  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  26  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  27  * SUCH DAMAGE.
  28  */
  29 
  30 /*
  31  * mutex.c - test priority inheritance of mutex.
  32  */
  33 
  34 #include <sys/prex.h>
  35 #include <stdio.h>
  36 
  37 static mutex_t mtx_A = MUTEX_INITIALIZER;
  38 static mutex_t mtx_B, mtx_C;
  39 
  40 int
  41 main(int argc, char *argv[])
  42 {
  43         int error;
  44 
  45         printf("Mutex test program\n");
  46 
  47         /*
  48          * Initialize only B
  49          */
  50         mutex_init(&mtx_B);
  51 
  52         /*
  53          * Lock test
  54          */
  55         error = mutex_lock(&mtx_A);
  56         printf("1) Lock mutex A: error=%d\n", error);
  57 
  58         error = mutex_lock(&mtx_B);
  59         printf("2) Lock mutex B: error=%d\n", error);
  60 
  61         /* Error: Mutex C is not initialized. */
  62         error = mutex_lock(&mtx_C);
  63         printf("3e) Lock mutex C: error=%d\n", error);
  64 
  65         /*
  66          * Unlock test
  67          */
  68         error = mutex_unlock(&mtx_A);
  69         printf("4) Unlock mutex A: error=%d\n", error);
  70 
  71         error = mutex_unlock(&mtx_B);
  72         printf("5) Unlock mutex B: error=%d\n", error);
  73 
  74         /* Error: Mutex C is not initialized. */
  75         error = mutex_unlock(&mtx_C);
  76         printf("6e) Unlock mutex B: error=%d\n", error);
  77 
  78         /* Error: B is not locked. */
  79         error = mutex_unlock(&mtx_B);
  80         printf("7e) Unlock mutex B: error=%d\n", error);
  81 
  82         /*
  83          * Destoroy mutex.
  84          */
  85         mutex_destroy(&mtx_B);
  86 
  87         /* Error: Mutex B is destoroyed. */
  88         error = mutex_lock(&mtx_B);
  89         printf("8e) Lock mutex B: error=%d\n", error);
  90 
  91         /*
  92          * Double lock test
  93          */
  94         error = mutex_lock(&mtx_A);
  95         printf("9) Lock mutex A: error=%d\n", error);
  96 
  97         /* Erorr: Mutex A is already locked */
  98         error = mutex_lock(&mtx_A);
  99         printf("10e) Lock mutex A: error=%d\n", error);
 100 
 101         error = mutex_unlock(&mtx_A);
 102         printf("11) Unlock mutex A: error=%d\n", error);
 103 
 104         printf("Test completed...\n");
 105         return 0;
 106 }

/* [<][>][^][v][top][bottom][index][help] */