Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 828 → Rev 829

/programs/system/drivers/ati2d/ati_mem.c
42,8 → 42,8
struct mem_block {
struct mem_block *next;
struct mem_block *prev;
int start;
int size;
u32_t start;
size_t size;
};
 
/* Initialize. How to check for an uninitialized heap?
50,15 → 50,15
*/
static int init_heap(struct mem_block **heap, int start, int size)
{
struct mem_block *blocks = kmalloc(sizeof(*blocks));
struct mem_block *blocks = malloc(sizeof(*blocks));
 
if (!blocks)
return -1; //-ENOMEM;
 
*heap = kmalloc(sizeof(**heap));
*heap = malloc(sizeof(**heap));
if (!*heap)
{
kfree(blocks);
free(blocks);
return -1; //-ENOMEM;
}
 
68,6 → 68,7
 
__clear(*heap,sizeof(**heap));
(*heap)->next = (*heap)->prev = blocks;
(*heap)->start |= USED_BLOCK;
return 0;
}
 
90,7 → 91,7
/* Maybe cut off the end of an existing block */
if (size < p->size)
{
struct mem_block *newblock = kmalloc(sizeof(*newblock));
struct mem_block *newblock = malloc(sizeof(*newblock));
if (!newblock)
goto out;
newblock->start = p->start + size;
100,7 → 101,7
p->next->prev = newblock;
p->next = newblock;
p->size = size;
p->start|=1;
p->start|=USED_BLOCK;
}
 
out:
113,6 → 114,7
 
list_for_each(p, heap)
{
 
if ( !(p->start & USED_BLOCK) && size <= p->size)
return split_block(p, size);
}
128,7 → 130,6
list_for_each(p, heap)
if ((p->start & ~USED_BLOCK) == start)
return p;
 
return NULL;
}
 
147,7 → 148,7
p->size += q->size;
p->next = q->next;
p->next->prev = p;
kfree(q);
free(q);
}
 
if ( !(p->prev->start & USED_BLOCK))
156,7 → 157,7
q->size += p->size;
q->next = p->next;
q->next->prev = q;
kfree(p);
free(p);
}
}
 
201,7 → 202,7
if (!block)
return -1;
 
if ( !(block->start & 1))
if ( !(block->start & USED_BLOCK))
return -1;
 
free_block(block);
208,4 → 209,17
return 0;
}
 
void dump_mem()
{
struct mem_block *p;
struct mem_block **heap;
 
heap = &rhd.fb_heap;
 
list_for_each(p, *heap)
{
dbgprintf("block: %x next: %x prev: %x start: %x size:%x\n",
p,p->next,p->prev,p->start,p->size);
}
}