diff options
author | imp <imp@FreeBSD.org> | 2006-06-12 04:06:21 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2006-06-12 04:06:21 +0000 |
commit | a157e1bbd0c955886069274aa528323af2434ed7 (patch) | |
tree | b787b2029f45b61dc83245fb51c58663ad47973d | |
parent | 3182791d17323e2d73cc6bff321e1c6a6210a399 (diff) | |
download | FreeBSD-src-a157e1bbd0c955886069274aa528323af2434ed7.zip FreeBSD-src-a157e1bbd0c955886069274aa528323af2434ed7.tar.gz |
Add a convenience function rman_init_from_resource for initializing
a rman from a resource.
Also, include _bus.h since the implementation of bus_space isn't
needed here, just the definitions of the types.
-rw-r--r-- | sys/kern/subr_rman.c | 10 | ||||
-rw-r--r-- | sys/sys/rman.h | 3 |
2 files changed, 12 insertions, 1 deletions
diff --git a/sys/kern/subr_rman.c b/sys/kern/subr_rman.c index f5bfd5b..ce6592e 100644 --- a/sys/kern/subr_rman.c +++ b/sys/kern/subr_rman.c @@ -183,6 +183,16 @@ rman_manage_region(struct rman *rm, u_long start, u_long end) } int +rman_init_from_resource(struct rman *rm, struct resource *r) +{ + int rv; + + if ((rv = rman_init(rm)) != 0) + return (rv); + return (rman_manage_region(rm, r->__r_i->r_start, r->__r_i->r_end)); +} + +int rman_fini(struct rman *rm) { struct resource_i *r; diff --git a/sys/sys/rman.h b/sys/sys/rman.h index e783170..ba06cc0 100644 --- a/sys/sys/rman.h +++ b/sys/sys/rman.h @@ -35,7 +35,7 @@ #ifndef _KERNEL #include <sys/queue.h> #else -#include <machine/bus.h> +#include <machine/_bus.h> #include <machine/resource.h> #endif @@ -129,6 +129,7 @@ void *rman_get_virtual(struct resource *); int rman_deactivate_resource(struct resource *r); int rman_fini(struct rman *rm); int rman_init(struct rman *rm); +int rman_init_from_resource(struct rman *rm, struct resource *r); uint32_t rman_make_alignment_flags(uint32_t size); int rman_manage_region(struct rman *rm, u_long start, u_long end); int rman_is_region_manager(struct resource *r, struct rman *rm); |