From e4ee6e5cc3e8e23e1ecc0d9fa756d9cc2534d218 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 16 May 2013 21:52:35 +0200 Subject: 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. --- src/libsystemd-bus/bus-internal.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/libsystemd-bus/bus-internal.h') 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; -- cgit v1.2.3-54-g00ecf