sd-hwdb: use non-atomic reference counters
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 1 Mar 2019 17:04:58 +0000 (18:04 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 4 Mar 2019 13:16:39 +0000 (14:16 +0100)
The sd-hwdb objects cannot be used concurrently from two threads in any
meaningful way, because query and iteration operations modify the object.
Thus atomic reference counts are pointless.

src/libsystemd/sd-hwdb/sd-hwdb.c

index 233944c..2e68a1a 100644 (file)
 #include "hashmap.h"
 #include "hwdb-internal.h"
 #include "hwdb-util.h"
-#include "refcnt.h"
 #include "string-util.h"
 #include "util.h"
 
 struct sd_hwdb {
-        RefCount n_ref;
+        unsigned n_ref;
 
         FILE *f;
         struct stat st;
@@ -316,7 +315,7 @@ _public_ int sd_hwdb_new(sd_hwdb **ret) {
         if (!hwdb)
                 return -ENOMEM;
 
-        hwdb->n_ref = REFCNT_INIT;
+        hwdb->n_ref = 1;
 
         /* find hwdb.bin in hwdb_bin_paths */
         NULSTR_FOREACH(hwdb_bin_path, hwdb_bin_paths) {
@@ -370,7 +369,7 @@ static sd_hwdb *hwdb_free(sd_hwdb *hwdb) {
         return mfree(hwdb);
 }
 
-DEFINE_PUBLIC_ATOMIC_REF_UNREF_FUNC(sd_hwdb, sd_hwdb, hwdb_free)
+DEFINE_PUBLIC_TRIVIAL_REF_UNREF_FUNC(sd_hwdb, sd_hwdb, hwdb_free)
 
 bool hwdb_validate(sd_hwdb *hwdb) {
         bool found = false;