lwip-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lwip-devel] [bug #47092] Tag memory buffers like memp_memory_xxx and ra


From: David Fernandez
Subject: [lwip-devel] [bug #47092] Tag memory buffers like memp_memory_xxx and ram_heap with a macro so that attributes can be attached to teir definitions
Date: Thu, 18 Feb 2016 20:19:20 +0000
User-agent: Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0

Follow-up Comment #6, bug #47092 (project lwip):

> David, you're not the first wanting to put the pools into a different
section. So far, everyone seems to have succeeded with what we provide (unless
the recent memp changes have broken this).

Sure, I can manage as is... that is what I'm doing, but seems ugly enough to
suggest a standard way to do it in line with other lwIP features like the
packing and the like.

> Being like that, I'm reluctant to add a 2nd method to do the same thing.

The "first" method does not work with standard pools... You can't define the
macro for them.

>> I need to be able to apply the attributes to existing standard pools, that
are considered private...


> Could you please provide an example of which pool you try to move? I think
we need to have an example instead of staying too general in this discussion.

All the ones defined in src/include/lwip/priv/memp_std.h:

Which src/include/lwip/memp.h declares (for no MEMP_MEM_MALLOC) as:

#else /* MEMP_MEM_MALLOC */

#define LWIP_MEMPOOL_DECLARE(name,num,size,desc) u8_t memp_memory_ ## name ##
_base 
    [((num) * (MEMP_SIZE + MEMP_ALIGN_SIZE(size)))]; 
    
  static struct memp *memp_tab_ ## name; 
    
  const struct memp_desc memp_ ## name = { 
    LWIP_MEM_ALIGN_SIZE(size), 
    (num), 
    DECLARE_LWIP_MEMPOOL_DESC(desc) 
    memp_memory_ ## name ## _base, 
    &memp_tab_ ## name 
  };

Note that the declaration of the pool memory is the first line:
u8_t memp_memory_ ## name ## _base 
    [((num) * (MEMP_SIZE + MEMP_ALIGN_SIZE(size)))]; 

Which does not allow for any attribute or the like, and cannot be circunvented
inside src/core/memp.c unless we inject an include file with the right extern
declaration to all lwip files when building, as I show at the end of the
original submission message.

Sure it can be made to work, but a standard way would be better... If you see
it as a good thing, of course.


>> Similarly for ram_heap

> Using GCC, add this line to your lwipopts.h:
> extern unsigned char attribute((section(".onchip_mem"))) ram_heap[];

Sure, it is what I'm doing at the moment, but again, I respectfully suggest
that having a standard way through configuration options would be better.




Anyway,  do it as you see fit. Just let me know if anything is still not
clear.

    _______________________________________________________

Reply to this item at:

  <http://savannah.nongnu.org/bugs/?47092>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.nongnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]