diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/resource.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/kernel/resource.c b/kernel/resource.c index 3ff40178dce7..3b3cedc52592 100644 --- a/kernel/resource.c +++ b/kernel/resource.c | |||
| @@ -553,6 +553,27 @@ int allocate_resource(struct resource *root, struct resource *new, | |||
| 553 | 553 | ||
| 554 | EXPORT_SYMBOL(allocate_resource); | 554 | EXPORT_SYMBOL(allocate_resource); |
| 555 | 555 | ||
| 556 | /** | ||
| 557 | * lookup_resource - find an existing resource by a resource start address | ||
| 558 | * @root: root resource descriptor | ||
| 559 | * @start: resource start address | ||
| 560 | * | ||
| 561 | * Returns a pointer to the resource if found, NULL otherwise | ||
| 562 | */ | ||
| 563 | struct resource *lookup_resource(struct resource *root, resource_size_t start) | ||
| 564 | { | ||
| 565 | struct resource *res; | ||
| 566 | |||
| 567 | read_lock(&resource_lock); | ||
| 568 | for (res = root->child; res; res = res->sibling) { | ||
| 569 | if (res->start == start) | ||
| 570 | break; | ||
| 571 | } | ||
| 572 | read_unlock(&resource_lock); | ||
| 573 | |||
| 574 | return res; | ||
| 575 | } | ||
| 576 | |||
| 556 | /* | 577 | /* |
| 557 | * Insert a resource into the resource tree. If successful, return NULL, | 578 | * Insert a resource into the resource tree. If successful, return NULL, |
| 558 | * otherwise return the conflicting resource (compare to __request_resource()) | 579 | * otherwise return the conflicting resource (compare to __request_resource()) |
