3 * Copyright 2016 gRPC authors.
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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 #ifndef GRPC_IMPL_CODEGEN_SYNC_H
20 #define GRPC_IMPL_CODEGEN_SYNC_H
21 /** Synchronization primitives for GPR.
23 The type gpr_mu provides a non-reentrant mutex (lock).
25 The type gpr_cv provides a condition variable.
27 The type gpr_once provides for one-time initialization.
29 The type gpr_event provides one-time-setting, reading, and
30 waiting of a void*, with memory barriers.
32 The type gpr_refcount provides an object reference counter,
33 with memory barriers suitable to control
36 The type gpr_stats_counter provides an atomic statistics counter. It
37 provides no memory barriers.
44 /* Platform-specific type declarations of gpr_mu and gpr_cv. */
45 #include <grpc/impl/codegen/port_platform.h>
47 #include <grpc/impl/codegen/sync_generic.h>
49 #if defined(GPR_POSIX_SYNC)
50 #include <grpc/impl/codegen/sync_posix.h>
51 #elif defined(GPR_WINDOWS)
52 #include <grpc/impl/codegen/sync_windows.h>
53 #elif defined(GPR_CUSTOM_SYNC)
54 #include <grpc/impl/codegen/sync_custom.h>
56 #error Unable to determine platform for sync
63 #endif /* GRPC_IMPL_CODEGEN_SYNC_H */