diff options
-rw-r--r-- | include/linux/idr.h | 14 | ||||
-rw-r--r-- | lib/idr.c | 10 |
2 files changed, 16 insertions, 8 deletions
diff --git a/include/linux/idr.h b/include/linux/idr.h index e5eb125effe6..4cf042da3892 100644 --- a/include/linux/idr.h +++ b/include/linux/idr.h | |||
@@ -110,10 +110,22 @@ int idr_for_each(struct idr *idp, | |||
110 | void *idr_get_next(struct idr *idp, int *nextid); | 110 | void *idr_get_next(struct idr *idp, int *nextid); |
111 | void *idr_replace(struct idr *idp, void *ptr, int id); | 111 | void *idr_replace(struct idr *idp, void *ptr, int id); |
112 | void idr_remove(struct idr *idp, int id); | 112 | void idr_remove(struct idr *idp, int id); |
113 | void idr_remove_all(struct idr *idp); | ||
114 | void idr_destroy(struct idr *idp); | 113 | void idr_destroy(struct idr *idp); |
115 | void idr_init(struct idr *idp); | 114 | void idr_init(struct idr *idp); |
116 | 115 | ||
116 | void __idr_remove_all(struct idr *idp); /* don't use */ | ||
117 | |||
118 | /** | ||
119 | * idr_remove_all - remove all ids from the given idr tree | ||
120 | * @idp: idr handle | ||
121 | * | ||
122 | * If you're trying to destroy @idp, calling idr_destroy() is enough. | ||
123 | * This is going away. Don't use. | ||
124 | */ | ||
125 | static inline void __deprecated idr_remove_all(struct idr *idp) | ||
126 | { | ||
127 | __idr_remove_all(idp); | ||
128 | } | ||
117 | 129 | ||
118 | /* | 130 | /* |
119 | * IDA - IDR based id allocator, use when translation from id to | 131 | * IDA - IDR based id allocator, use when translation from id to |
@@ -433,11 +433,7 @@ void idr_remove(struct idr *idp, int id) | |||
433 | } | 433 | } |
434 | EXPORT_SYMBOL(idr_remove); | 434 | EXPORT_SYMBOL(idr_remove); |
435 | 435 | ||
436 | /** | 436 | void __idr_remove_all(struct idr *idp) |
437 | * idr_remove_all - remove all ids from the given idr tree | ||
438 | * @idp: idr handle | ||
439 | */ | ||
440 | void idr_remove_all(struct idr *idp) | ||
441 | { | 437 | { |
442 | int n, id, max; | 438 | int n, id, max; |
443 | int bt_mask; | 439 | int bt_mask; |
@@ -470,7 +466,7 @@ void idr_remove_all(struct idr *idp) | |||
470 | } | 466 | } |
471 | idp->layers = 0; | 467 | idp->layers = 0; |
472 | } | 468 | } |
473 | EXPORT_SYMBOL(idr_remove_all); | 469 | EXPORT_SYMBOL(__idr_remove_all); |
474 | 470 | ||
475 | /** | 471 | /** |
476 | * idr_destroy - release all cached layers within an idr tree | 472 | * idr_destroy - release all cached layers within an idr tree |
@@ -487,7 +483,7 @@ EXPORT_SYMBOL(idr_remove_all); | |||
487 | */ | 483 | */ |
488 | void idr_destroy(struct idr *idp) | 484 | void idr_destroy(struct idr *idp) |
489 | { | 485 | { |
490 | idr_remove_all(idp); | 486 | __idr_remove_all(idp); |
491 | 487 | ||
492 | while (idp->id_free_cnt) { | 488 | while (idp->id_free_cnt) { |
493 | struct idr_layer *p = get_from_free_list(idp); | 489 | struct idr_layer *p = get_from_free_list(idp); |