System Tree essentials UNDERSTANDING the system

gnn at neville-neil.com gnn at neville-neil.com
Thu Sep 8 19:44:37 PDT 2005


At Thu, 8 Sep 2005 18:00:45 -0400,
Sandro Noel wrote:
> I've just had a look at it quickly, and i was going to propose
> building a database to organize the information but this seems
> right.

It's not original to me, I have seen whole RTOSs shipped with the
kernel APIs and docs in the code and then extracted by a similar
method.

> I was thinking of - let me know if you share this vue -  organizing  
> the base system into features, something like

Yes, that's correct approach.

BTW You should use global and cscope to look around the kernel for the
module declarations to get an idea of the system startup order.  This
is what I did to write the chapter on system startup in the latest
"Design and Implementation" book.

To find those tools just start at www.codespelunking.org

Using the parts of the tools that allow you to "find all functions
calling X" look for:

SYSINIT

which will get you lines like this:

SYSINIT(domain_ ## name, SI_SUB_PROTO_DOMAIN, SI_ORDER_SECOND, net_add_domain, & name ## domain)

This lets you know what is being started, the protocol domains, where
it should go (SECOND), how it is started (net_add_domain()) etc.

Until you understand the startup sequence you have very little chance
of understanding the dependencies in the system.  It is not perfect
but it is a good overall start, at least in my opinion.

We ought to generate a map somehow...  Hmmm.  Have to think about
that.

> now, i guess this brings a question, is it possible to devide the
> system into smaller blocks like that, while still keeping it
> functional.  as an example. is it possible to boot the system to a
> shell without any user files on the system. or any groups for that
> matter.

It is hard but not impossible.  It requires something most of us hate,
work ;-) Of course work is easier when shared.

Later,
George




More information about the freebsd-small mailing list