X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fidr.c;fp=lib%2Fidr.c;h=595c76bcb8dd705ead8862fbf235b4af215adb6d;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=16d2143fea4847e5c367e56d87db654599109713;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/lib/idr.c b/lib/idr.c index 16d2143fe..595c76bcb 100644 --- a/lib/idr.c +++ b/lib/idr.c @@ -29,7 +29,6 @@ #include #include #endif -#include #include #include @@ -403,48 +402,6 @@ void *idr_find(struct idr *idp, int id) } EXPORT_SYMBOL(idr_find); -/** - * idr_replace - replace pointer for given id - * @idp: idr handle - * @ptr: pointer you want associated with the id - * @id: lookup key - * - * Replace the pointer registered with an id and return the old value. - * A -ENOENT return indicates that @id was not found. - * A -EINVAL return indicates that @id was not within valid constraints. - * - * The caller must serialize vs idr_find(), idr_get_new(), and idr_remove(). - */ -void *idr_replace(struct idr *idp, void *ptr, int id) -{ - int n; - struct idr_layer *p, *old_p; - - n = idp->layers * IDR_BITS; - p = idp->top; - - id &= MAX_ID_MASK; - - if (id >= (1 << n)) - return ERR_PTR(-EINVAL); - - n -= IDR_BITS; - while ((n > 0) && p) { - p = p->ary[(id >> n) & IDR_MASK]; - n -= IDR_BITS; - } - - n = id & IDR_MASK; - if (unlikely(p == NULL || !test_bit(n, &p->bitmap))) - return ERR_PTR(-ENOENT); - - old_p = p->ary[n]; - p->ary[n] = ptr; - - return old_p; -} -EXPORT_SYMBOL(idr_replace); - static void idr_cache_ctor(void * idr_layer, kmem_cache_t *idr_layer_cache, unsigned long flags) {