xref: /llvm-project/compiler-rt/lib/gwp_asan/platform_specific/mutex_posix.cpp (revision 9bd9a03ad04cc2377e5443c834b1af3f42617a39)
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 Phillips void 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 Phillips bool Mutex::tryLock() { return pthread_mutex_trylock(&Mu) == 0; }
235f0f4e3aSMitch Phillips 
unlock()245f0f4e3aSMitch Phillips void 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