• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/staging/memrar/

Lines Matching refs:allocator

2  *      memrar_allocator 1.0:  An allocator for Intel RAR.
24 * This simple allocator implementation provides a
48 struct memrar_allocator *allocator = NULL;
69 return allocator;
72 * There isn't much point in creating a memory allocator that
77 "memrar: Only one block available to allocator.\n");
79 allocator = kmalloc(sizeof(*allocator), GFP_KERNEL);
81 if (allocator == NULL)
82 return allocator;
84 mutex_init(&allocator->lock);
85 allocator->base = base;
88 allocator->capacity = (capacity / block_size) * block_size;
90 allocator->block_size = block_size;
92 allocator->largest_free_area = allocator->capacity;
95 INIT_LIST_HEAD(&allocator->allocated_list.list);
96 INIT_LIST_HEAD(&allocator->free_list.list);
100 kfree(allocator);
101 allocator = NULL;
105 first_node->range.end = base + allocator->capacity;
107 &allocator->free_list.list);
110 return allocator;
113 void memrar_destroy_allocator(struct memrar_allocator *allocator)
116 * Assume that the memory allocator lock isn't held at this
123 if (allocator == NULL)
126 mutex_lock(&allocator->lock);
131 &allocator->free_list.list,
137 mutex_unlock(&allocator->lock);
139 kfree(allocator);
142 unsigned long memrar_allocator_alloc(struct memrar_allocator *allocator,
156 if (allocator == NULL || size == 0)
160 num_blocks = DIV_ROUND_UP(size, allocator->block_size);
162 reserved_bytes = num_blocks * allocator->block_size;
164 mutex_lock(&allocator->lock);
166 if (reserved_bytes > allocator->largest_free_area) {
167 mutex_unlock(&allocator->lock);
178 list_for_each_entry(pos, &allocator->free_list.list, list) {
191 &allocator->allocated_list.list);
208 if (curr_size == allocator->largest_free_area)
209 allocator->largest_free_area -=
220 && curr_size > allocator->largest_free_area) {
221 allocator->largest_free_area = curr_size;
226 mutex_unlock(&allocator->lock);
231 long memrar_allocator_free(struct memrar_allocator *allocator,
244 if (allocator == NULL)
250 mutex_lock(&allocator->lock);
254 &allocator->allocated_list.list,
262 /* No such buffer created by this allocator. */
264 mutex_unlock(&allocator->lock);
274 list_for_each_safe(pos, tmp, &allocator->free_list.list) {
416 if (new_chunk_size > allocator->largest_free_area)
417 allocator->largest_free_area = new_chunk_size;
419 mutex_unlock(&allocator->lock);