2023-05-26 00:07:06

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: [PATCH BlueZ] monitor: Print process information

From: Luiz Augusto von Dentz <[email protected]>

This prints the process information when available:

bluetoothd[35]: @ MGMT Command: Rea.. (0x0001) plen 0 {0x0001}
@ MGMT Event: Command Complete (0x0001) plen 6 {0x0001}
Read Management Version Information (0x0001) plen 3
---
monitor/packet.c | 56 +++++++++++++++++++++++++++---------------------
1 file changed, 31 insertions(+), 25 deletions(-)

diff --git a/monitor/packet.c b/monitor/packet.c
index b492b8a757a5..04eb70141e68 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -315,13 +315,33 @@ void packet_set_msft_evt_prefix(const uint8_t *prefix, uint8_t len)
memcpy(index_list[index_current].msft_evt_prefix, prefix, len);
}

+static void cred_pid(struct ucred *cred, char *str, size_t len)
+{
+ char *path = alloca(24);
+ char line[128];
+ FILE *fp;
+
+ snprintf(path, 23, "/proc/%u/comm", cred->pid);
+
+ fp = fopen(path, "re");
+ if (fp) {
+ if (fgets(line, sizeof(line), fp)) {
+ line[strcspn(line, "\r\n")] = '\0';
+ snprintf(str, len, "%s[%u]", line, cred->pid);
+ } else
+ snprintf(str, len, "[%u]", cred->pid);
+ fclose(fp);
+ } else
+ snprintf(str, len, "[%u]", cred->pid);
+}
+
static void print_packet(struct timeval *tv, struct ucred *cred, char ident,
uint16_t index, const char *channel,
const char *color, const char *label,
const char *text, const char *extra)
{
int col = num_columns();
- char line[256], ts_str[96];
+ char line[256], ts_str[96], pid_str[140];
int n, ts_len = 0, ts_pos = 0, len = 0, pos = 0;
static size_t last_frame;

@@ -418,7 +438,13 @@ static void print_packet(struct timeval *tv, struct ucred *cred, char ident,
pos += n;
}

- n = sprintf(line + pos, "%c %s", ident, label ? label : "");
+ if (cred) {
+ cred_pid(cred, pid_str, sizeof(pid_str));
+ n = sprintf(line + pos, "%s: %c %s", pid_str, ident,
+ label ? label : "");
+ } else
+ n = sprintf(line + pos, "%c %s", ident, label ? label : "");
+
if (n > 0) {
pos += n;
len += n;
@@ -12091,7 +12117,6 @@ void packet_user_logging(struct timeval *tv, struct ucred *cred,
const char *ident, const void *data,
uint16_t size)
{
- char pid_str[140];
const char *label;
const char *color;

@@ -12117,26 +12142,7 @@ void packet_user_logging(struct timeval *tv, struct ucred *cred,
}

if (cred) {
- char *path = alloca(24);
- char line[128];
- FILE *fp;
-
- snprintf(path, 23, "/proc/%u/comm", cred->pid);
-
- fp = fopen(path, "re");
- if (fp) {
- if (fgets(line, sizeof(line), fp)) {
- line[strcspn(line, "\r\n")] = '\0';
- snprintf(pid_str, sizeof(pid_str), "%s[%u]",
- line, cred->pid);
- } else
- snprintf(pid_str, sizeof(pid_str), "%u",
- cred->pid);
- fclose(fp);
- } else
- snprintf(pid_str, sizeof(pid_str), "%u", cred->pid);
-
- label = pid_str;
+ label = NULL;
} else {
if (ident)
label = ident;
@@ -12146,8 +12152,8 @@ void packet_user_logging(struct timeval *tv, struct ucred *cred,

if (ident && (ident[0] == '<' || ident[0] == '>')) {
packet_decode(tv, cred, ident[0], index, color,
- label == ident ? &ident[2] : label,
- data, size);
+ label == ident ? &ident[2] : label,
+ data, size);
return;
}

--
2.40.1



2023-05-26 02:23:52

by bluez.test.bot

[permalink] [raw]
Subject: RE: [BlueZ] monitor: Print process information

This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=751131

---Test result---

Test Summary:
CheckPatch PASS 0.54 seconds
GitLint PASS 0.32 seconds
BuildEll PASS 33.89 seconds
BluezMake PASS 1159.05 seconds
MakeCheck PASS 12.70 seconds
MakeDistcheck PASS 190.13 seconds
CheckValgrind PASS 310.78 seconds
CheckSmatch WARNING 427.69 seconds
bluezmakeextell PASS 126.96 seconds
IncrementalBuild PASS 994.27 seconds
ScanBuild WARNING 1366.89 seconds

Details
##############################
Test: CheckSmatch - WARNING
Desc: Run smatch tool with source
Output:
monitor/packet.c: note: in included file:monitor/display.h:82:26: warning: Variable length array is used.monitor/packet.c:1832:26: warning: Variable length array is used.monitor/packet.c: note: in included file:monitor/bt.h:3552:52: warning: array of flexible structuresmonitor/bt.h:3540:40: warning: array of flexible structures
##############################
Test: ScanBuild - WARNING
Desc: Run Scan Build
Output:
monitor/packet.c:12367:2: warning: Null pointer passed to 2nd parameter expecting 'nonnull'
memcpy(tx, tv, sizeof(*tv));
^~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.



---
Regards,
Linux Bluetooth

2023-05-26 22:22:55

by patchwork-bot+bluetooth

[permalink] [raw]
Subject: Re: [PATCH BlueZ] monitor: Print process information

Hello:

This patch was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <[email protected]>:

On Thu, 25 May 2023 16:46:21 -0700 you wrote:
> From: Luiz Augusto von Dentz <[email protected]>
>
> This prints the process information when available:
>
> bluetoothd[35]: @ MGMT Command: Rea.. (0x0001) plen 0 {0x0001}
> @ MGMT Event: Command Complete (0x0001) plen 6 {0x0001}
> Read Management Version Information (0x0001) plen 3
>
> [...]

Here is the summary with links:
- [BlueZ] monitor: Print process information
https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=ec85350c4803

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html