14.3. Newbus API

由于Newbus API非常庞大,本节努力将它文档化。本文档的下一版本会 带来更多信息。

14.3.1. 源代码目录树中的重要位置

src/sys/[arch]/[arch] - 特定机器结构的 内核代码位于这个目录。例如i386结构或 SPARC64结构。

src/sys/dev/[bus] - 支持特定 [bus]的设备位于这个目录。

src/sys/dev/pci - PCI总线支持代码位于 这个目录。

src/sys/[isa|pci] - PCI/ISA设备驱动程序 位于这个目录。FreeBSD4.0版本中,PCI/ISA支持代码 过去存在于这个目录中。

14.3.2. 重要结构和类型定义

devclass_t - 这是指向 struct devclass的指针的类型定义。

device_method_t - 与 kobj_method_t相同(参看 src/sys/kobj.h)。

device_t - 这是指向 struct device的指针的类型定义。 device_t 表示系统中的设备。它是内核对象。 实现细节参看src/sys/sys/bus_private.h

driver_t - 这是一个类型定义,它引用 struct driverdriver结构是一类 device(设备)内核对象;它也保存着驱动程序的私有数据。

图 14.1. driver_t实现
struct driver { KOBJ_CLASS_FIELDS; void *priv; /* 驱动程序私有数据 */ };

device_state_t是一个枚举类型,即 device_state。它包含Newbus设备在自动配置前后 可能的状态。

图 14.2. 设备状态device_state_t
/* * src/sys/sys/bus.h */ typedef enum device_state { DS_NOTPRESENT, /* 未探测或探测失败 */ DS_ALIVE, /* 探测成功 */ DS_ATTACHED, /* 调用了连接方法 */ DS_BUSY /* 设备已打开 */ } device_state_t;

本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读 文档,如不能解决再联系 <questions@FreeBSD.org>.

关于本文档的问题请发信联系 <doc@FreeBSD.org>.