summaryrefslogtreecommitdiff
path: root/src/libsystemd-bus/bus-internal.h
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2013-05-16 21:52:35 +0200
committerLennart Poettering <lennart@poettering.net>2013-05-16 21:58:34 +0200
commite4ee6e5cc3e8e23e1ecc0d9fa756d9cc2534d218 (patch)
tree4264b1334f465b36c7f8c726eb9bf94f00ac5550 /src/libsystemd-bus/bus-internal.h
parenteb01ba5de14859d7a94835ab9299de40132d549a (diff)
bus: make bus ref counting atomic
This is preparation to allow sd_bus_message obejcts to be processed in a different thread from their originating sd_bus object.
Diffstat (limited to 'src/libsystemd-bus/bus-internal.h')
-rw-r--r--src/libsystemd-bus/bus-internal.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/libsystemd-bus/bus-internal.h b/src/libsystemd-bus/bus-internal.h
index 504dac7f09..0edb09764a 100644
--- a/src/libsystemd-bus/bus-internal.h
+++ b/src/libsystemd-bus/bus-internal.h
@@ -29,6 +29,7 @@
#include "prioq.h"
#include "list.h"
#include "util.h"
+#include "refcnt.h"
#include "sd-bus.h"
#include "bus-error.h"
@@ -77,7 +78,16 @@ enum bus_auth {
};
struct sd_bus {
- unsigned n_ref;
+ /* We use atomic ref counting here since sd_bus_message
+ objects retain references to their originating sd_bus but
+ we want to allow them to be processed in a different
+ thread. We won't provide full thread safety, but only the
+ bare minimum that makes it possible to use sd_bus and
+ sd_bus_message objects independently and on different
+ threads as long as each object is used only once at the
+ same time. */
+ RefCount n_ref;
+
enum bus_state state;
int input_fd, output_fd;
int message_version;