summaryrefslogtreecommitdiffstats
path: root/sys/kern/subr_bus.c
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2002-07-21 03:28:43 +0000
committerimp <imp@FreeBSD.org>2002-07-21 03:28:43 +0000
commit30ec4e72722c97aebb1484546143c06ce494b330 (patch)
treee901a3d2cd9d0f23ff50c0caafc7d8f4c7b106ce /sys/kern/subr_bus.c
parent4a190d70152293c089b8a53c82687bd958d61e6f (diff)
downloadFreeBSD-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.c26
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 }
};
OpenPOWER on IntegriCloud