Lines Matching defs:mem

8 /**	Memory manager used for graphics mem
56 merge(mem_info *mem, mem_block *block)
66 next->next = mem->unused;
67 mem->unused = next;
74 freeblock(mem_info *mem, mem_block *block)
83 merge(mem, prev);
89 merge(mem, block);
111 mem_info *mem;
118 mem = malloc(sizeof(*mem));
119 if (mem == NULL)
122 mem->block_size = blockSize;
123 mem->heap_entries = heapEntries;
124 mem->lock = create_sem(1, name);
125 if (mem->lock < 0)
132 mem->heap_area = create_area(name, (void **)&mem->heap,
135 if (mem->heap_area < 0 || mem->heap == NULL)
139 mem->heap[i - 1].next = &mem->heap[i];
142 mem->heap[heapEntries - 1].next = NULL;
143 mem->unused = &mem->heap[1];
145 first = &mem->heap[0];
146 mem->first = first;
153 return mem;
156 delete_sem(mem->lock);
158 free(mem);
167 mem_destroy(mem_info *mem)
169 TRACE(("mem_destroy(mem %p)\n", mem));
171 delete_area(mem->heap_area);
172 delete_sem(mem->lock);
173 free(mem);
179 * \param mem heap handle
188 mem_alloc(mem_info *mem, uint32 size, void *tag, uint32 *blockID, uint32 *offset)
193 TRACE(("mem_alloc(mem %p, size=%lx, tag=%p)\n", mem, size, tag));
195 status = acquire_sem(mem->lock);
200 size = (size + mem->block_size - 1) & ~(mem->block_size - 1);
203 for (current = mem->first; current; current = current->next) {
214 newEntry = mem->unused;
221 mem->unused = newEntry->next;
239 *blockID = current - mem->heap + 1;
242 release_sem(mem->lock);
248 release_sem(mem->lock);
254 * \param mem heap handle
260 mem_free(mem_info *mem, uint32 blockID, void *tag)
265 TRACE(("mem_free(mem %p, blockID=%ld, tag=%p)\n", mem, blockID, tag));
267 status = acquire_sem(mem->lock);
273 if (blockID >= mem->heap_entries) {
278 block = &mem->heap[blockID];
284 freeblock(mem, block);
286 release_sem(mem->lock);
290 release_sem(mem->lock);
298 mem_freetag(mem_info *mem, void *tag)
303 TRACE(("mem_freetag(mem %p, tag=%p)\n", mem, tag));
305 status = acquire_sem(mem->lock);
309 for (current = mem->first; current; current = current->next) {
311 current = freeblock(mem, current);
314 release_sem(mem->lock);