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
22// IWYU pragma: private, include <grpc/support/sync.h>
23
24/** Synchronization primitives for GPR.
25
26 The type gpr_mu provides a non-reentrant mutex (lock).
27
28 The type gpr_cv provides a condition variable.
29
30 The type gpr_once provides for one-time initialization.
31
32 The type gpr_event provides one-time-setting, reading, and
33 waiting of a void*, with memory barriers.
34
35 The type gpr_refcount provides an object reference counter,
36 with memory barriers suitable to control
37 object lifetimes.
38
39 The type gpr_stats_counter provides an atomic statistics counter. It
40 provides no memory barriers.
41 */
42
43#ifdef __cplusplus
44extern "C" {
45#endif
46
47/* Platform-specific type declarations of gpr_mu and gpr_cv. */
48#include <grpc/impl/codegen/port_platform.h>
49
50#include <grpc/impl/codegen/sync_generic.h> // IWYU pragma: export
51
52#if defined(GPR_CUSTOM_SYNC)
53#include <grpc/impl/codegen/sync_custom.h> // IWYU pragma: export
54#elif defined(GPR_ABSEIL_SYNC)
55#include <grpc/impl/codegen/sync_abseil.h> // IWYU pragma: export
56#elif defined(GPR_POSIX_SYNC)
57#include <grpc/impl/codegen/sync_posix.h> // IWYU pragma: export
58#elif defined(GPR_WINDOWS)
59#include <grpc/impl/codegen/sync_windows.h> // IWYU pragma: export
60#else
61#error Unable to determine platform for sync
62#endif
63
64#ifdef __cplusplus
65}
66#endif
67
68#endif /* GRPC_IMPL_CODEGEN_SYNC_H */
69

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