For each device that the driver handles, the driver must keep some state information. At a minimum, this consists of a pointer to the dev_info node for the device (required by getinfo(9E)). The driver can define a structure that contains all the information needed about a single device:
struct xxstate {
dev_info_t *dip;
};
This structure will grow as the device driver evolves. Additional useful fields might be a pointer to each of the device's mapped registers, or flags such as busy or suspended. The initial state structure the examples in this book use is given in Example 3-3.
struct xxstate {
dev_info_t *dip;
struct device_reg *regp;
int xx_busy;
struct xx_saved_device_state device_state;
};
Subsequent chapters in this manual may require that new fields be added to the state structure. Each chapter will list any additions.