On Thu, Jun 5, 2025 at 10:59 AM Kyle Evans <kev...@freebsd.org> wrote:
>
> On 6/5/25 11:54, Warner Losh wrote:
> > On Thu, Jun 5, 2025 at 6:14 AM John Baldwin <j...@freebsd.org> wrote:
> >>
> >> 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 <kev...@freebsd.org>
> >>>> K> AuthorDate: 2025-06-04 01:51:06 +0000
> >>>> K> Commit:     Kyle Evans <kev...@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.
> >
> > Yes. All this generation is why we did the lua project to make the
> > master system call table parsing into a library. We need it also for
> > qemu-bsd-user long-term: writing new system calls by hand is a pain
> > and error-prone.
> >
> >> 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).
> >
> > I think that we should, in the fullness of time, flag these so we can
> > do that. If we do add additional notations, we can not only have
> > better truss/trace output, as well as being able to generate the right
> > flag translations for running FreeBSD binaries on Linux (which people
> > are doing by hand right now...).
> >
> >> 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.
> >
> > I'd love for this to be generated as well...  It was certainly one of
> > the use cases that we had in mind for the GSOC project that did this.
> >
>
> If we don't currently have a GSoC project idea around the above thoughts
> about truss -> libsysdecode and how we might be able to leverage
> makesyscalls and/or other annotations for it, maybe that'd be good to
> fish for in the 2026 program.  I'm afraid I don't really have time for
> more than the sniping of random cases that make my life a tiny bit
> harder for the foreseeable future.

That's a great idea. I've not had the time to write it up with
sufficient detail for a gSOC student to want to do it...   There's
half a dozen different projects we could do to improve somebody's
quality of life and implementation...

Warner

Reply via email to