grpc
src
core
lib
gpr
atm.cc
Go to the documentation of this file.
1
/*
2
*
3
* Copyright 2017 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
#include <
grpc/support/port_platform.h
>
20
21
#include <
grpc/support/atm.h
>
22
23
#include "
src/core/lib/gpr/useful.h
"
24
25
gpr_atm
gpr_atm_no_barrier_clamped_add
(
gpr_atm
*
value
,
gpr_atm
delta,
26
gpr_atm
min
,
gpr_atm
max
) {
27
gpr_atm
current_value;
28
gpr_atm
new_value;
29
do
{
30
current_value =
gpr_atm_no_barrier_load
(
value
);
31
new_value =
grpc_core::Clamp
(current_value + delta,
min
,
max
);
32
if
(new_value == current_value)
break
;
33
}
while
(!
gpr_atm_no_barrier_cas
(
value
, current_value, new_value));
34
return
new_value;
35
}
gpr_atm_no_barrier_load
#define gpr_atm_no_barrier_load(p)
Definition:
impl/codegen/atm_gcc_atomic.h:53
useful.h
max
int max
Definition:
bloaty/third_party/zlib/examples/enough.c:170
gpr_atm_no_barrier_clamped_add
gpr_atm gpr_atm_no_barrier_clamped_add(gpr_atm *value, gpr_atm delta, gpr_atm min, gpr_atm max)
Definition:
atm.cc:25
gpr_atm_no_barrier_cas
#define gpr_atm_no_barrier_cas(p, o, n)
Definition:
impl/codegen/atm_gcc_sync.h:74
min
#define min(a, b)
Definition:
qsort.h:83
value
const char * value
Definition:
hpack_parser_table.cc:165
gpr_atm
intptr_t gpr_atm
Definition:
impl/codegen/atm_gcc_atomic.h:32
grpc_core::Clamp
T Clamp(T val, T min, T max)
Definition:
useful.h:31
atm.h
port_platform.h
grpc
Author(s):
autogenerated on Fri May 16 2025 02:57:45