Lines Matching refs:dc
205 static void print_devclass_short(devclass_t dc, int indent);
206 static void print_devclass(devclass_t dc, int indent);
239 devclass_t dc = (devclass_t)arg1; in devclass_sysctl_handler() local
244 value = dc->parent ? dc->parent->name : ""; in devclass_sysctl_handler()
253 devclass_sysctl_init(devclass_t dc) in devclass_sysctl_init() argument
255 if (dc->sysctl_tree != NULL) in devclass_sysctl_init()
257 sysctl_ctx_init(&dc->sysctl_ctx); in devclass_sysctl_init()
258 dc->sysctl_tree = SYSCTL_ADD_NODE(&dc->sysctl_ctx, in devclass_sysctl_init()
259 SYSCTL_STATIC_CHILDREN(_dev), OID_AUTO, dc->name, in devclass_sysctl_init()
261 SYSCTL_ADD_PROC(&dc->sysctl_ctx, SYSCTL_CHILDREN(dc->sysctl_tree), in devclass_sysctl_init()
264 dc, DEVCLASS_SYSCTL_PARENT, devclass_sysctl_handler, "A", in devclass_sysctl_init()
336 devclass_t dc = dev->devclass; in device_sysctl_init() local
341 devclass_sysctl_init(dc); in device_sysctl_init()
344 SYSCTL_CHILDREN(dc->sysctl_tree), OID_AUTO, in device_sysctl_init()
345 dev->nameunit + strlen(dc->name), in device_sysctl_init()
385 devclass_t dc = dev->devclass; in device_sysctl_update() local
389 sysctl_rename_oid(dev->sysctl_tree, dev->nameunit + strlen(dc->name)); in device_sysctl_update()
564 devclass_t dc; in devclass_find_internal() local
570 TAILQ_FOREACH(dc, &devclasses, link) { in devclass_find_internal()
571 if (!strcmp(dc->name, classname)) in devclass_find_internal()
575 if (create && !dc) { in devclass_find_internal()
577 dc = malloc(sizeof(struct devclass) + strlen(classname) + 1, in devclass_find_internal()
579 dc->parent = NULL; in devclass_find_internal()
580 dc->name = (char*) (dc + 1); in devclass_find_internal()
581 strcpy(dc->name, classname); in devclass_find_internal()
582 TAILQ_INIT(&dc->drivers); in devclass_find_internal()
583 TAILQ_INSERT_TAIL(&devclasses, dc, link); in devclass_find_internal()
596 if (parentname && dc && !dc->parent && in devclass_find_internal()
598 dc->parent = devclass_find_internal(parentname, NULL, TRUE); in devclass_find_internal()
599 dc->parent->flags |= DC_HAS_CHILDREN; in devclass_find_internal()
602 return (dc); in devclass_find_internal()
651 devclass_driver_added(devclass_t dc, driver_t *driver) in devclass_driver_added() argument
659 for (i = 0; i < dc->maxunit; i++) in devclass_driver_added()
660 if (dc->devices[i] && device_is_attached(dc->devices[i])) in devclass_driver_added()
661 BUS_DRIVER_ADDED(dc->devices[i], driver); in devclass_driver_added()
671 if (!(dc->flags & DC_HAS_CHILDREN)) in devclass_driver_added()
673 parent = dc; in devclass_driver_added()
674 TAILQ_FOREACH(dc, &devclasses, link) { in devclass_driver_added()
675 if (dc->parent == parent) in devclass_driver_added()
676 devclass_driver_added(dc, driver); in devclass_driver_added()
700 devclass_add_driver(devclass_t dc, driver_t *driver, int pass, devclass_t *dcp) in devclass_add_driver() argument
738 TAILQ_INSERT_TAIL(&dc->drivers, dl, link); in devclass_add_driver()
746 devclass_driver_added(dc, driver); in devclass_add_driver()
772 devclass_driver_deleted(devclass_t busclass, devclass_t dc, driver_t *driver) in devclass_driver_deleted() argument
791 for (i = 0; i < dc->maxunit; i++) { in devclass_driver_deleted()
792 if (dc->devices[i]) { in devclass_driver_deleted()
793 dev = dc->devices[i]; in devclass_driver_deleted()
821 error = devclass_driver_deleted(busclass, dc, driver); in devclass_driver_deleted()
846 devclass_t dc = devclass_find(driver->name); in devclass_delete_driver() local
852 if (!dc) in devclass_delete_driver()
869 error = devclass_driver_deleted(busclass, dc, driver); in devclass_delete_driver()
901 devclass_t dc = devclass_find(driver->name); in devclass_quiesce_driver() local
909 if (!dc) in devclass_quiesce_driver()
936 for (i = 0; i < dc->maxunit; i++) { in devclass_quiesce_driver()
937 if (dc->devices[i]) { in devclass_quiesce_driver()
938 dev = dc->devices[i]; in devclass_quiesce_driver()
954 devclass_find_driver_internal(devclass_t dc, const char *classname) in devclass_find_driver_internal() argument
958 PDEBUG(("%s in devclass %s", classname, DEVCLANAME(dc))); in devclass_find_driver_internal()
960 TAILQ_FOREACH(dl, &dc->drivers, link) { in devclass_find_driver_internal()
973 devclass_get_name(devclass_t dc) in devclass_get_name() argument
975 return (dc->name); in devclass_get_name()
988 devclass_get_device(devclass_t dc, int unit) in devclass_get_device() argument
990 if (dc == NULL || unit < 0 || unit >= dc->maxunit) in devclass_get_device()
992 return (dc->devices[unit]); in devclass_get_device()
1006 devclass_get_softc(devclass_t dc, int unit) in devclass_get_softc() argument
1010 dev = devclass_get_device(dc, unit); in devclass_get_softc()
1034 devclass_get_devices(devclass_t dc, device_t **devlistp, int *devcountp) in devclass_get_devices() argument
1039 count = devclass_get_count(dc); in devclass_get_devices()
1045 for (i = 0; i < dc->maxunit; i++) { in devclass_get_devices()
1046 if (dc->devices[i]) { in devclass_get_devices()
1047 list[count] = dc->devices[i]; in devclass_get_devices()
1075 devclass_get_drivers(devclass_t dc, driver_t ***listp, int *countp) in devclass_get_drivers() argument
1082 TAILQ_FOREACH(dl, &dc->drivers, link) in devclass_get_drivers()
1089 TAILQ_FOREACH(dl, &dc->drivers, link) { in devclass_get_drivers()
1105 devclass_get_count(devclass_t dc) in devclass_get_count() argument
1110 for (i = 0; i < dc->maxunit; i++) in devclass_get_count()
1111 if (dc->devices[i]) in devclass_get_count()
1126 devclass_get_maxunit(devclass_t dc) in devclass_get_maxunit() argument
1128 if (dc == NULL) in devclass_get_maxunit()
1130 return (dc->maxunit); in devclass_get_maxunit()
1144 devclass_find_free_unit(devclass_t dc, int unit) in devclass_find_free_unit() argument
1146 if (dc == NULL) in devclass_find_free_unit()
1148 while (unit < dc->maxunit && dc->devices[unit] != NULL) in devclass_find_free_unit()
1163 devclass_set_parent(devclass_t dc, devclass_t pdc) in devclass_set_parent() argument
1165 dc->parent = pdc; in devclass_set_parent()
1174 devclass_get_parent(devclass_t dc) in devclass_get_parent() argument
1176 return (dc->parent); in devclass_get_parent()
1180 devclass_get_sysctl_ctx(devclass_t dc) in devclass_get_sysctl_ctx() argument
1182 return (&dc->sysctl_ctx); in devclass_get_sysctl_ctx()
1186 devclass_get_sysctl_tree(devclass_t dc) in devclass_get_sysctl_tree() argument
1188 return (dc->sysctl_tree); in devclass_get_sysctl_tree()
1208 devclass_alloc_unit(devclass_t dc, device_t dev, int *unitp) in devclass_alloc_unit() argument
1213 PDEBUG(("unit %d in devclass %s", unit, DEVCLANAME(dc))); in devclass_alloc_unit()
1217 BUS_HINT_DEVICE_UNIT(device_get_parent(dev), dev, dc->name, in devclass_alloc_unit()
1226 if (unit < dc->maxunit && dc->devices[unit] != NULL) { in devclass_alloc_unit()
1229 dc->name, dc->name, *unitp); in devclass_alloc_unit()
1237 if (unit < dc->maxunit && dc->devices[unit] != NULL) in devclass_alloc_unit()
1241 if (resource_string_value(dc->name, unit, "at", &s) == in devclass_alloc_unit()
1262 if (unit >= dc->maxunit) { in devclass_alloc_unit()
1266 dc->devices = reallocf(dc->devices, in devclass_alloc_unit()
1267 newsize * sizeof(*dc->devices), M_BUS, M_WAITOK); in devclass_alloc_unit()
1268 memset(dc->devices + dc->maxunit, 0, in devclass_alloc_unit()
1269 sizeof(device_t) * (newsize - dc->maxunit)); in devclass_alloc_unit()
1270 dc->maxunit = newsize; in devclass_alloc_unit()
1272 PDEBUG(("now: unit %d in devclass %s", unit, DEVCLANAME(dc))); in devclass_alloc_unit()
1296 devclass_add_device(devclass_t dc, device_t dev) in devclass_add_device() argument
1300 PDEBUG(("%s in devclass %s", DEVICENAME(dev), DEVCLANAME(dc))); in devclass_add_device()
1302 buflen = snprintf(NULL, 0, "%s%d$", dc->name, INT_MAX); in devclass_add_device()
1307 if ((error = devclass_alloc_unit(dc, dev, &dev->unit)) != 0) { in devclass_add_device()
1312 dc->devices[dev->unit] = dev; in devclass_add_device()
1313 dev->devclass = dc; in devclass_add_device()
1314 snprintf(dev->nameunit, buflen, "%s%d", dc->name, dev->unit); in devclass_add_device()
1332 devclass_delete_device(devclass_t dc, device_t dev) in devclass_delete_device() argument
1334 if (!dc || !dev) in devclass_delete_device()
1337 PDEBUG(("%s in devclass %s", DEVICENAME(dev), DEVCLANAME(dc))); in devclass_delete_device()
1339 if (dev->devclass != dc || dc->devices[dev->unit] != dev) in devclass_delete_device()
1341 dc->devices[dev->unit] = NULL; in devclass_delete_device()
1367 devclass_t dc; in make_device() local
1372 dc = devclass_find_internal(name, NULL, TRUE); in make_device()
1373 if (!dc) { in make_device()
1379 dc = NULL; in make_device()
1399 if (devclass_add_device(dc, dev)) { in make_device()
1615 devclass_t dc; in device_find_child() local
1618 dc = devclass_find(classname); in device_find_child()
1619 if (!dc) in device_find_child()
1623 child = devclass_get_device(dc, unit); in device_find_child()
1627 for (unit = 0; unit < devclass_get_maxunit(dc); unit++) { in device_find_child()
1628 child = devclass_get_device(dc, unit); in device_find_child()
1640 first_matching_driver(devclass_t dc, device_t dev) in first_matching_driver() argument
1643 return (devclass_find_driver_internal(dc, dev->devclass->name)); in first_matching_driver()
1644 return (TAILQ_FIRST(&dc->drivers)); in first_matching_driver()
1651 next_matching_driver(devclass_t dc, device_t dev, driverlink_t last) in next_matching_driver() argument
1669 devclass_t dc; in device_probe_child() local
1678 dc = dev->devclass; in device_probe_child()
1679 if (!dc) in device_probe_child()
1688 for (; dc; dc = dc->parent) { in device_probe_child()
1689 for (dl = first_matching_driver(dc, child); in device_probe_child()
1691 dl = next_matching_driver(dc, child, dl)) { in device_probe_child()
2383 devclass_t dc; in device_set_devclass() local
2397 dc = devclass_find_internal(classname, NULL, TRUE); in device_set_devclass()
2398 if (!dc) in device_set_devclass()
2401 error = devclass_add_device(dc, dev); in device_set_devclass()
2756 devclass_t dc; in device_set_unit() local
2761 dc = device_get_devclass(dev); in device_set_unit()
2762 if (unit < dc->maxunit && dc->devices[unit]) in device_set_unit()
2764 err = devclass_delete_device(dc, dev); in device_set_unit()
2768 err = devclass_add_device(dc, dev); in device_set_unit()
3414 devclass_t dc = dev->devclass; in bus_identify_children() local
3417 TAILQ_FOREACH(dl, &dc->drivers, link) { in bus_identify_children()
3888 devclass_t dc; in bus_generic_new_pass() local
3891 dc = dev->devclass; in bus_generic_new_pass()
3892 TAILQ_FOREACH(dl, &dc->drivers, link) { in bus_generic_new_pass()
5432 print_devclass_short(devclass_t dc, int indent) in print_devclass_short() argument
5434 if ( !dc ) in print_devclass_short()
5437 indentprintf(("devclass %s: max units = %d\n", dc->name, dc->maxunit)); in print_devclass_short()
5441 print_devclass(devclass_t dc, int indent) in print_devclass() argument
5445 if ( !dc ) in print_devclass()
5448 print_devclass_short(dc, indent); in print_devclass()
5450 print_driver_list(dc->drivers, indent+1); in print_devclass()
5453 for (i = 0; i < dc->maxunit; i++) in print_devclass()
5454 if (dc->devices[i]) in print_devclass()
5455 print_device(dc->devices[i], indent+1); in print_devclass()
5461 devclass_t dc; in print_devclass_list_short() local
5464 TAILQ_FOREACH(dc, &devclasses, link) { in print_devclass_list_short()
5465 print_devclass_short(dc, 0); in print_devclass_list_short()
5472 devclass_t dc; in print_devclass_list() local
5475 TAILQ_FOREACH(dc, &devclasses, link) { in print_devclass_list()
5476 print_devclass(dc, 0); in print_devclass_list()
5648 devclass_t dc; in driver_exists() local
5650 for (dc = bus->devclass; dc != NULL; dc = dc->parent) { in driver_exists()
5651 if (devclass_find_driver_internal(dc, driver) != NULL) in driver_exists()
5675 devclass_t dc; in device_do_deferred_actions() local
5685 TAILQ_FOREACH(dc, &devclasses, link) { in device_do_deferred_actions()
5686 TAILQ_FOREACH(dl, &dc->drivers, link) { in device_do_deferred_actions()
5688 devclass_driver_added(dc, dl->driver); in device_do_deferred_actions()
5863 devclass_t dc; in devctl2_ioctl() local
5890 dc = devclass_create(driver); in devctl2_ioctl()
5891 if (dc == NULL) { in devctl2_ioctl()
5913 error = devclass_add_device(dc, dev); in devctl2_ioctl()