Date: Fri, 30 Jan 2009 10:29:36 -0800 From: Sam Leffler <sam@freebsd.org> To: Matthew Fleming <matthew.fleming@isilon.com> Cc: freebsd-hackers@freebsd.org Subject: Re: Dynamic ddb commands Message-ID: <49834710.9070908@freebsd.org> In-Reply-To: <1233337318.13748.101.camel@amaretto> References: <1233337318.13748.101.camel@amaretto>
next in thread | previous in thread | raw e-mail | index | archive | help
Matthew Fleming wrote:
> I'm working on BSD 6.x and of course the set of ddb commands is static
> to whatever is in the kernel at compile. I see that BSD 7.1 has dynamic
> commands using sysinits and sysuninit's to call a new
> db_[un]register_cmd.
>
> I see this, though, only after I have spent a day or so adding a
> linker_file_[un]register_ddb() that works similarly to how sysinits are
> merged for the boot-time modules (malloc and copy pointers). It seems
> to me that this solution (have the linker look for db_set and db_cmd_set
> and, if there are any entries, malloc and save pointers to commands) is
> more efficient in terms of space than adding a LIST to the command
> structure and then forcing sysinits to run.
>
I haven't looked at your approach so not sure how to respond. The
existing code was simple.
> I'm curious as to why the current method was chosen when something
> lighter-weight was available... or so it seems from my perspective
> looking at the 6.x code base.
>
> As another side note, lexicographic order for the commands doesn't seem
> to add anything, except that command insert/delete are O(n/2) instead of
> O(n). It can make it harder to use ddb to debug ddb, though. If, e.g.
> there's a pointer problem somewhere in the command list, if the most
> basic commands are up front like examine and write, then at least those
> can be used to possibly repair ddb so a debug session can continue.
>
>
If I recall it was painful to find entries in the help listing w/o sorting.
Feel free to propose an alternative implementation; noone's wed to
what's in the tree.
Sam
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?49834710.9070908>
