| 291 | } |
| 292 | |
| 293 | static void |
| 294 | device_sysctl_init(device_t dev) |
| 295 | { |
| 296 | devclass_t dc = dev->devclass; |
| 297 | int domain; |
| 298 | |
| 299 | if (dev->sysctl_tree != NULL) |
| 300 | return; |
| 301 | devclass_sysctl_init(dc); |
| 302 | sysctl_ctx_init(&dev->sysctl_ctx); |
| 303 | dev->sysctl_tree = SYSCTL_ADD_NODE_WITH_LABEL(&dev->sysctl_ctx, |
| 304 | SYSCTL_CHILDREN(dc->sysctl_tree), OID_AUTO, |
| 305 | dev->nameunit + strlen(dc->name), |
| 306 | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "", "device_index"); |
| 307 | SYSCTL_ADD_PROC(&dev->sysctl_ctx, SYSCTL_CHILDREN(dev->sysctl_tree), |
| 308 | OID_AUTO, "%desc", CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, |
| 309 | dev, DEVICE_SYSCTL_DESC, device_sysctl_handler, "A", |
| 310 | "device description"); |
| 311 | SYSCTL_ADD_PROC(&dev->sysctl_ctx, SYSCTL_CHILDREN(dev->sysctl_tree), |
| 312 | OID_AUTO, "%driver", |
| 313 | CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, |
| 314 | dev, DEVICE_SYSCTL_DRIVER, device_sysctl_handler, "A", |
| 315 | "device driver name"); |
| 316 | SYSCTL_ADD_PROC(&dev->sysctl_ctx, SYSCTL_CHILDREN(dev->sysctl_tree), |
| 317 | OID_AUTO, "%location", |
| 318 | CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, |
| 319 | dev, DEVICE_SYSCTL_LOCATION, device_sysctl_handler, "A", |
| 320 | "device location relative to parent"); |
| 321 | SYSCTL_ADD_PROC(&dev->sysctl_ctx, SYSCTL_CHILDREN(dev->sysctl_tree), |
| 322 | OID_AUTO, "%pnpinfo", |
| 323 | CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, |
| 324 | dev, DEVICE_SYSCTL_PNPINFO, device_sysctl_handler, "A", |
| 325 | "device identification"); |
| 326 | SYSCTL_ADD_PROC(&dev->sysctl_ctx, SYSCTL_CHILDREN(dev->sysctl_tree), |
| 327 | OID_AUTO, "%parent", |
| 328 | CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, |
| 329 | dev, DEVICE_SYSCTL_PARENT, device_sysctl_handler, "A", |
| 330 | "parent device"); |
| 331 | if (bus_get_domain(dev, &domain) == 0) |
| 332 | SYSCTL_ADD_INT(&dev->sysctl_ctx, |
| 333 | SYSCTL_CHILDREN(dev->sysctl_tree), OID_AUTO, "%domain", |
| 334 | CTLFLAG_RD, NULL, domain, "NUMA domain"); |
| 335 | } |
| 336 | |
| 337 | static void |
| 338 | device_sysctl_update(device_t dev) |
no test coverage detected