Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/subr_bus.c
Show All 12 Lines | |||||
if (dc->sysctl_tree != NULL) | if (dc->sysctl_tree != NULL) | ||||
return; | return; | ||||
sysctl_ctx_init(&dc->sysctl_ctx); | sysctl_ctx_init(&dc->sysctl_ctx); | ||||
dc->sysctl_tree = SYSCTL_ADD_NODE(&dc->sysctl_ctx, | dc->sysctl_tree = SYSCTL_ADD_NODE(&dc->sysctl_ctx, | ||||
SYSCTL_STATIC_CHILDREN(_dev), OID_AUTO, dc->name, | SYSCTL_STATIC_CHILDREN(_dev), OID_AUTO, dc->name, | ||||
CTLFLAG_RD, NULL, ""); | CTLFLAG_RD, NULL, ""); | ||||
SYSCTL_ADD_PROC(&dc->sysctl_ctx, SYSCTL_CHILDREN(dc->sysctl_tree), | SYSCTL_ADD_PROC(&dc->sysctl_ctx, SYSCTL_CHILDREN(dc->sysctl_tree), | ||||
OID_AUTO, "%parent", CTLTYPE_STRING | CTLFLAG_RD, | OID_AUTO, "%parent", | ||||
CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, | |||||
dc, DEVCLASS_SYSCTL_PARENT, devclass_sysctl_handler, "A", | dc, DEVCLASS_SYSCTL_PARENT, devclass_sysctl_handler, "A", | ||||
"parent class"); | "parent class"); | ||||
} | } | ||||
enum { | enum { | ||||
DEVICE_SYSCTL_DESC, | DEVICE_SYSCTL_DESC, | ||||
DEVICE_SYSCTL_DRIVER, | DEVICE_SYSCTL_DRIVER, | ||||
DEVICE_SYSCTL_LOCATION, | DEVICE_SYSCTL_LOCATION, | ||||
Show All 24 Lines | |||||
return; | return; | ||||
devclass_sysctl_init(dc); | devclass_sysctl_init(dc); | ||||
sysctl_ctx_init(&dev->sysctl_ctx); | sysctl_ctx_init(&dev->sysctl_ctx); | ||||
dev->sysctl_tree = SYSCTL_ADD_NODE_WITH_LABEL(&dev->sysctl_ctx, | dev->sysctl_tree = SYSCTL_ADD_NODE_WITH_LABEL(&dev->sysctl_ctx, | ||||
SYSCTL_CHILDREN(dc->sysctl_tree), OID_AUTO, | SYSCTL_CHILDREN(dc->sysctl_tree), OID_AUTO, | ||||
dev->nameunit + strlen(dc->name), | dev->nameunit + strlen(dc->name), | ||||
CTLFLAG_RD, NULL, "", "device_index"); | CTLFLAG_RD, NULL, "", "device_index"); | ||||
SYSCTL_ADD_PROC(&dev->sysctl_ctx, SYSCTL_CHILDREN(dev->sysctl_tree), | SYSCTL_ADD_PROC(&dev->sysctl_ctx, SYSCTL_CHILDREN(dev->sysctl_tree), | ||||
OID_AUTO, "%desc", CTLTYPE_STRING | CTLFLAG_RD, | OID_AUTO, "%desc", | ||||
CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, | |||||
dev, DEVICE_SYSCTL_DESC, device_sysctl_handler, "A", | dev, DEVICE_SYSCTL_DESC, device_sysctl_handler, "A", | ||||
"device description"); | "device description"); | ||||
SYSCTL_ADD_PROC(&dev->sysctl_ctx, SYSCTL_CHILDREN(dev->sysctl_tree), | SYSCTL_ADD_PROC(&dev->sysctl_ctx, SYSCTL_CHILDREN(dev->sysctl_tree), | ||||
OID_AUTO, "%driver", CTLTYPE_STRING | CTLFLAG_RD, | OID_AUTO, "%driver", | ||||
CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, | |||||
dev, DEVICE_SYSCTL_DRIVER, device_sysctl_handler, "A", | dev, DEVICE_SYSCTL_DRIVER, device_sysctl_handler, "A", | ||||
"device driver name"); | "device driver name"); | ||||
SYSCTL_ADD_PROC(&dev->sysctl_ctx, SYSCTL_CHILDREN(dev->sysctl_tree), | SYSCTL_ADD_PROC(&dev->sysctl_ctx, SYSCTL_CHILDREN(dev->sysctl_tree), | ||||
OID_AUTO, "%location", CTLTYPE_STRING | CTLFLAG_RD, | OID_AUTO, "%location", | ||||
CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, | |||||
dev, DEVICE_SYSCTL_LOCATION, device_sysctl_handler, "A", | dev, DEVICE_SYSCTL_LOCATION, device_sysctl_handler, "A", | ||||
"device location relative to parent"); | "device location relative to parent"); | ||||
SYSCTL_ADD_PROC(&dev->sysctl_ctx, SYSCTL_CHILDREN(dev->sysctl_tree), | SYSCTL_ADD_PROC(&dev->sysctl_ctx, SYSCTL_CHILDREN(dev->sysctl_tree), | ||||
OID_AUTO, "%pnpinfo", CTLTYPE_STRING | CTLFLAG_RD, | OID_AUTO, "%pnpinfo", | ||||
CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, | |||||
dev, DEVICE_SYSCTL_PNPINFO, device_sysctl_handler, "A", | dev, DEVICE_SYSCTL_PNPINFO, device_sysctl_handler, "A", | ||||
"device identification"); | "device identification"); | ||||
SYSCTL_ADD_PROC(&dev->sysctl_ctx, SYSCTL_CHILDREN(dev->sysctl_tree), | SYSCTL_ADD_PROC(&dev->sysctl_ctx, SYSCTL_CHILDREN(dev->sysctl_tree), | ||||
OID_AUTO, "%parent", CTLTYPE_STRING | CTLFLAG_RD, | OID_AUTO, "%parent", | ||||
CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, | |||||
dev, DEVICE_SYSCTL_PARENT, device_sysctl_handler, "A", | dev, DEVICE_SYSCTL_PARENT, device_sysctl_handler, "A", | ||||
"parent device"); | "parent device"); | ||||
if (bus_get_domain(dev, &domain) == 0) | if (bus_get_domain(dev, &domain) == 0) | ||||
SYSCTL_ADD_INT(&dev->sysctl_ctx, | SYSCTL_ADD_INT(&dev->sysctl_ctx, | ||||
SYSCTL_CHILDREN(dev->sysctl_tree), OID_AUTO, "%domain", | SYSCTL_CHILDREN(dev->sysctl_tree), OID_AUTO, "%domain", | ||||
CTLFLAG_RD, NULL, domain, "NUMA domain"); | CTLFLAG_RD, NULL, domain, "NUMA domain"); | ||||
} | } | ||||
Show All 24 Lines | |||||
{ | { | ||||
struct u_businfo ubus; | struct u_businfo ubus; | ||||
ubus.ub_version = BUS_USER_VERSION; | ubus.ub_version = BUS_USER_VERSION; | ||||
ubus.ub_generation = bus_data_generation; | ubus.ub_generation = bus_data_generation; | ||||
return (SYSCTL_OUT(req, &ubus, sizeof(ubus))); | return (SYSCTL_OUT(req, &ubus, sizeof(ubus))); | ||||
} | } | ||||
SYSCTL_NODE(_hw_bus, OID_AUTO, info, CTLFLAG_RW, sysctl_bus, | SYSCTL_NODE(_hw_bus, OID_AUTO, info, CTLFLAG_RW | CTLFLAG_MPSAFE, sysctl_bus, | ||||
"bus-related data"); | "bus-related data"); | ||||
static int | static int | ||||
sysctl_devices(SYSCTL_HANDLER_ARGS) | sysctl_devices(SYSCTL_HANDLER_ARGS) | ||||
{ | { | ||||
int *name = (int *)arg1; | int *name = (int *)arg1; | ||||
u_int namelen = arg2; | u_int namelen = arg2; | ||||
int index; | int index; | ||||
Show All 24 Lines | |||||
*walker++ = '\0'; | *walker++ = '\0'; | ||||
} while (0); | } while (0); | ||||
#undef CP | #undef CP | ||||
error = SYSCTL_OUT(req, udev, sizeof(*udev)); | error = SYSCTL_OUT(req, udev, sizeof(*udev)); | ||||
free(udev, M_BUS); | free(udev, M_BUS); | ||||
return (error); | return (error); | ||||
} | } | ||||
SYSCTL_NODE(_hw_bus, OID_AUTO, devices, CTLFLAG_RD, sysctl_devices, | SYSCTL_NODE(_hw_bus, OID_AUTO, devices, | ||||
CTLFLAG_RD | CTLFLAG_NEEDGIANT, sysctl_devices, | |||||
"system device tree"); | "system device tree"); | ||||
int | int | ||||
bus_data_generation_check(int generation) | bus_data_generation_check(int generation) | ||||
{ | { | ||||
if (generation != bus_data_generation) | if (generation != bus_data_generation) | ||||
return (1); | return (1); | ||||
Show All 12 Lines |