Apache2
apr_atomic.h
Go to the documentation of this file.
1 /* Licensed to the Apache Software Foundation (ASF) under one or more
2  * contributor license agreements. See the NOTICE file distributed with
3  * this work for additional information regarding copyright ownership.
4  * The ASF licenses this file to You under the Apache License, Version 2.0
5  * (the "License"); you may not use this file except in compliance with
6  * the License. You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef APR_ATOMIC_H
18 #define APR_ATOMIC_H
19 
25 #include "apr.h"
26 #include "apr_pools.h"
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
48 
49 /*
50  * Atomic operations on 32-bit values
51  * Note: Each of these functions internally implements a memory barrier
52  * on platforms that require it
53  */
54 
60 
67 
75 
82 
89 
96 
106  apr_uint32_t cmp);
107 
115 
116 /*
117  * Atomic operations on 64-bit values
118  * Note: Each of these functions internally implements a memory barrier
119  * on platforms that require it
120  */
121 
127 
134 
142 
149 
156 
163 
173  apr_uint64_t cmp);
174 
182 
191 APR_DECLARE(void*) apr_atomic_casptr(void *volatile *mem, void *with, const void *cmp);
192 
199 APR_DECLARE(void*) apr_atomic_xchgptr(void *volatile *mem, void *with);
200 
203 #ifdef __cplusplus
204 }
205 #endif
206 
207 #endif /* !APR_ATOMIC_H */
APR Platform Definitions.
APR memory allocation.
dav_buffer const void * mem
Definition: mod_dav.h:481
apr_uint64_t apr_atomic_cas64(volatile apr_uint64_t *mem, apr_uint64_t with, apr_uint64_t cmp)
int apr_atomic_dec64(volatile apr_uint64_t *mem)
apr_uint64_t apr_atomic_inc64(volatile apr_uint64_t *mem)
void * apr_atomic_casptr(void *volatile *mem, void *with, const void *cmp)
apr_uint32_t apr_atomic_add32(volatile apr_uint32_t *mem, apr_uint32_t val)
apr_uint64_t apr_atomic_xchg64(volatile apr_uint64_t *mem, apr_uint64_t val)
void apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t val)
apr_uint32_t apr_atomic_inc32(volatile apr_uint32_t *mem)
apr_uint32_t apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint32_t val)
int apr_atomic_dec32(volatile apr_uint32_t *mem)
apr_status_t apr_atomic_init(apr_pool_t *p)
apr_uint64_t apr_atomic_read64(volatile apr_uint64_t *mem)
void apr_atomic_sub64(volatile apr_uint64_t *mem, apr_uint64_t val)
void apr_atomic_set32(volatile apr_uint32_t *mem, apr_uint32_t val)
void * apr_atomic_xchgptr(void *volatile *mem, void *with)
void apr_atomic_set64(volatile apr_uint64_t *mem, apr_uint64_t val)
apr_uint32_t apr_atomic_cas32(volatile apr_uint32_t *mem, apr_uint32_t with, apr_uint32_t cmp)
apr_uint64_t apr_atomic_add64(volatile apr_uint64_t *mem, apr_uint64_t val)
apr_uint32_t apr_atomic_read32(volatile apr_uint32_t *mem)
int apr_status_t
Definition: apr_errno.h:44
unsigned int apr_uint32_t
Definition: apr.h:348
uint64_t apr_uint64_t
Definition: apr.h:387
struct apr_pool_t apr_pool_t
Definition: apr_pools.h:60
#define APR_DECLARE(x)
Definition: macros.h:6
apr_pool_t * p