2004-07-16 04:46:01 +04:00
|
|
|
/*
|
|
|
|
Copyright (c) 2002, Thomas Kurschel
|
|
|
|
|
|
|
|
|
|
|
|
Part of Radeon kernel driver
|
|
|
|
|
|
|
|
Memory manager used for graphics mem
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _MEMMGR_H
|
|
|
|
#define _MEMMGR_H
|
|
|
|
|
|
|
|
#include <OS.h>
|
|
|
|
|
|
|
|
|
|
|
|
// allocated memory block
|
|
|
|
typedef struct mem_block {
|
|
|
|
struct mem_block *prev, *next;
|
|
|
|
uint32 base;
|
|
|
|
uint32 size;
|
|
|
|
void *tag;
|
|
|
|
bool alloced;
|
|
|
|
} mem_block;
|
|
|
|
|
|
|
|
|
|
|
|
// memory heap
|
|
|
|
typedef struct mem_info {
|
|
|
|
mem_block *first;
|
2005-03-30 01:09:05 +04:00
|
|
|
area_id heap_area;
|
2004-07-16 04:46:01 +04:00
|
|
|
uint32 block_size;
|
|
|
|
sem_id lock;
|
|
|
|
mem_block *heap;
|
|
|
|
mem_block *unused;
|
|
|
|
uint32 heap_entries;
|
|
|
|
} mem_info;
|
|
|
|
|
|
|
|
|
|
|
|
mem_info *mem_init( uint32 start, uint32 len, uint32 block_size, uint32 heap_entries );
|
|
|
|
void mem_destroy( mem_info *mem );
|
|
|
|
status_t mem_alloc( mem_info *mem, uint32 size, void *tag, uint32 *block, uint32 *offset );
|
|
|
|
status_t mem_free( mem_info *mem, uint32 block_id, void *tag );
|
|
|
|
void mem_freetag( mem_info *mem, void *tag );
|
|
|
|
|
|
|
|
#endif
|