diff options
author | Kristian Hoegsberg <krh@redhat.com> | 2007-07-15 23:37:24 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-16 09:05:34 -0700 |
commit | 23936cc0b5d89619c34c2dab11d8cf3d6f7ca028 (patch) | |
tree | 506ec36cc37d3bc7dbf0ca68d1b271f9247fa458 /include/linux/idr.h | |
parent | 96d7fa421e6424ad9ef6d1d039375dc2edb63fe8 (diff) | |
download | linux-23936cc0b5d89619c34c2dab11d8cf3d6f7ca028.tar.gz linux-23936cc0b5d89619c34c2dab11d8cf3d6f7ca028.tar.bz2 linux-23936cc0b5d89619c34c2dab11d8cf3d6f7ca028.zip |
lib: add idr_remove_all
Remove all ids from the given idr tree. idr_destroy() only frees up
unused, cached idp_layers, but this function will remove all id mappings
and leave all idp_layers unused.
A typical clean-up sequence for objects stored in an idr tree, will use
idr_for_each() to free all objects, if necessay, then idr_remove_all() to
remove all ids, and idr_destroy() to free up the cached idr_layers.
Signed-off-by: Kristian Hoegsberg <krh@redhat.com>
Cc: Tejun Heo <htejun@gmail.com>
Cc: Dave Airlie <airlied@linux.ie>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/idr.h')
-rw-r--r-- | include/linux/idr.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/idr.h b/include/linux/idr.h index 8442c0bffc06..0edda411959c 100644 --- a/include/linux/idr.h +++ b/include/linux/idr.h @@ -82,6 +82,7 @@ int idr_for_each(struct idr *idp, int (*fn)(int id, void *p, void *data), void *data); void *idr_replace(struct idr *idp, void *ptr, int id); void idr_remove(struct idr *idp, int id); +void idr_remove_all(struct idr *idp); void idr_destroy(struct idr *idp); void idr_init(struct idr *idp); |