diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-10-01 11:20:43 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-10-08 14:51:21 +0200 |
commit | d43544ef125eac9c7774ea92f69121be05f6a1fe (patch) | |
tree | 6fb68db0c4770157163dca4ada071c2828ca6c8b | |
parent | Generalize linker sets (diff) | |
download | rtems-libbsd-d43544ef125eac9c7774ea92f69121be05f6a1fe.tar.bz2 |
nexus: Fix resouce allocation
-rw-r--r-- | rtemsbsd/rtems/rtems-bsd-nexus.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/rtemsbsd/rtems/rtems-bsd-nexus.c b/rtemsbsd/rtems/rtems-bsd-nexus.c index 9c398957..ce8f646b 100644 --- a/rtemsbsd/rtems/rtems-bsd-nexus.c +++ b/rtemsbsd/rtems/rtems-bsd-nexus.c @@ -132,7 +132,6 @@ static struct resource * nexus_alloc_resource(device_t bus, device_t child, int type, int *rid, u_long start, u_long end, u_long count, u_int flags) { - struct resource *rv; struct rman *rm; size_t i; @@ -152,21 +151,23 @@ nexus_alloc_resource(device_t bus, device_t child, int type, int *rid, if (strcmp(device_get_name(child), nd->name) == 0 && device_get_unit(child) == nd->unit) { - if (!nexus_get_start(nd, type, &start)) { - return (NULL); + struct resource *res = NULL; + + if (nexus_get_start(nd, type, &start)) { + res = rman_reserve_resource(rm, start, end, + count, flags, child); + if (res != NULL) { + rman_set_rid(res, *rid); + rman_set_bushandle(res, + rman_get_start(res)); + } }; - } else { - return (NULL); - } - } - rv = rman_reserve_resource(rm, start, end, count, flags, child); - if (rv != NULL) { - rman_set_rid(rv, *rid); - rman_set_bushandle(rv, rman_get_start(rv)); + return (res); + } } - return (rv); + return (NULL); } static int |