[systemd-devel] [PATCH 4/7] domain: add kdbus_domain_user_find()

Djalal Harouni tixxdz at opendz.org
Wed Jul 23 14:19:08 PDT 2014


Add kdbus_domain_user_find() to look up domain users

Signed-off-by: Djalal Harouni <tixxdz at opendz.org>
---
 domain.c | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/domain.c b/domain.c
index 18dc2a7..a5abb2d 100644
--- a/domain.c
+++ b/domain.c
@@ -446,6 +446,38 @@ kdbus_domain_user_new(struct kdbus_domain *domain, kuid_t uid)
 }
 
 /**
+ * kdbus_domain_user_find() - find a domain user with a given uid
+ * @domain		The domain of the user
+ * @uid			The uid of the user; INVALID_UID for an
+ *			anonymous user like custom endpoint
+ *
+ * Return: a kdbus_domain_user with the reference counter increased.
+ * If the domain user can't be found, NULL is returned.
+ */
+struct kdbus_domain_user *
+kdbus_domain_user_find(struct kdbus_domain *domain, kuid_t uid)
+{
+	struct kdbus_domain_user *u;
+	struct kdbus_domain_user *user = NULL;
+
+	if (!uid_valid(uid))
+		return user;
+
+	mutex_lock(&domain->lock);
+	hash_for_each_possible(domain->user_hash, u,
+			       hentry, __kuid_val(uid)) {
+		if (!uid_eq(u->uid, uid))
+			continue;
+
+		user = kdbus_domain_user_ref(u);
+		break;
+	}
+	mutex_unlock(&domain->lock);
+
+	return user;
+}
+
+/**
  * __kdbus_domain_user_account() - account a kdbus_domain_user object
  *				   into the specified domain
  * @domain:		The domain of the user
-- 
1.9.3



More information about the systemd-devel mailing list