一個總線是處理器和一個或多個設備之間的通道. 為設備模型的目的, 所有的設備都通過 一個總線連接, 甚至當它是一個內部的虛擬的,"平臺"總線. 總線可以插入另一個 - 一個 USB 控制器常常是一個 PCI 設備, 例如. 設備模型表示在總線和它們控制的設備之間的 實際連接.
?
在 Linux 設備模型中, 一個總線由 bus_type 結構代表, 定義在 <linux/device.h>. 這 個結構看來象:
?
struct bus_type { char *name;
struct subsystem subsys; struct kset drivers; struct kset devices;
int (*match)(struct device *dev, struct device_driver *drv); struct device *(*add)(struct device * parent, char * bus_id); int (*hotplug) (struct device *dev, char **envp,
int num_envp, char *buffer, int buffer_size);
/* Some fields omitted */
};
?
name 成員是總線的名子, 有些同 pci. 你可從這個結構中見到每個總線是它自己的子系 統; 這個子系統不位于 sysfs 的頂層, 但是. 相反, 它們在總線子系統下面. 一個總線 包含 2 個 ksets, 代表已知的總線的驅動和所有插入總線的設備. 所以, 有一套方法我 們馬上將涉及.