View | Details | Raw Unified | Return to bug 42806
Collapse All | Expand All

(-)apr/atomic/unix/mutex.c (-11 / +11 lines)
Lines 73-79 APR_DECLARE(apr_status_t) apr_atomic_ini Link Here
73
    return APR_SUCCESS;
73
    return APR_SUCCESS;
74
}
74
}
75
75
76
static APR_INLINE apr_thread_mutex_t *mutex_hash(volatile apr_uint32_t *mem)
76
static APR_INLINE apr_thread_mutex_t *mutex_hash(apr_uint32_t *mem)
77
{
77
{
78
    apr_thread_mutex_t *mutex = hash_mutex[ATOMIC_HASH(mem)];
78
    apr_thread_mutex_t *mutex = hash_mutex[ATOMIC_HASH(mem)];
79
79
Lines 93-104 APR_DECLARE(apr_status_t) apr_atomic_ini Link Here
93
93
94
#endif /* APR_HAS_THREADS */
94
#endif /* APR_HAS_THREADS */
95
95
96
APR_DECLARE(apr_uint32_t) apr_atomic_read32(volatile apr_uint32_t *mem)
96
APR_DECLARE(apr_uint32_t) apr_atomic_read32(apr_uint32_t *mem)
97
{
97
{
98
    return *mem;
98
    return *mem;
99
}
99
}
100
100
101
APR_DECLARE(void) apr_atomic_set32(volatile apr_uint32_t *mem, apr_uint32_t val)
101
APR_DECLARE(void) apr_atomic_set32(apr_uint32_t *mem, apr_uint32_t val)
102
{
102
{
103
    DECLARE_MUTEX_LOCKED(mutex, mem);
103
    DECLARE_MUTEX_LOCKED(mutex, mem);
104
104
Lines 107-113 APR_DECLARE(void) apr_atomic_set32(volat Link Here
107
    MUTEX_UNLOCK(mutex);
107
    MUTEX_UNLOCK(mutex);
108
}
108
}
109
109
110
APR_DECLARE(apr_uint32_t) apr_atomic_add32(volatile apr_uint32_t *mem, apr_uint32_t val)
110
APR_DECLARE(apr_uint32_t) apr_atomic_add32(apr_uint32_t *mem, apr_uint32_t val)
111
{
111
{
112
    apr_uint32_t old_value;
112
    apr_uint32_t old_value;
113
    DECLARE_MUTEX_LOCKED(mutex, mem);
113
    DECLARE_MUTEX_LOCKED(mutex, mem);
Lines 120-138 APR_DECLARE(apr_uint32_t) apr_atomic_add Link Here
120
    return old_value;
120
    return old_value;
121
}
121
}
122
122
123
APR_DECLARE(void) apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t val)
123
APR_DECLARE(void) apr_atomic_sub32(apr_uint32_t *mem, apr_uint32_t val)
124
{
124
{
125
    DECLARE_MUTEX_LOCKED(mutex, mem);
125
    DECLARE_MUTEX_LOCKED(mutex, mem);
126
    *mem -= val;
126
    *mem -= val;
127
    MUTEX_UNLOCK(mutex);
127
    MUTEX_UNLOCK(mutex);
128
}
128
}
129
129
130
APR_DECLARE(apr_uint32_t) apr_atomic_inc32(volatile apr_uint32_t *mem)
130
APR_DECLARE(apr_uint32_t) apr_atomic_inc32(apr_uint32_t *mem)
131
{
131
{
132
    return apr_atomic_add32(mem, 1);
132
    return apr_atomic_add32(mem, 1);
133
}
133
}
134
134
135
APR_DECLARE(int) apr_atomic_dec32(volatile apr_uint32_t *mem)
135
APR_DECLARE(int) apr_atomic_dec32(apr_uint32_t *mem)
136
{
136
{
137
    apr_uint32_t new;
137
    apr_uint32_t new;
138
    DECLARE_MUTEX_LOCKED(mutex, mem);
138
    DECLARE_MUTEX_LOCKED(mutex, mem);
Lines 145-152 APR_DECLARE(int) apr_atomic_dec32(volati Link Here
145
    return new;
145
    return new;
146
}
146
}
147
147
148
APR_DECLARE(apr_uint32_t) apr_atomic_cas32(volatile apr_uint32_t *mem, apr_uint32_t with,
148
APR_DECLARE(apr_uint32_t) apr_atomic_cas32(apr_uint32_t *mem, apr_uint32_t with,
149
                              apr_uint32_t cmp)
149
                                           apr_uint32_t cmp)
150
{
150
{
151
    apr_uint32_t prev;
151
    apr_uint32_t prev;
152
    DECLARE_MUTEX_LOCKED(mutex, mem);
152
    DECLARE_MUTEX_LOCKED(mutex, mem);
Lines 161-167 APR_DECLARE(apr_uint32_t) apr_atomic_cas Link Here
161
    return prev;
161
    return prev;
162
}
162
}
163
163
164
APR_DECLARE(apr_uint32_t) apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint32_t val)
164
APR_DECLARE(apr_uint32_t) apr_atomic_xchg32(apr_uint32_t *mem, apr_uint32_t val)
165
{
165
{
166
    apr_uint32_t prev;
166
    apr_uint32_t prev;
167
    DECLARE_MUTEX_LOCKED(mutex, mem);
167
    DECLARE_MUTEX_LOCKED(mutex, mem);
Lines 174-180 APR_DECLARE(apr_uint32_t) apr_atomic_xch Link Here
174
    return prev;
174
    return prev;
175
}
175
}
176
176
177
APR_DECLARE(void*) apr_atomic_casptr(volatile void **mem, void *with, const void *cmp)
177
APR_DECLARE(void*) apr_atomic_casptr(void **mem, void *with, void *cmp)
178
{
178
{
179
    void *prev;
179
    void *prev;
180
    DECLARE_MUTEX_LOCKED(mutex, *mem);
180
    DECLARE_MUTEX_LOCKED(mutex, *mem);

Return to bug 42806