14.3. Newbus API
上一页 | 第 14 章 Newbus | 下一页

## 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设备驱动程序 位于这个目录。FreeBSD`4.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 driver`。 `driver`结构是一类 `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;

上一页 | 上一级 | 下一页
14.2. Newbus概览 | 起始页 | 第 15 章 声音子系统

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

如果对于FreeBSD有问题，请先阅读 文档，如不能解决再联系 <questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.