As the Newbus API is huge, this section makes some effort at documenting it. More information to come in the next revision of this document.
src/sys/[arch]/[arch] - Kernel code for a specific machine architecture resides in this directory. For example, the i386 architecture, or the SPARC64 architecture.
src/sys/dev/[bus] - device support for a specific [bus] resides in this directory.
src/sys/dev/pci - PCI bus support code resides in this directory.
src/sys/[isa|pci] - PCI/ISA device drivers reside in this directory. The PCI/ISA bus support code used to exist in this directory in FreeBSD version 4.0.
devclass_t - This is a type definition of a pointer to a struct devclass.
device_method_t - This is the same as kobj_method_t (see src/sys/kobj.h).
device_t - This is a type definition of a pointer to a struct device. device_t represents a device in the system. It is a kernel object. See src/sys/sys/bus_private.h for implementation details.
driver_t - This is a type definition which references struct driver. The driver struct is a class of the device kernel object; it also holds data private to the driver.
Figure 14-1. driver_t Implementation
struct driver { KOBJ_CLASS_FIELDS; void *priv; /* driver private data */ };
A device_state_t type, which is an enumeration, device_state. It contains the possible states of a Newbus device before and after the autoconfiguration process.