summaryrefslogtreecommitdiff
path: root/src/libsystemd-bus/bus-internal.h
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2013-05-17 03:13:58 +0200
committerLennart Poettering <lennart@poettering.net>2013-05-17 04:26:27 +0200
commit45fbe937d7ca8d0da9ea276d57bc70ebd41c285e (patch)
tree95b216605530430206c7d863bca4d1d610382d25 /src/libsystemd-bus/bus-internal.h
parentd5a2b9a6f455468a0f29483303657ab4fd7013d8 (diff)
bus: add minimal locking around the memfd cache
We want to allow clients to process an sd_bus_message on a different thread than it was received on. Since unreffing a bus message might readd some of its memfds to the memfd cache add some minimal locking around the cache.
Diffstat (limited to 'src/libsystemd-bus/bus-internal.h')
-rw-r--r--src/libsystemd-bus/bus-internal.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/libsystemd-bus/bus-internal.h b/src/libsystemd-bus/bus-internal.h
index b6975c54a2..8f87bea781 100644
--- a/src/libsystemd-bus/bus-internal.h
+++ b/src/libsystemd-bus/bus-internal.h
@@ -24,6 +24,7 @@
#include <sys/socket.h>
#include <sys/un.h>
#include <netinet/in.h>
+#include <pthread.h>
#include "hashmap.h"
#include "prioq.h"
@@ -169,6 +170,13 @@ struct sd_bus {
void *kdbus_buffer;
+ /* We do locking around the memfd cache, since we want to
+ * allow people to process a sd_bus_message in a different
+ * thread then it was generated on and free it there. Since
+ * adding something to the memfd cache might happen when a
+ * message is released, we hence need to protect this bit with
+ * a mutex. */
+ pthread_mutex_t memfd_cache_mutex;
struct memfd_cache memfd_cache[MEMFD_CACHE_MAX];
unsigned n_memfd_cache;