X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fovs-atomic-gcc4.7%2B.h;h=f465e516b1d01689a4d3aa1c3bbe8eb5f97f6325;hb=003ce655b7116d18c86a74c50391e54990346931;hp=07bef2a53ab317b8d36bab354e3cc958f9d1b89e;hpb=31a3fc6e3e9ce68d8bfebf65150d9455b9334dda;p=sliver-openvswitch.git diff --git a/lib/ovs-atomic-gcc4.7+.h b/lib/ovs-atomic-gcc4.7+.h index 07bef2a53..f465e516b 100644 --- a/lib/ovs-atomic-gcc4.7+.h +++ b/lib/ovs-atomic-gcc4.7+.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 Nicira, Inc. + * Copyright (c) 2013, 2014 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,46 +19,7 @@ #error "This header should only be included indirectly via ovs-atomic.h." #endif -/* C11 standardized atomic type. */ -typedef bool atomic_bool; - -typedef char atomic_char; -typedef signed char atomic_schar; -typedef unsigned char atomic_uchar; - -typedef short atomic_short; -typedef unsigned short atomic_ushort; - -typedef int atomic_int; -typedef unsigned int atomic_uint; - -typedef long atomic_long; -typedef unsigned long atomic_ulong; - -typedef long long atomic_llong; -typedef unsigned long long atomic_ullong; - -typedef size_t atomic_size_t; -typedef ptrdiff_t atomic_ptrdiff_t; - -typedef intmax_t atomic_intmax_t; -typedef uintmax_t atomic_uintmax_t; - -typedef intptr_t atomic_intptr_t; -typedef uintptr_t atomic_uintptr_t; - -/* Nonstandard atomic types. */ -typedef int8_t atomic_int8_t; -typedef uint8_t atomic_uint8_t; - -typedef int16_t atomic_int16_t; -typedef uint16_t atomic_uint16_t; - -typedef int32_t atomic_int32_t; -typedef uint32_t atomic_uint32_t; - -typedef int64_t atomic_int64_t; -typedef uint64_t atomic_uint64_t; +#define ATOMIC(TYPE) TYPE typedef enum { memory_order_relaxed = __ATOMIC_RELAXED, @@ -107,35 +68,5 @@ typedef enum { (*(ORIG) = __atomic_fetch_xor(RMW, OPERAND, ORDER), (void) 0) #define atomic_and_explicit(RMW, OPERAND, ORIG, ORDER) \ (*(ORIG) = __atomic_fetch_and(RMW, OPERAND, ORDER), (void) 0) - -/* atomic_flag */ - -typedef struct { - unsigned char b; -} atomic_flag; -#define ATOMIC_FLAG_INIT { .b = false } - -static inline bool -atomic_flag_test_and_set_explicit(volatile atomic_flag *object, - memory_order order) -{ - return __atomic_test_and_set(&object->b, order); -} - -static inline bool -atomic_flag_test_and_set(volatile atomic_flag *object) -{ - return atomic_flag_test_and_set_explicit(object, memory_order_seq_cst); -} - -static inline void -atomic_flag_clear_explicit(volatile atomic_flag *object, memory_order order) -{ - __atomic_clear(object, order); -} -static inline void -atomic_flag_clear(volatile atomic_flag *object) -{ - atomic_flag_clear_explicit(object, memory_order_seq_cst); -} +#include "ovs-atomic-flag-gcc4.7+.h"