| 257 | }; |
| 258 | |
| 259 | static int |
| 260 | device_sysctl_handler(SYSCTL_HANDLER_ARGS) |
| 261 | { |
| 262 | struct sbuf sb; |
| 263 | device_t dev = (device_t)arg1; |
| 264 | int error; |
| 265 | |
| 266 | sbuf_new_for_sysctl(&sb, NULL, 1024, req); |
| 267 | sbuf_clear_flags(&sb, SBUF_INCLUDENUL); |
| 268 | switch (arg2) { |
| 269 | case DEVICE_SYSCTL_DESC: |
| 270 | sbuf_cat(&sb, dev->desc ? dev->desc : ""); |
| 271 | break; |
| 272 | case DEVICE_SYSCTL_DRIVER: |
| 273 | sbuf_cat(&sb, dev->driver ? dev->driver->name : ""); |
| 274 | break; |
| 275 | case DEVICE_SYSCTL_LOCATION: |
| 276 | bus_child_location_sb(dev, &sb); |
| 277 | break; |
| 278 | case DEVICE_SYSCTL_PNPINFO: |
| 279 | bus_child_pnpinfo_sb(dev, &sb); |
| 280 | break; |
| 281 | case DEVICE_SYSCTL_PARENT: |
| 282 | sbuf_cat(&sb, dev->parent ? dev->parent->nameunit : ""); |
| 283 | break; |
| 284 | default: |
| 285 | sbuf_delete(&sb); |
| 286 | return (EINVAL); |
| 287 | } |
| 288 | error = sbuf_finish(&sb); |
| 289 | sbuf_delete(&sb); |
| 290 | return (error); |
| 291 | } |
| 292 | |
| 293 | static void |
| 294 | device_sysctl_init(device_t dev) |
nothing calls this directly
no test coverage detected