[ECOS] memory pools

Andrew Lunn andrew.lunn@ascom.ch
Mon Feb 18 01:07:00 GMT 2002


On Mon, Feb 18, 2002 at 10:02:28AM +0100, Tom Coremans wrote:
> 
> Hi ,
> 
> To create a memory pool you have to give a pointer to the base of memory
> to use for the pool. What should that be on the linux synthetic
> target??? How can I know where there is a block of memory that I can
> use??

Same way as you do on any target. Declare a static or global array of
bytes and use that. The compiler will put it into the bss and
everything will be happy.

static char sbuf_mem[(NUM_SBUFS+2)*(sizeof(struct sbuf))];
cyg_handle_t sbuf_mem_handle;
static cyg_mempool_fix fix;
 
cyg_mempool_info info;
 
 
void sbuf_init() {
  
  cyg_mempool_fix_create(sbuf_mem,
                         (NUM_SBUFS+2)*(sizeof(struct sbuf)),
                         sizeof(struct sbuf),
                         &sbuf_mem_handle,
                         &fix);
}
       
How are you doing it on 'real' targets? Be careful of the heap. Any
spare memory not explicitly allocated to something is eaten up by the
dynamic heap. 

        Andrew

-- 
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss



More information about the Ecos-discuss mailing list