Subversion Repositories Kolibri OS

Rev

Rev 1892 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1892 Rev 3959
Line 77... Line 77...
77
# define _cairo_atomic_int_get(x) (*x)
77
# define _cairo_atomic_int_get(x) (*x)
78
# define _cairo_atomic_ptr_get(x) (*x)
78
# define _cairo_atomic_ptr_get(x) (*x)
79
#endif
79
#endif
Line 80... Line 80...
80
 
80
 
-
 
81
# define _cairo_atomic_int_inc(x) ((void) __sync_fetch_and_add(x, 1))
81
# define _cairo_atomic_int_inc(x) ((void) __sync_fetch_and_add(x, 1))
82
# define _cairo_atomic_int_dec(x) ((void) __sync_fetch_and_add(x, -1))
82
# define _cairo_atomic_int_dec_and_test(x) (__sync_fetch_and_add(x, -1) == 1)
83
# define _cairo_atomic_int_dec_and_test(x) (__sync_fetch_and_add(x, -1) == 1)
83
# define _cairo_atomic_int_cmpxchg(x, oldv, newv) __sync_bool_compare_and_swap (x, oldv, newv)
84
# define _cairo_atomic_int_cmpxchg(x, oldv, newv) __sync_bool_compare_and_swap (x, oldv, newv)
Line 84... Line 85...
84
# define _cairo_atomic_int_cmpxchg_return_old(x, oldv, newv) __sync_val_compare_and_swap (x, oldv, newv)
85
# define _cairo_atomic_int_cmpxchg_return_old(x, oldv, newv) __sync_val_compare_and_swap (x, oldv, newv)
Line 109... Line 110...
109
typedef  AO_t cairo_atomic_int_t;
110
typedef  AO_t cairo_atomic_int_t;
Line 110... Line 111...
110
 
111
 
Line 111... Line 112...
111
# define _cairo_atomic_int_get(x) (AO_load_full (x))
112
# define _cairo_atomic_int_get(x) (AO_load_full (x))
-
 
113
 
112
 
114
# define _cairo_atomic_int_inc(x) ((void) AO_fetch_and_add1_full(x))
113
# define _cairo_atomic_int_inc(x) ((void) AO_fetch_and_add1_full(x))
115
# define _cairo_atomic_int_dec(x) ((void) AO_fetch_and_sub1_full(x))
Line 114... Line 116...
114
# define _cairo_atomic_int_dec_and_test(x) (AO_fetch_and_sub1_full(x) == 1)
116
# define _cairo_atomic_int_dec_and_test(x) (AO_fetch_and_sub1_full(x) == 1)
115
# define _cairo_atomic_int_cmpxchg(x, oldv, newv) AO_compare_and_swap_full(x, oldv, newv)
117
# define _cairo_atomic_int_cmpxchg(x, oldv, newv) AO_compare_and_swap_full(x, oldv, newv)
Line 138... Line 140...
138
typedef int32_t cairo_atomic_int_t;
140
typedef int32_t cairo_atomic_int_t;
Line 139... Line 141...
139
 
141
 
Line 140... Line 142...
140
# define _cairo_atomic_int_get(x) (OSMemoryBarrier(), *(x))
142
# define _cairo_atomic_int_get(x) (OSMemoryBarrier(), *(x))
-
 
143
 
141
 
144
# define _cairo_atomic_int_inc(x) ((void) OSAtomicIncrement32Barrier (x))
142
# define _cairo_atomic_int_inc(x) ((void) OSAtomicIncrement32Barrier (x))
145
# define _cairo_atomic_int_dec(x) ((void) OSAtomicDecrement32Barrier (x))
Line 143... Line 146...
143
# define _cairo_atomic_int_dec_and_test(x) (OSAtomicDecrement32Barrier (x) == 0)
146
# define _cairo_atomic_int_dec_and_test(x) (OSAtomicDecrement32Barrier (x) == 0)
144
# define _cairo_atomic_int_cmpxchg(x, oldv, newv) OSAtomicCompareAndSwap32Barrier(oldv, newv, x)
147
# define _cairo_atomic_int_cmpxchg(x, oldv, newv) OSAtomicCompareAndSwap32Barrier(oldv, newv, x)
Line 176... Line 179...
176
typedef cairo_atomic_intptr_t cairo_atomic_int_t;
179
typedef cairo_atomic_intptr_t cairo_atomic_int_t;
Line 177... Line 180...
177
 
180
 
178
cairo_private void
181
cairo_private void
Line -... Line 182...
-
 
182
_cairo_atomic_int_inc (cairo_atomic_int_t *x);
-
 
183
 
179
_cairo_atomic_int_inc (cairo_atomic_int_t *x);
184
#define _cairo_atomic_int_dec(x) _cairo_atomic_int_dec_and_test(x)
180
 
185
 
Line 181... Line 186...
181
cairo_private cairo_bool_t
186
cairo_private cairo_bool_t
182
_cairo_atomic_int_dec_and_test (cairo_atomic_int_t *x);
187
_cairo_atomic_int_dec_and_test (cairo_atomic_int_t *x);
Line 252... Line 257...
252
#define _cairo_atomic_uint_get(x) _cairo_atomic_int_get(x)
257
#define _cairo_atomic_uint_get(x) _cairo_atomic_int_get(x)
253
#define _cairo_atomic_uint_cmpxchg(x, oldv, newv) \
258
#define _cairo_atomic_uint_cmpxchg(x, oldv, newv) \
254
    _cairo_atomic_int_cmpxchg((cairo_atomic_int_t *)x, oldv, newv)
259
    _cairo_atomic_int_cmpxchg((cairo_atomic_int_t *)x, oldv, newv)
Line 255... Line 260...
255
 
260
 
-
 
261
#define _cairo_status_set_error(status, err) do { \
-
 
262
    int ret__; \
256
#define _cairo_status_set_error(status, err) do { \
263
    assert (err < CAIRO_STATUS_LAST_STATUS); \
257
    /* hide compiler warnings about cairo_status_t != int (gcc treats its as \
264
    /* hide compiler warnings about cairo_status_t != int (gcc treats its as \
258
     * an unsigned integer instead, and about ignoring the return value. */  \
265
     * an unsigned integer instead, and about ignoring the return value. */  \
259
    int ret__ = _cairo_atomic_int_cmpxchg ((cairo_atomic_int_t *) status, CAIRO_STATUS_SUCCESS, err); \
266
    ret__ = _cairo_atomic_int_cmpxchg ((cairo_atomic_int_t *) status, CAIRO_STATUS_SUCCESS, err); \
260
    (void) ret__; \
267
    (void) ret__; \
Line 261... Line 268...
261
} while (0)
268
} while (0)