intro(9)
NAME
intro - introduction to system kernel interfaces
DESCRIPTION
- This section contains information about the interfaces and
- subroutines in
the kernel.
PROTOTYPES ANSI-C AND ALL THAT
Yes please.
We would like all code to be fully prototyped.
- If your code compiles cleanly with cc -Wall we would feel
- happy about it.
It is important to understand that this is not a question of - just shutting up cc, it is a question about avoiding the things it
- complains
about. To put it bluntly, do not hide the problem by cast - ing and other
obfuscating practices, solve the problem.
INDENTATION AND STYLE
- Believe it or not, there actually exists a guide for inden
- tation and
style. It is not generally applied though. - We would appreciate if people would pay attention to it, and
- at least not
violate it blatantly. - We do not mind it too badly if you have your own style, but
- please make
sure we can read it too. - Please take time to read style(9) for more information.
NAMING THINGS
Some general rules exist:
- 1. If a function is meant as a debugging aid in DDB, it
- should be
enclosed in
#ifdef DDB- #endif /* DDB */
- And the name of the procedure should start with the
- prefix DDB_ to
clearly identify the procedure as a debugger routine.
SCOPE OF SYMBOLS
- It is important to carefully consider the scope of symbols
- in the kernel.
The default is to make everything static, unless some reason - requires the
opposite. - There are several reasons for this policy, the main one is
- that the kernel is one monolithic name-space, and pollution is not a
- good idea here
either. - For device drivers and other modules that do not add new in
- ternal interfaces to the kernel, the entire source should be in one file
- if possible.
That way all symbols can be made static. - If for some reason a module is split over multiple source
- files, then try
to split the module along some major fault-line and consider - using the
number of global symbols as your guide. The fewer the bet - ter.
SEE ALSO
HISTORY
- The intro section manual page appeared in FreeBSD 2.2.
- BSD December 13, 1995