1/*
2 *
3 * Copyright 2016 gRPC authors.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 */
18
19#ifndef GRPC_IMPL_CODEGEN_SYNC_H
20#define GRPC_IMPL_CODEGEN_SYNC_H
21/** Synchronization primitives for GPR.
22
23 The type gpr_mu provides a non-reentrant mutex (lock).
24
25 The type gpr_cv provides a condition variable.
26
27 The type gpr_once provides for one-time initialization.
28
29 The type gpr_event provides one-time-setting, reading, and
30 waiting of a void*, with memory barriers.
31
32 The type gpr_refcount provides an object reference counter,
33 with memory barriers suitable to control
34 object lifetimes.
35
36 The type gpr_stats_counter provides an atomic statistics counter. It
37 provides no memory barriers.
38 */
39
40#ifdef __cplusplus
41extern "C" {
42#endif
43
44/* Platform-specific type declarations of gpr_mu and gpr_cv. */
45#include <grpc/impl/codegen/port_platform.h>
46
47#include <grpc/impl/codegen/sync_generic.h>
48
49#if defined(GPR_CUSTOM_SYNC)
50#include <grpc/impl/codegen/sync_custom.h>
51#elif defined(GPR_ABSEIL_SYNC)
52#include <grpc/impl/codegen/sync_abseil.h>
53#elif defined(GPR_POSIX_SYNC)
54#include <grpc/impl/codegen/sync_posix.h>
55#elif defined(GPR_WINDOWS)
56#include <grpc/impl/codegen/sync_windows.h>
57#else
58#error Unable to determine platform for sync
59#endif
60
61#ifdef __cplusplus
62}
63#endif
64
65#endif /* GRPC_IMPL_CODEGEN_SYNC_H */
66

source code of include/grpc/impl/codegen/sync.h