Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / native_client / src / shared / platform / nacl_semaphore.h
1 /*
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.
5  */
6
7 /*
8  * NaCl semaphore cross-platform abstraction
9  */
10 #ifndef NATIVE_CLIENT_SRC_TRUSTED_PLATFORM_NACL_SEMAPHORE_H_
11 #define NATIVE_CLIENT_SRC_TRUSTED_PLATFORM_NACL_SEMAPHORE_H_
12
13 #include "native_client/src/include/nacl_base.h"
14
15 #include "native_client/src/shared/platform/nacl_sync.h"
16
17 #if NACL_WINDOWS
18 #include "native_client/src/shared/platform/win/nacl_semaphore.h"
19 #elif NACL_LINUX
20 #include "native_client/src/shared/platform/linux/nacl_semaphore.h"
21 #elif NACL_OSX
22 #include "native_client/src/shared/platform/osx/nacl_semaphore.h"
23 #else
24 #error "Unknown platform!!!"
25 #endif
26
27 #include "native_client/src/shared/platform/nacl_sync.h"
28
29 EXTERN_C_BEGIN
30
31 struct NaClSemaphore;
32
33 int NaClSemCtor(struct NaClSemaphore *sem, int32_t value);
34
35 void NaClSemDtor(struct NaClSemaphore *sem);
36
37 NaClSyncStatus NaClSemWait(struct NaClSemaphore *sem);
38
39 NaClSyncStatus NaClSemTryWait(struct NaClSemaphore *sem);
40
41 NaClSyncStatus NaClSemPost(struct NaClSemaphore *sem);
42
43 int NaClSemGetValue(struct NaClSemaphore *sem);
44
45 EXTERN_C_END
46
47 #endif  /* NATIVE_CLIENT_SRC_TRUSTED_PLATFORM_NACL_SEMAPHORE_H_ */