Apache2
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
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 
66 APR_DECLARE(void) apr_atomic_set32(volatile apr_uint32_t *mem, apr_uint32_t val);
67 
75 
81 APR_DECLARE(void) apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t val);
82 
89 
95 APR_DECLARE(int) apr_atomic_dec32(volatile apr_uint32_t *mem);
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 
133 APR_DECLARE(void) apr_atomic_set64(volatile apr_uint64_t *mem, apr_uint64_t val);
134 
142 
148 APR_DECLARE(void) apr_atomic_sub64(volatile apr_uint64_t *mem, apr_uint64_t val);
149 
156 
162 APR_DECLARE(int) apr_atomic_dec64(volatile apr_uint64_t *mem);
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 */
int apr_atomic_dec64(volatile apr_uint64_t *mem)
apr_uint32_t apr_atomic_add32(volatile apr_uint32_t *mem, apr_uint32_t val)
apr_status_t apr_atomic_init(apr_pool_t *p)
void * apr_atomic_casptr(void *volatile *mem, void *with, const void *cmp)
void apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t val)
apr_uint64_t apr_atomic_read64(volatile apr_uint64_t *mem)
apr_uint64_t apr_atomic_xchg64(volatile apr_uint64_t *mem, apr_uint64_t val)
APR memory allocation.
int apr_atomic_dec32(volatile apr_uint32_t *mem)
apr_uint64_t apr_atomic_inc64(volatile apr_uint64_t *mem)
void apr_atomic_set32(volatile apr_uint32_t *mem, apr_uint32_t val)
apr_uint64_t apr_atomic_add64(volatile apr_uint64_t *mem, apr_uint64_t val)
unsigned int apr_uint32_t
Definition: apr.h:334
APR Platform Definitions.
void apr_atomic_sub64(volatile apr_uint64_t *mem, apr_uint64_t val)
apr_pool_t * p
apr_uint32_t apr_atomic_inc32(volatile apr_uint32_t *mem)
void * apr_atomic_xchgptr(void *volatile *mem, void *with)
unsigned long apr_uint64_t
Definition: apr.h:372
apr_uint32_t apr_atomic_cas32(volatile apr_uint32_t *mem, apr_uint32_t with, apr_uint32_t cmp)
#define APR_DECLARE(x)
Definition: macros.h:6
apr_uint64_t apr_atomic_cas64(volatile apr_uint64_t *mem, apr_uint64_t with, apr_uint64_t cmp)
dav_buffer const void * mem
Definition: mod_dav.h:477
struct apr_pool_t apr_pool_t
Definition: apr_pools.h:60
int apr_status_t
Definition: apr_errno.h:44
apr_uint32_t apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint32_t val)
void apr_atomic_set64(volatile apr_uint64_t *mem, apr_uint64_t val)
apr_uint32_t apr_atomic_read32(volatile apr_uint32_t *mem)