Date: Thu, 5 Jun 2025 09:14:31 -0400 From: John Baldwin <jhb@FreeBSD.org> To: Kyle Evans <kevans@FreeBSD.org>, Gleb Smirnoff <glebius@freebsd.org>, markj@freebsd.org Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: 969f6380eb66 - main - kdump: nicer printing of kill(2) PID argument Message-ID: <0b4a1945-8f75-4f57-9a57-5bd0c10a7af1@FreeBSD.org> In-Reply-To: <02ed6d30-b22a-456d-96e2-7f5b235766fd@FreeBSD.org> References: <202506040151.5541pESm016476@gitrepo.freebsd.org> <aEDO_3cfSbx2JnCG@cell.glebi.us> <02ed6d30-b22a-456d-96e2-7f5b235766fd@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 6/4/25 19:03, Kyle Evans wrote: > On 6/4/25 17:55, Gleb Smirnoff wrote: >> On Wed, Jun 04, 2025 at 01:51:14AM +0000, Kyle Evans wrote: >> K> The branch main has been updated by kevans: >> K> >> K> URL: https://cgit.FreeBSD.org/src/commit/?id=969f6380eb66f809eed3e5c38b6021824a4cc2bf >> K> >> K> commit 969f6380eb66f809eed3e5c38b6021824a4cc2bf >> K> Author: Kyle Evans <kevans@FreeBSD.org> >> K> AuthorDate: 2025-06-04 01:51:06 +0000 >> K> Commit: Kyle Evans <kevans@FreeBSD.org> >> K> CommitDate: 2025-06-04 01:51:06 +0000 >> K> >> K> kdump: nicer printing of kill(2) PID argument >> K> >> K> Similar to wait*(), kill(2) operates on a pid that currently gets output >> K> as hex. Output it in decimal to make it a little easier to eyeball the >> K> pid we're signalling. >> K> >> K> Reviewed by: markj >> K> Differential Revision: https://reviews.freebsd.org/D50508 >> >> I didn't review if PIDs are always printed as decimals or not, but for >> the file descriptors it is a mix of hex and decimals. :( Usually I go >> with a sed script over kdump output to make it consistent. >> > > To be fair, I'd like to fix that, too- I noticed close() the other day > for fd > 0, but paused when I: > > 1.) couldn't tell where we even output close args close is probably handled by the default case where where all of the arguments are just output as hex values. Note that for kdump, most syscalls fall into this case including syscalls with pointer arguments. You'd probably be a bit sad with 64-bit pointers printed as decimal for many system calls. truss is different as truss stores some rudimentary type information about system call arguments and then defaults to printing certain types like file descriptors and ids as decimal. truss also prints NULL for null pointers IIRC. A useful project perhaps would be to move the table describing system call argument types out of syscalls.c in truss and into libsysdecode so that kdump could also reuse it. Probably the API you would want is something that returns an individual `struct syscall_decode` given (ABI, number) input arguments. I don't think you can generate this table automatically from makesyscalls.lua as many of the "types" truss uses are synthetic types that aren't visible in C, e.g. "OpenFlags" meaning O_* flags passed to open(2). This would allow kdump's hand-written per-syscall-number rules to instead be closer to truss where you instead just iterate over types. It would also mean only having to update a single table in libsysdecode when adding a new system call to add both truss and kdump support. Only when a new argument type is added would one have to actually touch truss or kdump directly. -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?0b4a1945-8f75-4f57-9a57-5bd0c10a7af1>