[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Aligned malloc for dma and mbufs for powerpc ppc405gp
- Date: Wed, 10 Nov 2004 06:20:09 -0600
- From: joel.sherrill at OARcorp.com (Joel Sherrill <joel at OARcorp dot com>)
- Subject: Aligned malloc for dma and mbufs for powerpc ppc405gp
There is a PR with a patch to add this to the heap/region/malloc
in RTEMS. Unfortunately, it was against code that is now over
a year old and does not merge easily. If someone would merge it
and resubmit the patch, I would merge it that day.
It also reduces the memory used by the heap internally.
Feng, Shuchen wrote:
> Gene Smith wrote :
>>I have a requirement to allocate a block of memory (on a 4KB boundary
>>according to the manual) for dma descriptor. I also need to have my
>>mbufs allocated on 32 byte boundaries as dma buffers. This is due to the
>>ppc405gp emac and mal devices and cache line boundaries. Is there a way
>>to do this in rtems using the standard API? If not, any suggestions on
>>how this should be done?
> For 32 bytes aligned, one can do :
> struct GTeth_softc *sc;
> /* Make certain elements e.g. descriptor lists are aligned. */
> softc_mem = rtems_bsdnet_malloc(sizeof(*sc) + SOFTC_ALIGN, M_FREE,
> /* Check for the very unlikely case of no memory. */
> if (softc_mem == NULL)
> rtems_panic("GT64260eth: OUT OF MEMORY");
> sc = (void *)(((long)softc_mem + SOFTC_ALIGN) & ~SOFTC_ALIGN);
> memset(sc, 0, sizeof(*sc))
> Please note:
> An mbuf cluster is aligned on a cluster-sized (2 kbyte) boundary.
> Network mbufs are aligned on an mbuf-sized (128 byte) boundary.
> You can reference the network driver for my mvme5500 BSP at
>>Since my driver is not working I think this must be part of the problem.
> Yes, it has to be done right.
Joel Sherrill, Ph.D. Director of Research & Development
joel at OARcorp.com On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (256) 722-9985