Lines Matching refs:dc

171 static void print_devclass_short(devclass_t dc, int indent);
172 static void print_devclass(devclass_t dc, int indent);
207 devclass_t dc = (devclass_t)arg1;
212 value = dc->parent ? dc->parent->name : "";
221 devclass_sysctl_init(devclass_t dc)
224 if (dc->sysctl_tree != NULL)
226 sysctl_ctx_init(&dc->sysctl_ctx);
227 dc->sysctl_tree = SYSCTL_ADD_NODE(&dc->sysctl_ctx,
228 SYSCTL_STATIC_CHILDREN(_dev), OID_AUTO, dc->name,
230 SYSCTL_ADD_PROC(&dc->sysctl_ctx, SYSCTL_CHILDREN(dc->sysctl_tree),
232 dc, DEVCLASS_SYSCTL_PARENT, devclass_sysctl_handler, "A",
283 devclass_t dc = dev->devclass;
287 devclass_sysctl_init(dc);
290 SYSCTL_CHILDREN(dc->sysctl_tree), OID_AUTO,
291 dev->nameunit + strlen(dc->name),
318 devclass_t dc = dev->devclass;
322 sysctl_rename_oid(dev->sysctl_tree, dev->nameunit + strlen(dc->name));
914 devclass_t dc;
920 TAILQ_FOREACH(dc, &devclasses, link) {
921 if (!strcmp(dc->name, classname))
925 if (create && !dc) {
927 dc = malloc(sizeof(struct devclass) + strlen(classname) + 1,
929 if (!dc)
931 dc->parent = NULL;
932 dc->name = (char*) (dc + 1);
933 strcpy(dc->name, classname);
934 TAILQ_INIT(&dc->drivers);
935 TAILQ_INSERT_TAIL(&devclasses, dc, link);
948 if (parentname && dc && !dc->parent &&
950 dc->parent = devclass_find_internal(parentname, NULL, TRUE);
951 dc->parent->flags |= DC_HAS_CHILDREN;
954 return (dc);
990 * notification of all the children classes of dc, as well as dc.
999 * @param dc the devclass to edit
1003 devclass_driver_added(devclass_t dc, driver_t *driver)
1011 for (i = 0; i < dc->maxunit; i++)
1012 if (dc->devices[i] && device_is_attached(dc->devices[i]))
1013 BUS_DRIVER_ADDED(dc->devices[i], driver);
1023 if (!(dc->flags & DC_HAS_CHILDREN))
1025 parent = dc;
1026 TAILQ_FOREACH(dc, &devclasses, link) {
1027 if (dc->parent == parent)
1028 devclass_driver_added(dc, driver);
1040 * @param dc the devclass to edit
1044 devclass_add_driver(devclass_t dc, driver_t *driver, int pass, devclass_t *dcp)
1081 TAILQ_INSERT_TAIL(&dc->drivers, dl, link);
1086 devclass_driver_added(dc, driver);
1107 * @param dc the devclass of the driver being deleted
1111 devclass_driver_deleted(devclass_t busclass, devclass_t dc, driver_t *driver)
1127 for (i = 0; i < dc->maxunit; i++) {
1128 if (dc->devices[i]) {
1129 dev = dc->devices[i];
1154 error = devclass_driver_deleted(busclass, dc, driver);
1173 * @param dc the devclass to edit
1179 devclass_t dc = devclass_find(driver->name);
1185 if (!dc)
1202 error = devclass_driver_deleted(busclass, dc, driver);
1228 * @param dc the devclass to edit
1234 devclass_t dc = devclass_find(driver->name);
1242 if (!dc)
1269 for (i = 0; i < dc->maxunit; i++) {
1270 if (dc->devices[i]) {
1271 dev = dc->devices[i];
1287 devclass_find_driver_internal(devclass_t dc, const char *classname)
1291 PDEBUG(("%s in devclass %s", classname, DEVCLANAME(dc)));
1293 TAILQ_FOREACH(dl, &dc->drivers, link) {
1306 devclass_get_name(devclass_t dc)
1308 return (dc->name);
1314 * @param dc the devclass to search
1321 devclass_get_device(devclass_t dc, int unit)
1323 if (dc == NULL || unit < 0 || unit >= dc->maxunit)
1325 return (dc->devices[unit]);
1331 * @param dc the devclass to search
1339 devclass_get_softc(devclass_t dc, int unit)
1343 dev = devclass_get_device(dc, unit);
1358 * @param dc the devclass to examine
1367 devclass_get_devices(devclass_t dc, device_t **devlistp, int *devcountp)
1372 count = devclass_get_count(dc);
1378 for (i = 0; i < dc->maxunit; i++) {
1379 if (dc->devices[i]) {
1380 list[count] = dc->devices[i];
1399 * @param dc the devclass to examine
1408 devclass_get_drivers(devclass_t dc, driver_t ***listp, int *countp)
1415 TAILQ_FOREACH(dl, &dc->drivers, link)
1422 TAILQ_FOREACH(dl, &dc->drivers, link) {
1435 * @param dc the devclass to examine
1438 devclass_get_count(devclass_t dc)
1443 for (i = 0; i < dc->maxunit; i++)
1444 if (dc->devices[i])
1456 * @param dc the devclass to examine
1459 devclass_get_maxunit(devclass_t dc)
1461 if (dc == NULL)
1463 return (dc->maxunit);
1472 * @param dc the devclass to examine
1476 devclass_find_free_unit(devclass_t dc, int unit)
1478 if (dc == NULL)
1480 while (unit < dc->maxunit && dc->devices[unit] != NULL)
1491 * @param dc the devclass to edit
1495 devclass_set_parent(devclass_t dc, devclass_t pdc)
1497 dc->parent = pdc;
1503 * @param dc the devclass to examine
1506 devclass_get_parent(devclass_t dc)
1508 return (dc->parent);
1512 devclass_get_sysctl_ctx(devclass_t dc)
1514 return (&dc->sysctl_ctx);
1518 devclass_get_sysctl_tree(devclass_t dc)
1520 return (dc->sysctl_tree);
1530 * @param dc the devclass to allocate from
1539 devclass_alloc_unit(devclass_t dc, device_t dev, int *unitp)
1544 PDEBUG(("unit %d in devclass %s", unit, DEVCLANAME(dc)));
1548 BUS_HINT_DEVICE_UNIT(device_get_parent(dev), dev, dc->name,
1554 if (unit >= 0 && unit < dc->maxunit &&
1555 dc->devices[unit] != NULL) {
1558 dc->name, dc->name, *unitp);
1566 if (resource_string_value(dc->name, unit, "at", &s) ==
1571 if (unit < dc->maxunit && dc->devices[unit] != NULL)
1583 if (unit >= dc->maxunit) {
1587 oldlist = dc->devices;
1593 bcopy(oldlist, newlist, sizeof(device_t) * dc->maxunit);
1594 bzero(newlist + dc->maxunit,
1595 sizeof(device_t) * (newsize - dc->maxunit));
1596 dc->devices = newlist;
1597 dc->maxunit = newsize;
1601 PDEBUG(("now: unit %d in devclass %s", unit, DEVCLANAME(dc)));
1616 * @param dc the devclass to add to
1624 devclass_add_device(devclass_t dc, device_t dev)
1628 PDEBUG(("%s in devclass %s", DEVICENAME(dev), DEVCLANAME(dc)));
1630 buflen = snprintf(NULL, 0, "%s%d$", dc->name, INT_MAX);
1637 if ((error = devclass_alloc_unit(dc, dev, &dev->unit)) != 0) {
1642 dc->devices[dev->unit] = dev;
1643 dev->devclass = dc;
1644 snprintf(dev->nameunit, buflen, "%s%d", dc->name, dev->unit);
1656 * @param dc the devclass to delete from
1662 devclass_delete_device(devclass_t dc, device_t dev)
1664 if (!dc || !dev)
1667 PDEBUG(("%s in devclass %s", DEVICENAME(dev), DEVCLANAME(dc)));
1669 if (dev->devclass != dc || dc->devices[dev->unit] != dev)
1671 dc->devices[dev->unit] = NULL;
1697 devclass_t dc;
1702 dc = devclass_find_internal(name, NULL, TRUE);
1703 if (!dc) {
1709 dc = NULL;
1732 if (devclass_add_device(dc, dev)) {
1936 devclass_t dc;
1939 dc = devclass_find(classname);
1940 if (!dc)
1944 child = devclass_get_device(dc, unit);
1948 for (unit = 0; unit < devclass_get_maxunit(dc); unit++) {
1949 child = devclass_get_device(dc, unit);
1961 first_matching_driver(devclass_t dc, device_t dev)
1964 return (devclass_find_driver_internal(dc, dev->devclass->name));
1965 return (TAILQ_FIRST(&dc->drivers));
1972 next_matching_driver(devclass_t dc, device_t dev, driverlink_t last)
1990 devclass_t dc;
1998 dc = dev->devclass;
1999 if (!dc)
2009 for (; dc; dc = dc->parent) {
2010 for (dl = first_matching_driver(dc, child);
2012 dl = next_matching_driver(dc, child, dl)) {
2592 devclass_t dc;
2606 dc = devclass_find_internal(classname, NULL, TRUE);
2607 if (!dc)
2610 error = devclass_add_device(dc, dev);
2893 devclass_t dc;
2896 dc = device_get_devclass(dev);
2897 if (unit < dc->maxunit && dc->devices[unit])
2899 err = devclass_delete_device(dc, dev);
2903 err = devclass_add_device(dc, dev);
3437 devclass_t dc = dev->devclass;
3440 TAILQ_FOREACH(dl, &dc->drivers, link) {
3692 devclass_t dc;
3695 dc = dev->devclass;
3696 TAILQ_FOREACH(dl, &dc->drivers, link) {
4683 print_devclass_short(devclass_t dc, int indent)
4685 if ( !dc )
4688 indentprintf(("devclass %s: max units = %d\n", dc->name, dc->maxunit));
4692 print_devclass(devclass_t dc, int indent)
4696 if ( !dc )
4699 print_devclass_short(dc, indent);
4701 print_driver_list(dc->drivers, indent+1);
4704 for (i = 0; i < dc->maxunit; i++)
4705 if (dc->devices[i])
4706 print_device(dc->devices[i], indent+1);
4712 devclass_t dc;
4715 TAILQ_FOREACH(dc, &devclasses, link) {
4716 print_devclass_short(dc, 0);
4723 devclass_t dc;
4726 TAILQ_FOREACH(dc, &devclasses, link) {
4727 print_devclass(dc, 0);