diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-07-31 20:30:59 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-07-31 20:30:59 -0400 |
commit | 968e75fc13b6d582f42ce44172e13ba58157e11f (patch) | |
tree | 306eacdf2815f8a49b47228c3b50e7a6083ef7d4 /kernel | |
parent | a00ed25cce6fe856388f89c7cd40da0eee7666a6 (diff) | |
parent | d3690f8b713f9710e68214ca38fb8b07b587a2a7 (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
m68k/math-emu: Remove unnecessary code
m68k/math-emu: Remove commented out old code
m68k: Kill warning in setup_arch() when compiling for Sun3
m68k/atari: Prefix GPIO_{IN,OUT} with CODEC_
sparc: iounmap() and *_free_coherent() - Use lookup_resource()
m68k/atari: Reserve some ST-RAM early on for device buffer use
m68k/amiga: Chip RAM - Use lookup_resource()
resources: Add lookup_resource()
sparc: _sparc_find_resource() should check for exact matches
m68k/amiga: Chip RAM - Offset resource end by CHIP_PHYSADDR
m68k/amiga: Chip RAM - Use resource_size() to fix off-by-one error
m68k/amiga: Chip RAM - Change chipavail to an atomic_t
m68k/amiga: Chip RAM - Always allocate from the start of memory
m68k/amiga: Chip RAM - Convert from printk() to pr_*()
m68k/amiga: Chip RAM - Use tabs for indentation
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()) |