summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/sys/bus.h
diff options
context:
space:
mode:
Diffstat (limited to 'freebsd/sys/sys/bus.h')
-rw-r--r--freebsd/sys/sys/bus.h30
1 files changed, 26 insertions, 4 deletions
diff --git a/freebsd/sys/sys/bus.h b/freebsd/sys/sys/bus.h
index 6c1128e3..7259981e 100644
--- a/freebsd/sys/sys/bus.h
+++ b/freebsd/sys/sys/bus.h
@@ -52,6 +52,7 @@ struct u_businfo {
typedef enum device_state {
DS_NOTPRESENT = 10, /**< @brief not probed or probe failed */
DS_ALIVE = 20, /**< @brief probe succeeded */
+ DS_ATTACHING = 25, /**< @brief currently attaching */
DS_ATTACHED = 30, /**< @brief attach method called */
DS_BUSY = 40 /**< @brief device is open */
} device_state_t;
@@ -194,7 +195,11 @@ enum intr_type {
INTR_FAST = 128,
INTR_EXCL = 256, /* exclusive interrupt */
INTR_MPSAFE = 512, /* this interrupt is SMP safe */
- INTR_ENTROPY = 1024 /* this interrupt provides entropy */
+ INTR_ENTROPY = 1024, /* this interrupt provides entropy */
+ INTR_MD1 = 4096, /* flag reserved for MD use */
+ INTR_MD2 = 8192, /* flag reserved for MD use */
+ INTR_MD3 = 16384, /* flag reserved for MD use */
+ INTR_MD4 = 32768 /* flag reserved for MD use */
};
enum intr_trigger {
@@ -285,6 +290,9 @@ int bus_generic_activate_resource(device_t dev, device_t child, int type,
device_t
bus_generic_add_child(device_t dev, u_int order, const char *name,
int unit);
+int bus_generic_adjust_resource(device_t bus, device_t child, int type,
+ struct resource *r, u_long start,
+ u_long end);
struct resource *
bus_generic_alloc_resource(device_t bus, device_t child, int type,
int *rid, u_long start, u_long end,
@@ -353,6 +361,8 @@ struct resource_spec {
int bus_alloc_resources(device_t dev, struct resource_spec *rs, struct resource **res);
void bus_release_resources(device_t dev, const struct resource_spec *rs, struct resource **res);
+int bus_adjust_resource(device_t child, int type, struct resource *r,
+ u_long start, u_long end);
struct resource *bus_alloc_resource(device_t dev, int type, int *rid,
u_long start, u_long end, u_long count,
u_int flags);
@@ -397,6 +407,7 @@ device_t device_add_child_ordered(device_t dev, u_int order,
const char *name, int unit);
void device_busy(device_t dev);
int device_delete_child(device_t dev, device_t child);
+int device_delete_children(device_t dev);
int device_attach(device_t dev);
int device_detach(device_t dev);
void device_disable(device_t dev);
@@ -540,9 +551,10 @@ extern int bus_current_pass;
void bus_set_pass(int pass);
/**
- * Shorthand for constructing method tables.
+ * Shorthands for constructing method tables.
*/
#define DEVMETHOD KOBJMETHOD
+#define DEVMETHOD_END KOBJMETHOD_END
/*
* Some common device interfaces.
@@ -566,7 +578,8 @@ struct driver_module_data {
int dmd_pass;
};
-#define EARLY_DRIVER_MODULE(name, busname, driver, devclass, evh, arg, pass) \
+#define EARLY_DRIVER_MODULE_ORDERED(name, busname, driver, devclass, \
+ evh, arg, order, pass) \
\
static struct driver_module_data name##_##busname##_driver_mod = { \
evh, arg, \
@@ -582,7 +595,16 @@ static moduledata_t name##_##busname##_mod = { \
&name##_##busname##_driver_mod \
}; \
DECLARE_MODULE(name##_##busname, name##_##busname##_mod, \
- SI_SUB_DRIVERS, SI_ORDER_MIDDLE)
+ SI_SUB_DRIVERS, order)
+
+#define EARLY_DRIVER_MODULE(name, busname, driver, devclass, evh, arg, pass) \
+ EARLY_DRIVER_MODULE_ORDERED(name, busname, driver, devclass, \
+ evh, arg, SI_ORDER_MIDDLE, pass)
+
+#define DRIVER_MODULE_ORDERED(name, busname, driver, devclass, evh, arg,\
+ order) \
+ EARLY_DRIVER_MODULE_ORDERED(name, busname, driver, devclass, \
+ evh, arg, order, BUS_PASS_DEFAULT)
#define DRIVER_MODULE(name, busname, driver, devclass, evh, arg) \
EARLY_DRIVER_MODULE(name, busname, driver, devclass, evh, arg, \