summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2006-06-12 04:06:21 +0000
committerimp <imp@FreeBSD.org>2006-06-12 04:06:21 +0000
commita157e1bbd0c955886069274aa528323af2434ed7 (patch)
treeb787b2029f45b61dc83245fb51c58663ad47973d
parent3182791d17323e2d73cc6bff321e1c6a6210a399 (diff)
downloadFreeBSD-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.c10
-rw-r--r--sys/sys/rman.h3
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);
OpenPOWER on IntegriCloud