projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
skge: default WOL should be magic only (rev2)
[powerpc.git]
/
lib
/
idr.c
diff --git
a/lib/idr.c
b/lib/idr.c
index
4d09681
..
305117c
100644
(file)
--- a/
lib/idr.c
+++ b/
lib/idr.c
@@
-33,19
+33,20
@@
#include <linux/string.h>
#include <linux/idr.h>
#include <linux/string.h>
#include <linux/idr.h>
-static
kmem_cache_t
*idr_layer_cache;
+static
struct kmem_cache
*idr_layer_cache;
static struct idr_layer *alloc_layer(struct idr *idp)
{
struct idr_layer *p;
static struct idr_layer *alloc_layer(struct idr *idp)
{
struct idr_layer *p;
+ unsigned long flags;
- spin_lock
(&idp->lock
);
+ spin_lock
_irqsave(&idp->lock, flags
);
if ((p = idp->id_free)) {
idp->id_free = p->ary[0];
idp->id_free_cnt--;
p->ary[0] = NULL;
}
if ((p = idp->id_free)) {
idp->id_free = p->ary[0];
idp->id_free_cnt--;
p->ary[0] = NULL;
}
- spin_unlock
(&idp->lock
);
+ spin_unlock
_irqrestore(&idp->lock, flags
);
return(p);
}
return(p);
}
@@
-59,12
+60,14
@@
static void __free_layer(struct idr *idp, struct idr_layer *p)
static void free_layer(struct idr *idp, struct idr_layer *p)
{
static void free_layer(struct idr *idp, struct idr_layer *p)
{
+ unsigned long flags;
+
/*
* Depends on the return element being zeroed.
*/
/*
* Depends on the return element being zeroed.
*/
- spin_lock
(&idp->lock
);
+ spin_lock
_irqsave(&idp->lock, flags
);
__free_layer(idp, p);
__free_layer(idp, p);
- spin_unlock
(&idp->lock
);
+ spin_unlock
_irqrestore(&idp->lock, flags
);
}
/**
}
/**
@@
-168,6
+171,7
@@
static int idr_get_new_above_int(struct idr *idp, void *ptr, int starting_id)
{
struct idr_layer *p, *new;
int layers, v, id;
{
struct idr_layer *p, *new;
int layers, v, id;
+ unsigned long flags;
id = starting_id;
build_up:
id = starting_id;
build_up:
@@
-191,14
+195,14
@@
build_up:
* The allocation failed. If we built part of
* the structure tear it down.
*/
* The allocation failed. If we built part of
* the structure tear it down.
*/
- spin_lock
(&idp->lock
);
+ spin_lock
_irqsave(&idp->lock, flags
);
for (new = p; p && p != idp->top; new = p) {
p = p->ary[0];
new->ary[0] = NULL;
new->bitmap = new->count = 0;
__free_layer(idp, new);
}
for (new = p; p && p != idp->top; new = p) {
p = p->ary[0];
new->ary[0] = NULL;
new->bitmap = new->count = 0;
__free_layer(idp, new);
}
- spin_unlock
(&idp->lock
);
+ spin_unlock
_irqrestore(&idp->lock, flags
);
return -1;
}
new->ary[0] = p;
return -1;
}
new->ary[0] = p;
@@
-325,8
+329,8
@@
static void sub_remove(struct idr *idp, int shift, int id)
/**
* idr_remove - remove the given id and free it's slot
/**
* idr_remove - remove the given id and free it's slot
- * idp: idr handle
- *
id: unique
ue key
+ *
@
idp: idr handle
+ *
@id: uniq
ue key
*/
void idr_remove(struct idr *idp, int id)
{
*/
void idr_remove(struct idr *idp, int id)
{
@@
-441,7
+445,7
@@
void *idr_replace(struct idr *idp, void *ptr, int id)
}
EXPORT_SYMBOL(idr_replace);
}
EXPORT_SYMBOL(idr_replace);
-static void idr_cache_ctor(void * idr_layer,
kmem_cache_t
*idr_layer_cache,
+static void idr_cache_ctor(void * idr_layer,
struct kmem_cache
*idr_layer_cache,
unsigned long flags)
{
memset(idr_layer, 0, sizeof(struct idr_layer));
unsigned long flags)
{
memset(idr_layer, 0, sizeof(struct idr_layer));