|
|||
Prex Home / Browse Source - Prex Version: 0.9.0 |
|||
root/usr/test/mutex/mutex.c/* [<][>][^][v][top][bottom][index][help] */DEFINITIONSThis source file includes following definitions.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] */ | |||
Copyright© 2005-2009 Kohsuke Ohtani |