15f0f4e3aSMitch Phillips //===-- mutex_posix.cpp -----------------------------------------*- C++ -*-===// 25f0f4e3aSMitch Phillips // 35f0f4e3aSMitch Phillips // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 45f0f4e3aSMitch Phillips // See https://llvm.org/LICENSE.txt for license information. 55f0f4e3aSMitch Phillips // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 65f0f4e3aSMitch Phillips // 75f0f4e3aSMitch Phillips //===----------------------------------------------------------------------===// 85f0f4e3aSMitch Phillips 9*9bd9a03aSMitch Phillips #include "gwp_asan/mutex.h" 105f0f4e3aSMitch Phillips 115f0f4e3aSMitch Phillips #include <assert.h> 125f0f4e3aSMitch Phillips #include <pthread.h> 135f0f4e3aSMitch Phillips 145f0f4e3aSMitch Phillips namespace gwp_asan { lock()155f0f4e3aSMitch Phillipsvoid Mutex::lock() { 165f0f4e3aSMitch Phillips int Status = pthread_mutex_lock(&Mu); 175f0f4e3aSMitch Phillips assert(Status == 0); 185f0f4e3aSMitch Phillips // Remove warning for non-debug builds. 195f0f4e3aSMitch Phillips (void)Status; 205f0f4e3aSMitch Phillips } 215f0f4e3aSMitch Phillips tryLock()225f0f4e3aSMitch Phillipsbool Mutex::tryLock() { return pthread_mutex_trylock(&Mu) == 0; } 235f0f4e3aSMitch Phillips unlock()245f0f4e3aSMitch Phillipsvoid Mutex::unlock() { 255f0f4e3aSMitch Phillips int Status = pthread_mutex_unlock(&Mu); 265f0f4e3aSMitch Phillips assert(Status == 0); 275f0f4e3aSMitch Phillips // Remove warning for non-debug builds. 285f0f4e3aSMitch Phillips (void)Status; 295f0f4e3aSMitch Phillips } 305f0f4e3aSMitch Phillips } // namespace gwp_asan 31