2 * Copyright 2008 The Native Client Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file.
8 * NaCl Server Runtime interruptible binary mutex, based on nacl_sync
11 #ifndef NATIVE_CLIENT_SRC_TRUSTED_PLATFORM_NACL_INTERRUPTIBLE_MUTEX_H_
12 #define NATIVE_CLIENT_SRC_TRUSTED_PLATFORM_NACL_INTERRUPTIBLE_MUTEX_H_
14 #include "native_client/src/include/nacl_base.h"
15 #include "native_client/src/shared/platform/nacl_sync.h"
19 enum NaClIntrMutexState {
22 NACL_INTR_LOCK_INTERRUPTED
25 struct NaClIntrMutex {
27 enum NaClIntrMutexState lock_state;
31 struct NaClCondVar cv;
34 int NaClIntrMutexCtor(struct NaClIntrMutex *mp);
35 /* bool success/fail */
37 void NaClIntrMutexDtor(struct NaClIntrMutex *mp);
39 NaClSyncStatus NaClIntrMutexLock(struct NaClIntrMutex *mp);
41 NaClSyncStatus NaClIntrMutexTryLock(struct NaClIntrMutex *mp);
43 NaClSyncStatus NaClIntrMutexUnlock(struct NaClIntrMutex *mp);
45 void NaClIntrMutexIntr(struct NaClIntrMutex *mp);
47 void NaClIntrMutexReset(struct NaClIntrMutex *mp);
52 #endif /* NATIVE_CLIENT_SRC_TRUSTED_PLATFORM_NACL_INTERRUPTIBLE_MUTEX_H_ */