From patchwork Tue Oct 29 21:29:48 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 839402 Received: from mail-ua1-f43.google.com (mail-ua1-f43.google.com [209.85.222.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3DC941DC06B for ; Tue, 29 Oct 2024 21:29:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730237398; cv=none; b=JNq2+2ejoI7DjOEAANzIph9ANO7cPovydFXehRndhmlIXD8fr3XnHnQKN/WfecIAiew4m+ip3AwyJB0DoHwNlS/tRkLzsa0dKHKq7jeXiDwpPUw8y/hPvHjr5grK7olqFQamM+sKjw1W2BHa+aaeXvOao6c9zkPl74QKEREDj90= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730237398; c=relaxed/simple; bh=U7DCJRiyMiEr8CHP/5wFRFlkMQbul1q3FpaoBTPy93U=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=dFI4yez2m/wrux8/NCxjXGt5RFRaMaPfVWfEk5LA/Ql+iNniJjsQJa8Pr+yznRlr1Pp0/xkEYsbp0eSlK4MYM2ZDtUv+94Zrh3jrj+zz5rH2NP+2uND/ubKU5QUDpKnuQBuj1ce0UGdHs6w1rOvmUOivp5M0n5FAbG/eevNjJaw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=GbKAUqIA; arc=none smtp.client-ip=209.85.222.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="GbKAUqIA" Received: by mail-ua1-f43.google.com with SMTP id a1e0cc1a2514c-851f5d3001fso1559825241.1 for ; Tue, 29 Oct 2024 14:29:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1730237394; x=1730842194; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=zykRVC45Y3P/A477HU6i4aicjwJ2AKp+pg7OPX8Q1RI=; b=GbKAUqIARvytYJoPMoLf4YTCFSL2jPVEvK/+v6BJNWJfOHbAGrawoaooT8KZRtArzB GaVlOs0TYFcX0bFXUdEYk5/roOG0XkqiOhJuUFEEqqLXmRniUCGKWTDOHMQrT6hMJAmW 09GPgnCZ09LhQqruVGcasSOzhk8igMA366LOiiptRlB5WuZ34wZT6J8MH70aHzSbxAgG 0pG0A6ZHQHJx+lSvGk1DiIFbwgnfRachPkelWl4npUXDFdBeAeIprLIycZPBE3/ZDa8g 8Iv0beXZCEMeigwYw3U4DwNZ6/WeK3U44LRm9mSaXaolpLXaaTfF3gF6KE4oV7G4mrwf 4+kA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730237394; x=1730842194; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=zykRVC45Y3P/A477HU6i4aicjwJ2AKp+pg7OPX8Q1RI=; b=dXor7abXtvr17oGVW452FiXuIH1XKf9U/5+bjJJYUtxNX0lTua02L38N8sRGzWlGr0 UrhQiGfl2vxlulyW+Ftl+/HMopAj+gGE7XY1i9J/yivj/Zyl9reY9n6WGB8PN+UKwbfQ M1mIArJSww5bUWWAwcX6D41gDMHTwQ44L3MnGw68oozugiq0yloloFLEivWdru6E+Yuu 6WpyIa327tbnmn2YTn0kiSMWY+NnBdAdRY+tXxWVKYDqbPXdQ5sr3rFye2Ik7QvzNVe1 +O0bB32XH5ejIgwVrA87nf+nuHjgQE6qJjsjaWNs41GqL8bEGQr3RuKQMj+1QtWvwT6z BVgA== X-Gm-Message-State: AOJu0Yy5uTHzE8PPWtlhQQVER+Nm8n8bcn3JQEiZ0aBSKFVU+K+iMVFu h0/+WPYPXlI8zL3Ss0sR0k6FIx9o/RB3iE2+ebOJq2EX7u7KLPieJHWWaA== X-Google-Smtp-Source: AGHT+IEXGM3YN/dauWffLj0jjqgK/2So+uG9W6Xi66hJHfeTLpMC1iEqffa7MafHi5viBbh/+lgRyA== X-Received: by 2002:a05:6122:1d43:b0:50d:869a:e542 with SMTP id 71dfb90a1353d-5105d0d2dd4mr1066652e0c.9.1730237394278; Tue, 29 Oct 2024 14:29:54 -0700 (PDT) Received: from lvondent-mobl5.. (syn-107-146-107-067.res.spectrum.com. [107.146.107.67]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-51004777927sm1283579e0c.36.2024.10.29.14.29.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Oct 2024 14:29:52 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v1 1/2] gdbus: Add g_dbus_set_debug Date: Tue, 29 Oct 2024 17:29:48 -0400 Message-ID: <20241029212949.3674826-1-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.47.0 Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Luiz Augusto von Dentz This adds g_dbus_set_debug which can be used to set a debug function to be invoked on incoming/outgoing message. --- gdbus/gdbus.h | 6 +++ gdbus/object.c | 106 ++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 103 insertions(+), 9 deletions(-) diff --git a/gdbus/gdbus.h b/gdbus/gdbus.h index d7be17661149..24006a0d54d6 100644 --- a/gdbus/gdbus.h +++ b/gdbus/gdbus.h @@ -234,6 +234,12 @@ struct GDBusSecurityTable { void g_dbus_set_flags(int flags); int g_dbus_get_flags(void); +typedef void (*g_dbus_destroy_func_t)(void *user_data); +typedef void (*g_dbus_debug_func_t)(const char *str, void *user_data); + +void g_dbus_set_debug(g_dbus_debug_func_t cb, void *user_data, + g_dbus_destroy_func_t destroy); + gboolean g_dbus_register_interface(DBusConnection *connection, const char *path, const char *name, const GDBusMethodTable *methods, diff --git a/gdbus/object.c b/gdbus/object.c index 72d2d46e30ef..1c19355cdbfe 100644 --- a/gdbus/object.c +++ b/gdbus/object.c @@ -20,6 +20,7 @@ #include #include "gdbus.h" +#include "src/shared/util.h" #define info(fmt...) #define error(fmt...) @@ -72,9 +73,16 @@ struct property_data { DBusMessage *message; }; +struct debug_data { + g_dbus_debug_func_t func; + g_dbus_destroy_func_t destroy; + void *data; +}; + static int global_flags = 0; static struct generic_data *root; static GSList *pending = NULL; +static struct debug_data debug = { NULL, NULL, NULL }; static gboolean process_changes(gpointer user_data); static void process_properties_from_interface(struct generic_data *data, @@ -124,6 +132,20 @@ static bool check_testing(int flags, int flag) return !(global_flags & G_DBUS_FLAG_ENABLE_TESTING); } +static void g_dbus_debug(const char *format, ...) +{ + va_list va; + char str[MAX_INPUT]; + + if (!format || !debug.func) + return; + + va_start(va, format); + vsnprintf(str, sizeof(str), format, va); + debug.func(str, debug.data); + va_end(va); +} + static void generate_interface_xml(GString *gstr, struct interface_data *iface) { const GDBusMethodTable *method; @@ -565,6 +587,22 @@ static void append_interface(gpointer data, gpointer user_data) dbus_message_iter_close_container(array, &entry); } +static const char *dbus_message_type_string(DBusMessage *msg) +{ + return dbus_message_type_to_string(dbus_message_get_type(msg)); +} + +static void g_dbus_send_unref(DBusConnection *conn, DBusMessage *msg) +{ + g_dbus_debug("[%s] %s.%s", + dbus_message_type_string(msg), + dbus_message_get_interface(msg), + dbus_message_get_member(msg)); + + dbus_connection_send(conn, msg, NULL); + dbus_message_unref(msg); +} + static void emit_interfaces_added(struct generic_data *data) { DBusMessage *signal; @@ -605,9 +643,8 @@ static void emit_interfaces_added(struct generic_data *data) dbus_message_iter_close_container(&iter, &array); - /* Use dbus_connection_send to avoid recursive calls to g_dbus_flush */ - dbus_connection_send(data->conn, signal, NULL); - dbus_message_unref(signal); + /* Use g_dbus_send_unref to avoid recursive calls to g_dbus_flush */ + g_dbus_send_unref(data->conn, signal); } static struct interface_data *find_interface(GSList *interfaces, @@ -1002,9 +1039,8 @@ static void emit_interfaces_removed(struct generic_data *data) dbus_message_iter_close_container(&iter, &array); - /* Use dbus_connection_send to avoid recursive calls to g_dbus_flush */ - dbus_connection_send(data->conn, signal, NULL); - dbus_message_unref(signal); + /* Use g_dbus_send_unref to avoid recursive calls to g_dbus_flush */ + g_dbus_send_unref(data->conn, signal); } static void remove_pending(struct generic_data *data) @@ -1069,6 +1105,13 @@ static DBusHandlerResult generic_message(DBusConnection *connection, const GDBusMethodTable *method; const char *interface; + g_dbus_debug("[%s:%s] > %s.%s [#%d]", + dbus_message_get_sender(message), + dbus_message_type_string(message), + dbus_message_get_interface(message), + dbus_message_get_member(message), + dbus_message_get_serial(message)); + interface = dbus_message_get_interface(message); iface = find_interface(data->interfaces, interface); @@ -1559,6 +1602,35 @@ gboolean g_dbus_send_message(DBusConnection *connection, DBusMessage *message) /* Flush pending signal to guarantee message order */ g_dbus_flush(connection); + switch (dbus_message_get_type(message)) { + case DBUS_MESSAGE_TYPE_METHOD_RETURN: + g_dbus_debug("[%s:%s] < [#%d]", + dbus_message_get_destination(message), + dbus_message_type_string(message), + dbus_message_get_reply_serial(message)); + break; + case DBUS_MESSAGE_TYPE_ERROR: + g_dbus_debug("[%s:%s] < %s [#%d]", + dbus_message_get_destination(message), + dbus_message_type_string(message), + dbus_message_get_error_name(message), + dbus_message_get_reply_serial(message)); + break; + case DBUS_MESSAGE_TYPE_SIGNAL: + g_dbus_debug("[%s] %s.%s", + dbus_message_type_string(message), + dbus_message_get_interface(message), + dbus_message_get_member(message)); + break; + default: + g_dbus_debug("[%s:%s] < %s.%s", + dbus_message_get_destination(message), + dbus_message_type_string(message), + dbus_message_get_interface(message), + dbus_message_get_member(message)); + break; + } + result = dbus_connection_send(connection, message, NULL); out: @@ -1584,6 +1656,12 @@ gboolean g_dbus_send_message_with_reply(DBusConnection *connection, return FALSE; } + g_dbus_debug("[%s:%s] < %s.%s", + dbus_message_get_destination(message), + dbus_message_type_string(message), + dbus_message_get_interface(message), + dbus_message_get_member(message)); + return ret; } @@ -1756,9 +1834,8 @@ static void process_properties_from_interface(struct generic_data *data, g_slist_free(iface->pending_prop); iface->pending_prop = NULL; - /* Use dbus_connection_send to avoid recursive calls to g_dbus_flush */ - dbus_connection_send(data->conn, signal, NULL); - dbus_message_unref(signal); + /* Use g_dbus_send_unref to avoid recursive calls to g_dbus_flush */ + g_dbus_send_unref(data->conn, signal); } static void process_property_changes(struct generic_data *data) @@ -1885,3 +1962,14 @@ int g_dbus_get_flags(void) { return global_flags; } + +void g_dbus_set_debug(g_dbus_debug_func_t cb, void *user_data, + g_dbus_destroy_func_t destroy) +{ + if (debug.destroy) + debug.destroy(debug.data); + + debug.func = cb; + debug.destroy = destroy; + debug.data = user_data; +} From patchwork Tue Oct 29 21:29:49 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 840184 Received: from mail-vk1-f170.google.com (mail-vk1-f170.google.com [209.85.221.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7AACC1DC06B for ; Tue, 29 Oct 2024 21:29:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730237401; cv=none; b=QcfvT/OtwHHMtASE0sxf0zLKyZi16XLopxFPYmVeYkSlFQxiJsrksDI2w7/mKHjt5nsqpbArK9FOfhHn6ozVMOZD9hnTNj2eLguX+RQnNEd1F/gv+tVmUeJVzy+LriXR8x8zFg6vje/bPVBeyDrF+ioq4g6usnhnWlowL33aaLI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730237401; c=relaxed/simple; bh=1PnA0w3XlMLN8uKQicaObEFYzRCXyKqyG82G9hWijpw=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YRq9ZbKDWyqC1RXKYqX+6dpKI0XfcZ1eMu3AntzP1FBoTSGddY/4l56hkTjv5z98czaY1eboor0oSmVZUeogd7sTPDLAnZvG4wulMkaoM0lbqtJSlHRKdJBBapUQpEBnkPX4U/mEv92muEIX1OK546K5+b9sk4gVlJOi+uVxglk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=K8xygQ1a; arc=none smtp.client-ip=209.85.221.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="K8xygQ1a" Received: by mail-vk1-f170.google.com with SMTP id 71dfb90a1353d-50d4a6ef70aso1841707e0c.3 for ; Tue, 29 Oct 2024 14:29:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1730237398; x=1730842198; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=uQdmJdVaD4iwo01ECNB5NhPh1GLPEqdHS/zldhXimRE=; b=K8xygQ1aiLwRU+CzaMikTYf1w7pqmjMxR/WUTMiXEEz5jLfoCRIwbtR8SU72YQN+Uw f02qWOnJIOrsZ14Mc3D+4MNHfLXVYaU0SKXGZ/c2zsmAAbnraH1tOp1vpei6ZbLnNpJu +WdSPDUI+edzAwrwngLnVdvMnz9MXd9n5yvA/Rw7FYm3+EkkjM7bpObwdKXwvFdikavU bEcIwoOh+Up5gGfMAbAY+dZUd3wIeMsJV3op8t+ZeqELYbOte22HmV33XPANCRmeMREp iJDP34h7MSdhA6iP+ULw/bYmAmRzQhgz7RC58YtX3dRd38eow1RnjTpurs/GGrLwRdxC zXTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730237398; x=1730842198; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uQdmJdVaD4iwo01ECNB5NhPh1GLPEqdHS/zldhXimRE=; b=VYRnMBhEQe6L3EaUzHBtKWDgHqC+yiJ8coCvDKwE1SWDl8YH/7Pt9GXpDxpG+tDvLt hs9fJncLu2AMkSRsQYMAOj2IKx+4p0WiUymh6rGwvt2mLTqWCsXsuXuIRx1xaIxpmcyL pZ4CEI9tZuDBl8N7TR3riU6I6yZEv/z8MLTySTZzten1A8+QqNqm/JpBKJREQSvV1Xy9 1b0gnLkSlqOJA8d4i28j2pFAj5uLOqXEAVYR+5sw+2jF447US3K/ZcoT3AULekQp5DO7 p7pQXsjy16HUvYn9IQX9klq+GesYv7GMKkFNmPX7SgI3CiDyV1KHY09v0Scl1DIjK6ZF hDug== X-Gm-Message-State: AOJu0Yw6o52W1TTx67zzBex64fyMtkCUWxT5i1eBDTmhe4yrJ4xK/4Gf 1M7iwPQpgPKCc4s2fhuJ74dC491aQWFzDiyrVSBibAEGEHgrVY+ucbBjKQ== X-Google-Smtp-Source: AGHT+IHj3dc5WMf385DsuvWJzecwmIrV/5y42G0vKAqN0yPCIc/cu+sIkGJSBl1qCI2lhaUs3MaJhQ== X-Received: by 2002:a05:6122:20a2:b0:4f5:22cc:71b9 with SMTP id 71dfb90a1353d-51015035003mr10108317e0c.5.1730237397640; Tue, 29 Oct 2024 14:29:57 -0700 (PDT) Received: from lvondent-mobl5.. (syn-107-146-107-067.res.spectrum.com. [107.146.107.67]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-51004777927sm1283579e0c.36.2024.10.29.14.29.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Oct 2024 14:29:55 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v1 2/2] main: Add call to g_dbus_set_debug Date: Tue, 29 Oct 2024 17:29:49 -0400 Message-ID: <20241029212949.3674826-2-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.47.0 In-Reply-To: <20241029212949.3674826-1-luiz.dentz@gmail.com> References: <20241029212949.3674826-1-luiz.dentz@gmail.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Luiz Augusto von Dentz This adds a call to g_dbus_set_debug which enabled debugging of D-Bus messages when dynamic debug is enabled for main.c: bluetoothd[3672799]: [:1.38799:method_call] > org.bluez.Device1.Connect [#761] bluetoothd[3672799]: [:1.38799:error] < org.bluez.Error.Failed [#761] --- src/main.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main.c b/src/main.c index 89ee6897c293..41c3271a7457 100644 --- a/src/main.c +++ b/src/main.c @@ -1322,6 +1322,11 @@ static void disconnected_dbus(DBusConnection *conn, void *data) mainloop_quit(); } +static void dbus_debug(const char *str, void *data) +{ + DBG_IDX(0xffff, "%s", str); +} + static int connect_dbus(void) { DBusConnection *conn; @@ -1343,6 +1348,7 @@ static int connect_dbus(void) g_dbus_set_disconnect_function(conn, disconnected_dbus, NULL, NULL); g_dbus_attach_object_manager(conn); + g_dbus_set_debug(dbus_debug, NULL, NULL); return 0; }