|
|
| version 1.10, 2004/04/01 07:33:18 | version 1.11, 2004/04/15 13:31:41 |
|---|---|
| Line 304 void device_verbose(device_t dev); | Line 304 void device_verbose(device_t dev); |
| /* | /* |
| * Access functions for devclass. | * Access functions for devclass. |
| */ | */ |
| int devclass_add_driver(devclass_t dc, driver_t *driver); | int devclass_add_driver(devclass_t dc, kobj_class_t driver); |
| int devclass_delete_driver(devclass_t dc, driver_t *driver); | int devclass_delete_driver(devclass_t dc, kobj_class_t driver); |
| devclass_t devclass_create(const char *classname); | devclass_t devclass_create(const char *classname); |
| devclass_t devclass_find(const char *classname); | devclass_t devclass_find(const char *classname); |
| driver_t *devclass_find_driver(devclass_t dc, const char *classname); | kobj_class_t devclass_find_driver(devclass_t dc, const char *classname); |
| const char *devclass_get_name(devclass_t dc); | const char *devclass_get_name(devclass_t dc); |
| device_t devclass_get_device(devclass_t dc, int unit); | device_t devclass_get_device(devclass_t dc, int unit); |
| void *devclass_get_softc(devclass_t dc, int unit); | void *devclass_get_softc(devclass_t dc, int unit); |
| int devclass_get_devices(devclass_t dc, device_t **listp, int *countp); | int devclass_get_devices(devclass_t dc, device_t **listp, int *countp); |
| int devclass_get_maxunit(devclass_t dc); | int devclass_get_maxunit(devclass_t dc); |
| void devclass_set_parent(devclass_t dc, devclass_t pdc); | |
| devclass_t devclass_get_parent(devclass_t dc); | |
| /* | /* |
| * Access functions for device resources. | * Access functions for device resources. |
| Line 360 struct driver_module_data { | Line 362 struct driver_module_data { |
| int (*dmd_chainevh)(struct module *, int, void *); | int (*dmd_chainevh)(struct module *, int, void *); |
| void *dmd_chainarg; | void *dmd_chainarg; |
| const char *dmd_busname; | const char *dmd_busname; |
| driver_t **dmd_drivers; | kobj_class_t dmd_driver; |
| int dmd_ndrivers; | |
| devclass_t *dmd_devclass; | devclass_t *dmd_devclass; |
| }; | }; |
| #define DRIVER_MODULE(name, busname, driver, devclass, evh, arg) \ | #define DRIVER_MODULE(name, busname, driver, devclass, evh, arg) \ |
| \ | \ |
| static driver_t *name##_##busname##_driver_list[] = { &driver }; \ | |
| static struct driver_module_data name##_##busname##_driver_mod = { \ | static struct driver_module_data name##_##busname##_driver_mod = { \ |
| evh, arg, \ | evh, arg, \ |
| #busname, \ | #busname, \ |
| name##_##busname##_driver_list, \ | (kobj_class_t) &driver, \ |
| (sizeof name##_##busname##_driver_list) / \ | |
| (sizeof name##_##busname##_driver_list[0]), \ | |
| &devclass \ | |
| }; \ | |
| \ | |
| static moduledata_t name##_##busname##_mod = { \ | |
| #busname "/" #name, \ | |
| driver_module_handler, \ | |
| &name##_##busname##_driver_mod \ | |
| }; \ | |
| DECLARE_MODULE(name##_##busname, name##_##busname##_mod, \ | |
| SI_SUB_DRIVERS, SI_ORDER_MIDDLE) | |
| #define MULTI_DRIVER_MODULE(name, busname, drivers, devclass, evh, arg) \ | |
| \ | |
| static driver_t name##_##busname##_driver_list[] = drivers; \ | |
| static struct driver_module_data name##_##busname##_driver_mod = { \ | |
| evh, arg, \ | |
| #busname, \ | |
| name##_##busname##_driver_list, \ | |
| (sizeof name##_##busname##_driver_list) / \ | |
| (sizeof name##_##busname##_driver_list[0]), \ | |
| &devclass \ | &devclass \ |
| }; \ | }; \ |
| \ | \ |