summaryrefslogtreecommitdiff
path: root/attrib/gatt.c
diff options
context:
space:
mode:
authorLucas De Marchi <lucas.demarchi@profusion.mobi>2013-04-08 17:56:19 -0300
committerJohan Hedberg <johan.hedberg@intel.com>2013-04-09 07:01:36 +0900
commit1bd26421ceb7d571609692f52367027d181604e8 (patch)
tree023083b94451ad457c97ecb6da1f1aace84abe70 /attrib/gatt.c
parent38669d6e8676d1c895f16db9a07f86715380e1a3 (diff)
downloadbluez-1bd26421ceb7d571609692f52367027d181604e8.tar.gz
attrib: Use gcc builtin instead of g_atomic
g_atomic_* end up using G_STATIC_ASSERT, causing gcc 4.8 to yell due to -Wunused-local-typedefs. /usr/include/glib-2.0/glib/gmacros.h:162:53: error: typedef ‘_GStaticAssertCompileTimeAssertion_2’ locally defined but not used [-Werror=unused-local-typedefs] #define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] Most of the uses of atomic operations were wrong. They were fixed as well. If we are using atomic operations, reading the variable again later for logging is not an option, we should use the return of the atomic function used to fetch the variable.
Diffstat (limited to 'attrib/gatt.c')
-rw-r--r--attrib/gatt.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/attrib/gatt.c b/attrib/gatt.c
index 38d455a62..749e82012 100644
--- a/attrib/gatt.c
+++ b/attrib/gatt.c
@@ -79,14 +79,14 @@ static void discover_primary_free(struct discover_primary *dp)
static struct included_discovery *isd_ref(struct included_discovery *isd)
{
- g_atomic_int_inc(&isd->refs);
+ __sync_fetch_and_add(&isd->refs, 1);
return isd;
}
static void isd_unref(struct included_discovery *isd)
{
- if (g_atomic_int_dec_and_test(&isd->refs) == FALSE)
+ if (__sync_sub_and_fetch(&isd->refs, 1) > 0)
return;
if (isd->err)
@@ -582,7 +582,7 @@ static void read_long_destroy(gpointer user_data)
{
struct read_long_data *long_read = user_data;
- if (g_atomic_int_dec_and_test(&long_read->ref) == FALSE)
+ if (__sync_sub_and_fetch(&long_read->ref, 1) > 0)
return;
if (long_read->buffer != NULL)
@@ -627,7 +627,7 @@ static void read_blob_helper(guint8 status, const guint8 *rpdu, guint16 rlen,
read_blob_helper, long_read, read_long_destroy);
if (id != 0) {
- g_atomic_int_inc(&long_read->ref);
+ __sync_fetch_and_add(&long_read->ref, 1);
return;
}
@@ -664,7 +664,7 @@ static void read_char_helper(guint8 status, const guint8 *rpdu,
id = g_attrib_send(long_read->attrib, long_read->id, buf, plen,
read_blob_helper, long_read, read_long_destroy);
if (id != 0) {
- g_atomic_int_inc(&long_read->ref);
+ __sync_fetch_and_add(&long_read->ref, 1);
return;
}
@@ -700,7 +700,7 @@ guint gatt_read_char(GAttrib *attrib, uint16_t handle, GAttribResultFunc func,
if (id == 0)
g_free(long_read);
else {
- g_atomic_int_inc(&long_read->ref);
+ __sync_fetch_and_add(&long_read->ref, 1);
long_read->id = id;
}