Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 412 → Rev 413

/SPARTAN/trunk/src/mm/heap.c
60,7 → 60,7
*/
void *early_malloc(size_t size)
{
pri_t pri;
ipl_t ipl;
chunk_t *x, *y, *z;
 
if (size == 0)
67,7 → 67,7
panic("zero-size allocation request");
x = chunk0;
pri = cpu_priority_high();
ipl = interrupts_disable();
spinlock_lock(&heaplock);
while (x) {
if (x->used || x->size < size) {
84,7 → 84,7
*/
if (x->size < size + sizeof(chunk_t) + 1) {
spinlock_unlock(&heaplock);
cpu_priority_restore(pri);
interrupts_restore(ipl);
return &x->data[0];
}
 
105,18 → 105,18
x->size = size;
x->next = y;
spinlock_unlock(&heaplock);
cpu_priority_restore(pri);
interrupts_restore(ipl);
 
return &x->data[0];
}
spinlock_unlock(&heaplock);
cpu_priority_restore(pri);
interrupts_restore(ipl);
return NULL;
}
 
void early_free(void *ptr)
{
pri_t pri;
ipl_t ipl;
chunk_t *x, *y, *z;
 
if (!ptr)
127,7 → 127,7
if (y->used != 1)
panic("freeing unused/damaged chunk");
 
pri = cpu_priority_high();
ipl = interrupts_disable();
spinlock_lock(&heaplock);
x = y->prev;
z = y->next;
150,5 → 150,5
}
y->used = 0;
spinlock_unlock(&heaplock);
cpu_priority_restore(pri);
interrupts_restore(ipl);
}