mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 23:32:14 +00:00
radix-tree: Chain preallocated nodes through ->parent
Chaining through the ->private_data member means we have to zero ->private_data after removing preallocated nodes from the list. We're about to initialise ->parent anyway, so we can avoid zeroing it. Signed-off-by: Matthew Wilcox <mawilcox@microsoft.com>
This commit is contained in:
parent
73bc029b76
commit
1293d5c5f5
2 changed files with 7 additions and 8 deletions
|
@ -35,9 +35,9 @@ void *kmem_cache_alloc(struct kmem_cache *cachep, int flags)
|
|||
if (cachep->nr_objs) {
|
||||
cachep->nr_objs--;
|
||||
node = cachep->objs;
|
||||
cachep->objs = node->private_data;
|
||||
cachep->objs = node->parent;
|
||||
pthread_mutex_unlock(&cachep->lock);
|
||||
node->private_data = NULL;
|
||||
node->parent = NULL;
|
||||
} else {
|
||||
pthread_mutex_unlock(&cachep->lock);
|
||||
node = malloc(cachep->size);
|
||||
|
@ -64,7 +64,7 @@ void kmem_cache_free(struct kmem_cache *cachep, void *objp)
|
|||
} else {
|
||||
struct radix_tree_node *node = objp;
|
||||
cachep->nr_objs++;
|
||||
node->private_data = cachep->objs;
|
||||
node->parent = cachep->objs;
|
||||
cachep->objs = node;
|
||||
}
|
||||
pthread_mutex_unlock(&cachep->lock);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue