Lines Matching refs:dc
169 static void print_devclass_short(devclass_t dc, int indent);
170 static void print_devclass(devclass_t dc, int indent);
205 devclass_t dc = (devclass_t)arg1; in devclass_sysctl_handler() local
210 value = dc->parent ? dc->parent->name : ""; in devclass_sysctl_handler()
219 devclass_sysctl_init(devclass_t dc) in devclass_sysctl_init() argument
222 if (dc->sysctl_tree != NULL) in devclass_sysctl_init()
224 sysctl_ctx_init(&dc->sysctl_ctx); in devclass_sysctl_init()
225 dc->sysctl_tree = SYSCTL_ADD_NODE(&dc->sysctl_ctx, in devclass_sysctl_init()
226 SYSCTL_STATIC_CHILDREN(_dev), OID_AUTO, dc->name, in devclass_sysctl_init()
228 SYSCTL_ADD_PROC(&dc->sysctl_ctx, SYSCTL_CHILDREN(dc->sysctl_tree), in devclass_sysctl_init()
230 dc, DEVCLASS_SYSCTL_PARENT, devclass_sysctl_handler, "A", in devclass_sysctl_init()
281 devclass_t dc = dev->devclass; in device_sysctl_init() local
286 devclass_sysctl_init(dc); in device_sysctl_init()
289 SYSCTL_CHILDREN(dc->sysctl_tree), OID_AUTO, in device_sysctl_init()
290 dev->nameunit + strlen(dc->name), in device_sysctl_init()
321 devclass_t dc = dev->devclass; in device_sysctl_update() local
325 sysctl_rename_oid(dev->sysctl_tree, dev->nameunit + strlen(dc->name)); in device_sysctl_update()
966 devclass_t dc; in devclass_find_internal() local
972 TAILQ_FOREACH(dc, &devclasses, link) { in devclass_find_internal()
973 if (!strcmp(dc->name, classname)) in devclass_find_internal()
977 if (create && !dc) { in devclass_find_internal()
979 dc = malloc(sizeof(struct devclass) + strlen(classname) + 1, in devclass_find_internal()
981 if (!dc) in devclass_find_internal()
983 dc->parent = NULL; in devclass_find_internal()
984 dc->name = (char*) (dc + 1); in devclass_find_internal()
985 strcpy(dc->name, classname); in devclass_find_internal()
986 TAILQ_INIT(&dc->drivers); in devclass_find_internal()
987 TAILQ_INSERT_TAIL(&devclasses, dc, link); in devclass_find_internal()
1000 if (parentname && dc && !dc->parent && in devclass_find_internal()
1002 dc->parent = devclass_find_internal(parentname, NULL, TRUE); in devclass_find_internal()
1003 dc->parent->flags |= DC_HAS_CHILDREN; in devclass_find_internal()
1006 return (dc); in devclass_find_internal()
1055 devclass_driver_added(devclass_t dc, driver_t *driver) in devclass_driver_added() argument
1063 for (i = 0; i < dc->maxunit; i++) in devclass_driver_added()
1064 if (dc->devices[i] && device_is_attached(dc->devices[i])) in devclass_driver_added()
1065 BUS_DRIVER_ADDED(dc->devices[i], driver); in devclass_driver_added()
1075 if (!(dc->flags & DC_HAS_CHILDREN)) in devclass_driver_added()
1077 parent = dc; in devclass_driver_added()
1078 TAILQ_FOREACH(dc, &devclasses, link) { in devclass_driver_added()
1079 if (dc->parent == parent) in devclass_driver_added()
1080 devclass_driver_added(dc, driver); in devclass_driver_added()
1096 devclass_add_driver(devclass_t dc, driver_t *driver, int pass, devclass_t *dcp) in devclass_add_driver() argument
1133 TAILQ_INSERT_TAIL(&dc->drivers, dl, link); in devclass_add_driver()
1138 devclass_driver_added(dc, driver); in devclass_add_driver()
1163 devclass_driver_deleted(devclass_t busclass, devclass_t dc, driver_t *driver) in devclass_driver_deleted() argument
1179 for (i = 0; i < dc->maxunit; i++) { in devclass_driver_deleted()
1180 if (dc->devices[i]) { in devclass_driver_deleted()
1181 dev = dc->devices[i]; in devclass_driver_deleted()
1206 error = devclass_driver_deleted(busclass, dc, driver); in devclass_driver_deleted()
1231 devclass_t dc = devclass_find(driver->name); in devclass_delete_driver() local
1237 if (!dc) in devclass_delete_driver()
1254 error = devclass_driver_deleted(busclass, dc, driver); in devclass_delete_driver()
1286 devclass_t dc = devclass_find(driver->name); in devclass_quiesce_driver() local
1294 if (!dc) in devclass_quiesce_driver()
1321 for (i = 0; i < dc->maxunit; i++) { in devclass_quiesce_driver()
1322 if (dc->devices[i]) { in devclass_quiesce_driver()
1323 dev = dc->devices[i]; in devclass_quiesce_driver()
1339 devclass_find_driver_internal(devclass_t dc, const char *classname) in devclass_find_driver_internal() argument
1343 PDEBUG(("%s in devclass %s", classname, DEVCLANAME(dc))); in devclass_find_driver_internal()
1345 TAILQ_FOREACH(dl, &dc->drivers, link) { in devclass_find_driver_internal()
1358 devclass_get_name(devclass_t dc) in devclass_get_name() argument
1360 return (dc->name); in devclass_get_name()
1373 devclass_get_device(devclass_t dc, int unit) in devclass_get_device() argument
1375 if (dc == NULL || unit < 0 || unit >= dc->maxunit) in devclass_get_device()
1377 return (dc->devices[unit]); in devclass_get_device()
1391 devclass_get_softc(devclass_t dc, int unit) in devclass_get_softc() argument
1395 dev = devclass_get_device(dc, unit); in devclass_get_softc()
1419 devclass_get_devices(devclass_t dc, device_t **devlistp, int *devcountp) in devclass_get_devices() argument
1424 count = devclass_get_count(dc); in devclass_get_devices()
1430 for (i = 0; i < dc->maxunit; i++) { in devclass_get_devices()
1431 if (dc->devices[i]) { in devclass_get_devices()
1432 list[count] = dc->devices[i]; in devclass_get_devices()
1460 devclass_get_drivers(devclass_t dc, driver_t ***listp, int *countp) in devclass_get_drivers() argument
1467 TAILQ_FOREACH(dl, &dc->drivers, link) in devclass_get_drivers()
1474 TAILQ_FOREACH(dl, &dc->drivers, link) { in devclass_get_drivers()
1490 devclass_get_count(devclass_t dc) in devclass_get_count() argument
1495 for (i = 0; i < dc->maxunit; i++) in devclass_get_count()
1496 if (dc->devices[i]) in devclass_get_count()
1511 devclass_get_maxunit(devclass_t dc) in devclass_get_maxunit() argument
1513 if (dc == NULL) in devclass_get_maxunit()
1515 return (dc->maxunit); in devclass_get_maxunit()
1528 devclass_find_free_unit(devclass_t dc, int unit) in devclass_find_free_unit() argument
1530 if (dc == NULL) in devclass_find_free_unit()
1532 while (unit < dc->maxunit && dc->devices[unit] != NULL) in devclass_find_free_unit()
1547 devclass_set_parent(devclass_t dc, devclass_t pdc) in devclass_set_parent() argument
1549 dc->parent = pdc; in devclass_set_parent()
1558 devclass_get_parent(devclass_t dc) in devclass_get_parent() argument
1560 return (dc->parent); in devclass_get_parent()
1564 devclass_get_sysctl_ctx(devclass_t dc) in devclass_get_sysctl_ctx() argument
1566 return (&dc->sysctl_ctx); in devclass_get_sysctl_ctx()
1570 devclass_get_sysctl_tree(devclass_t dc) in devclass_get_sysctl_tree() argument
1572 return (dc->sysctl_tree); in devclass_get_sysctl_tree()
1591 devclass_alloc_unit(devclass_t dc, device_t dev, int *unitp) in devclass_alloc_unit() argument
1596 PDEBUG(("unit %d in devclass %s", unit, DEVCLANAME(dc))); in devclass_alloc_unit()
1600 BUS_HINT_DEVICE_UNIT(device_get_parent(dev), dev, dc->name, in devclass_alloc_unit()
1606 if (unit >= 0 && unit < dc->maxunit && in devclass_alloc_unit()
1607 dc->devices[unit] != NULL) { in devclass_alloc_unit()
1610 dc->name, dc->name, *unitp); in devclass_alloc_unit()
1618 if (resource_string_value(dc->name, unit, "at", &s) == in devclass_alloc_unit()
1623 if (unit < dc->maxunit && dc->devices[unit] != NULL) in devclass_alloc_unit()
1635 if (unit >= dc->maxunit) { in devclass_alloc_unit()
1639 oldlist = dc->devices; in devclass_alloc_unit()
1645 bcopy(oldlist, newlist, sizeof(device_t) * dc->maxunit); in devclass_alloc_unit()
1646 bzero(newlist + dc->maxunit, in devclass_alloc_unit()
1647 sizeof(device_t) * (newsize - dc->maxunit)); in devclass_alloc_unit()
1648 dc->devices = newlist; in devclass_alloc_unit()
1649 dc->maxunit = newsize; in devclass_alloc_unit()
1653 PDEBUG(("now: unit %d in devclass %s", unit, DEVCLANAME(dc))); in devclass_alloc_unit()
1676 devclass_add_device(devclass_t dc, device_t dev) in devclass_add_device() argument
1680 PDEBUG(("%s in devclass %s", DEVICENAME(dev), DEVCLANAME(dc))); in devclass_add_device()
1682 buflen = snprintf(NULL, 0, "%s%d$", dc->name, INT_MAX); in devclass_add_device()
1689 if ((error = devclass_alloc_unit(dc, dev, &dev->unit)) != 0) { in devclass_add_device()
1694 dc->devices[dev->unit] = dev; in devclass_add_device()
1695 dev->devclass = dc; in devclass_add_device()
1696 snprintf(dev->nameunit, buflen, "%s%d", dc->name, dev->unit); in devclass_add_device()
1714 devclass_delete_device(devclass_t dc, device_t dev) in devclass_delete_device() argument
1716 if (!dc || !dev) in devclass_delete_device()
1719 PDEBUG(("%s in devclass %s", DEVICENAME(dev), DEVCLANAME(dc))); in devclass_delete_device()
1721 if (dev->devclass != dc || dc->devices[dev->unit] != dev) in devclass_delete_device()
1723 dc->devices[dev->unit] = NULL; in devclass_delete_device()
1749 devclass_t dc; in make_device() local
1754 dc = devclass_find_internal(name, NULL, TRUE); in make_device()
1755 if (!dc) { in make_device()
1761 dc = NULL; in make_device()
1784 if (devclass_add_device(dc, dev)) { in make_device()
1990 devclass_t dc; in device_find_child() local
1993 dc = devclass_find(classname); in device_find_child()
1994 if (!dc) in device_find_child()
1998 child = devclass_get_device(dc, unit); in device_find_child()
2002 for (unit = 0; unit < devclass_get_maxunit(dc); unit++) { in device_find_child()
2003 child = devclass_get_device(dc, unit); in device_find_child()
2015 first_matching_driver(devclass_t dc, device_t dev) in first_matching_driver() argument
2018 return (devclass_find_driver_internal(dc, dev->devclass->name)); in first_matching_driver()
2019 return (TAILQ_FIRST(&dc->drivers)); in first_matching_driver()
2026 next_matching_driver(devclass_t dc, device_t dev, driverlink_t last) in next_matching_driver() argument
2044 devclass_t dc; in device_probe_child() local
2052 dc = dev->devclass; in device_probe_child()
2053 if (!dc) in device_probe_child()
2063 for (; dc; dc = dc->parent) { in device_probe_child()
2064 for (dl = first_matching_driver(dc, child); in device_probe_child()
2066 dl = next_matching_driver(dc, child, dl)) { in device_probe_child()
2663 devclass_t dc; in device_set_devclass() local
2677 dc = devclass_find_internal(classname, NULL, TRUE); in device_set_devclass()
2678 if (!dc) in device_set_devclass()
2681 error = devclass_add_device(dc, dev); in device_set_devclass()
2998 devclass_t dc; in device_set_unit() local
3001 dc = device_get_devclass(dev); in device_set_unit()
3002 if (unit < dc->maxunit && dc->devices[unit]) in device_set_unit()
3004 err = devclass_delete_device(dc, dev); in device_set_unit()
3008 err = devclass_add_device(dc, dev); in device_set_unit()
3587 devclass_t dc = dev->devclass; in bus_generic_probe() local
3590 TAILQ_FOREACH(dl, &dc->drivers, link) { in bus_generic_probe()
3895 devclass_t dc; in bus_generic_new_pass() local
3898 dc = dev->devclass; in bus_generic_new_pass()
3899 TAILQ_FOREACH(dl, &dc->drivers, link) { in bus_generic_new_pass()
4957 print_devclass_short(devclass_t dc, int indent) in print_devclass_short() argument
4959 if ( !dc ) in print_devclass_short()
4962 indentprintf(("devclass %s: max units = %d\n", dc->name, dc->maxunit)); in print_devclass_short()
4966 print_devclass(devclass_t dc, int indent) in print_devclass() argument
4970 if ( !dc ) in print_devclass()
4973 print_devclass_short(dc, indent); in print_devclass()
4975 print_driver_list(dc->drivers, indent+1); in print_devclass()
4978 for (i = 0; i < dc->maxunit; i++) in print_devclass()
4979 if (dc->devices[i]) in print_devclass()
4980 print_device(dc->devices[i], indent+1); in print_devclass()
4986 devclass_t dc; in print_devclass_list_short() local
4989 TAILQ_FOREACH(dc, &devclasses, link) { in print_devclass_list_short()
4990 print_devclass_short(dc, 0); in print_devclass_list_short()
4997 devclass_t dc; in print_devclass_list() local
5000 TAILQ_FOREACH(dc, &devclasses, link) { in print_devclass_list()
5001 print_devclass(dc, 0); in print_devclass_list()
5151 devclass_t dc; in driver_exists() local
5153 for (dc = bus->devclass; dc != NULL; dc = dc->parent) { in driver_exists()
5154 if (devclass_find_driver_internal(dc, driver) != NULL) in driver_exists()
5285 devclass_t dc; in devctl2_ioctl() local
5312 dc = devclass_create(driver); in devctl2_ioctl()
5313 if (dc == NULL) { in devctl2_ioctl()
5335 error = devclass_add_device(dc, dev); in devctl2_ioctl()