1 /* 2 * mutex.h 3 * 4 * Version: 2.2.5 5 * 6 * ----------------------------------------------------------------------------- 7 * 8 * SPDX-License-Identifier: MIT 9 * 10 * Copyright (c) 2018-2024 Ryan M. Lederman <lederman@gmail.com> 11 * 12 * Permission is hereby granted, free of charge, to any person obtaining a copy of 13 * this software and associated documentation files (the "Software"), to deal in 14 * the Software without restriction, including without limitation the rights to 15 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 16 * the Software, and to permit persons to whom the Software is furnished to do so, 17 * subject to the following conditions: 18 * 19 * The above copyright notice and this permission notice shall be included in all 20 * copies or substantial portions of the Software. 21 * 22 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 23 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 24 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 25 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 26 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 27 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 28 * 29 * ----------------------------------------------------------------------------- 30 */ 31 32 #ifndef _SIR_MUTEX_H_INCLUDED 33 # define _SIR_MUTEX_H_INCLUDED 34 35 # include "sir/types.h" 36 37 /** Creates/initializes a new mutex. */ 38 bool _sir_mutexcreate(sir_mutex* mutex); 39 40 /** Attempts to lock a mutex and waits indefinitely. */ 41 bool _sir_mutexlock(sir_mutex* mutex); 42 43 /** Determines if a mutex is locked without waiting. */ 44 bool _sir_mutextrylock(sir_mutex* mutex); 45 46 /** Unlocks a previously locked mutex. */ 47 bool _sir_mutexunlock(sir_mutex* mutex); 48 49 /** Destroys a mutex. */ 50 bool _sir_mutexdestroy(sir_mutex* mutex); 51 52 #endif /* !_SIR_MUTEX_H_INCLUDED */