diff options
author | imp <imp@FreeBSD.org> | 2002-07-21 03:28:43 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2002-07-21 03:28:43 +0000 |
commit | 30ec4e72722c97aebb1484546143c06ce494b330 (patch) | |
tree | e901a3d2cd9d0f23ff50c0caafc7d8f4c7b106ce /sys/kern/subr_bus.c | |
parent | 4a190d70152293c089b8a53c82687bd958d61e6f (diff) | |
download | FreeBSD-src-30ec4e72722c97aebb1484546143c06ce494b330.zip FreeBSD-src-30ec4e72722c97aebb1484546143c06ce494b330.tar.gz |
Add bus_child_present and the child_present method to bus_if.m
Diffstat (limited to 'sys/kern/subr_bus.c')
-rw-r--r-- | sys/kern/subr_bus.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/sys/kern/subr_bus.c b/sys/kern/subr_bus.c index 7281051..7e7df14 100644 --- a/sys/kern/subr_bus.c +++ b/sys/kern/subr_bus.c @@ -1594,6 +1594,12 @@ bus_generic_rl_alloc_resource (device_t dev, device_t child, int type, start, end, count, flags)); } +int +bus_generic_child_present(device_t bus, device_t child) +{ + return (BUS_CHILD_PRESENT(device_get_parent(bus), bus)); +} + /* * Some convenience functions to make it easier for drivers to use the * resource-management functions. All these really do is hide the @@ -1701,6 +1707,12 @@ bus_delete_resource(device_t dev, int type, int rid) BUS_DELETE_RESOURCE(device_get_parent(dev), dev, type, rid); } +int +bus_child_present(device_t dev) +{ + return (BUS_CHILD_PRESENT(device_get_parent(dev), dev)); +} + static int root_print_child(device_t dev, device_t child) { @@ -1722,6 +1734,19 @@ root_setup_intr(device_t dev, device_t child, driver_intr_t *intr, void *arg, panic("root_setup_intr"); } +/* + * If we get here, assume that the device is permanant and really is + * present in the system. Removable bus drivers are expected to intercept + * this call long before it gets here. We return -1 so that drivers that + * really care can check vs -1 or some ERRNO returned higher in the food + * chain. + */ +static int +root_child_present(device_t dev, device_t child) +{ + return (-1); +} + static kobj_method_t root_methods[] = { /* Device interface */ KOBJMETHOD(device_shutdown, bus_generic_shutdown), @@ -1733,6 +1758,7 @@ static kobj_method_t root_methods[] = { KOBJMETHOD(bus_read_ivar, bus_generic_read_ivar), KOBJMETHOD(bus_write_ivar, bus_generic_write_ivar), KOBJMETHOD(bus_setup_intr, root_setup_intr), + KOBJMETHOD(bus_child_present, root_child_present), { 0, 0 } }; |