1 /*=========================================================================== 2 * 3 * PUBLIC DOMAIN NOTICE 4 * National Center for Biotechnology Information 5 * 6 * This software/database is a "United States Government Work" under the 7 * terms of the United States Copyright Act. It was written as part of 8 * the author's official duties as a United States Government employee and 9 * thus cannot be copyrighted. This software/database is freely available 10 * to the public for use. The National Library of Medicine and the U.S. 11 * Government have not placed any restriction on its use or reproduction. 12 * 13 * Although all reasonable efforts have been taken to ensure the accuracy 14 * and reliability of the software and data, the NLM and the U.S. 15 * Government do not and cannot warrant the performance or results that 16 * may be obtained by using this software or data. The NLM and the U.S. 17 * Government disclaim all warranties, express or implied, including 18 * warranties of performance, merchantability or fitness for any particular 19 * purpose. 20 * 21 * Please cite the author in any work or product based on this material. 22 * 23 * =========================================================================== 24 * 25 */ 26 27 #ifndef _h_syslock_priv_ 28 #define _h_syslock_priv_ 29 30 #include <pthread.h> 31 32 #ifndef _h_klib_defs_ 33 #include <klib/defs.h> 34 #endif 35 36 #ifndef _h_atomic32_ 37 #include <atomic32.h> 38 #endif 39 40 #ifdef __cplusplus 41 extern "C" { 42 #endif 43 44 /*-------------------------------------------------------------------------- 45 * KLock 46 * a POSIX-style mutual exclusion lock 47 */ 48 struct KLock 49 { 50 pthread_mutex_t mutex; 51 atomic32_t refcount; 52 }; 53 54 /*-------------------------------------------------------------------------- 55 * KTimedLock 56 * a POSIX-style mutual exclusion lock 57 * with some facilities for timed operations 58 */ 59 struct KTimedLock 60 { 61 pthread_mutex_t mutex; 62 pthread_mutex_t cond_lock; 63 pthread_cond_t cond; 64 uint32_t waiters; 65 atomic32_t refcount; 66 }; 67 68 #ifdef __cplusplus 69 } 70 #endif 71 72 #endif /* _h_syslock_priv_ */ 73