#ifndef __PRIV_MALLOC_H__
#define __PRIV_MALLOC_H__

#include "stdint.h"

#ifndef NULL
#define NULL 0
#endif

#define SRAM_1	 0
#define SRAM_2   1

#define SRAMBANK 	2

#define MEM1_BLOCK_SIZE			512
#define MEM1_MAX_SIZE			10 * 1024
#define MEM1_ALLOC_TABLE_SIZE	MEM1_MAX_SIZE / MEM1_BLOCK_SIZE


#define MEM2_BLOCK_SIZE			32
#define MEM2_MAX_SIZE			1 * 64
#define MEM2_ALLOC_TABLE_SIZE	MEM2_MAX_SIZE / MEM2_BLOCK_SIZE

struct _m_mallco_dev
{
	void (*init)(uint8_t);
	uint8_t  (*perused)(uint8_t);
	uint8_t  *membase[SRAMBANK];
	uint16_t *memmap[SRAMBANK];
	uint8_t  memrdy[SRAMBANK];
};
extern struct _m_mallco_dev mallco_dev;

void mymemset(void *s,uint8_t c,uint32_t count);
void mymemcpy(void *des,void *src,uint32_t n);
void my_mem_init(uint8_t memx);
uint32_t my_mem_malloc(uint8_t memx,uint32_t size);
uint8_t my_mem_free(uint8_t memx,uint32_t offset);
uint8_t my_mem_perused(uint8_t memx);

void myfree(uint8_t memx,void *ptr);
void *mymalloc(uint8_t memx,uint32_t size);
void *myrealloc(uint8_t memx,void *ptr,uint32_t size);
void *board_malloc(uint32_t size);
void board_free(void *ptr);
void *board_realloc(void *ptr, uint32_t size);
void *board_calloc(uint32_t size);
#endif


