Dynamic ddb commands
Matthew Fleming
matthew.fleming at isilon.com
Mon Feb 2 08:17:43 PST 2009
> In general it is far easier to just add sysinit's than to hack directly on the
> kernel linker. There are very few ddb commands, so one extra pointer or two
> per command is not a lot of space.
Respectfully, I disagree, for several reasons.
First, in order to make sysinit and sysctl work, the kernel linker
needed to know that there are a set of elf sections that have special
meaning. Yes, using sysinits means that there are still only two elf
sections of interest.
Second, as I mentioned before, having ddb commands added mixed in with
sysinits means that, if I have a bug in my sysinit I may not be able to
use some of my ddb commands to debug it. Even if DB_*COMMAND used
SI_ORDER_FIRST, any sysinit with the same priority may come first.
Next, if you want commands sorted globally, it could be done with either
implementation. But I think that commands that are defined by a module
should be listed with others from that module.
Last, changing struct command introduces a binary compatibility issue.
Any older driver that had a ddb command (even if they never realized
they couldn't access it) would need to be recompiled. I am not sure of
FreeBSD's binary compatibility policy, though, and it would presumably
be across a major OS revision number. So this is not a very compelling
argument.
Thanks,
matthew
More information about the freebsd-hackers
mailing list