#include "lwip/pbuf.h"
#include "lwip/udp.h"
+#include "lwip/raw.h"
#include "lwip/tcp.h"
#include "lwip/api.h"
#include "lwip/api_msg.h"
static const u16_t memp_sizes[MEMP_MAX] = {
sizeof(struct pbuf),
+ sizeof(struct raw_pcb),
sizeof(struct udp_pcb),
sizeof(struct tcp_pcb),
sizeof(struct tcp_pcb_listen),
static const u16_t memp_num[MEMP_MAX] = {
MEMP_NUM_PBUF,
+ MEMP_NUM_RAW_PCB,
MEMP_NUM_UDP_PCB,
MEMP_NUM_TCP_PCB,
MEMP_NUM_TCP_PCB_LISTEN,
static u8_t memp_memory[(MEMP_NUM_PBUF *
MEM_ALIGN_SIZE(sizeof(struct pbuf) +
sizeof(struct memp)) +
+ MEMP_NUM_RAW_PCB *
+ MEM_ALIGN_SIZE(sizeof(struct raw_pcb) +
+ sizeof(struct memp)) +
MEMP_NUM_UDP_PCB *
MEM_ALIGN_SIZE(sizeof(struct udp_pcb) +
sizeof(struct memp)) +
MEM_ALIGN_SIZE(sizeof(struct sys_timeout) +
sizeof(struct memp)))];
-/*-----------------------------------------------------------------------------------*/
+
#if !SYS_LIGHTWEIGHT_PROT
static sys_sem_t mutex;
#endif
-/*-----------------------------------------------------------------------------------*/
-#ifdef LWIP_DEBUG
+
+#ifndef LWIP_NOASSERT
static int
memp_sanity(void)
{
return 1;
}
#endif /* LWIP_DEBUG */
-/*-----------------------------------------------------------------------------------*/
+
void
memp_init(void)
{
u16_t i, j;
u16_t size;
-#ifdef MEMP_STATS
+#if MEMP_STATS
for(i = 0; i < MEMP_MAX; ++i) {
lwip_stats.memp[i].used = lwip_stats.memp[i].max =
lwip_stats.memp[i].err = 0;
}
-/*-----------------------------------------------------------------------------------*/
+
void *
memp_malloc(memp_t type)
{
struct memp *memp;
void *mem;
-#ifdef SYS_LIGHTWEIGHT_PROT
+#if SYS_LIGHTWEIGHT_PROT
SYS_ARCH_DECL_PROTECT(old_level);
#endif
LWIP_ASSERT("memp_malloc: type < MEMP_MAX", type < MEMP_MAX);
-#ifdef SYS_LIGHTWEIGHT_PROT
+#if SYS_LIGHTWEIGHT_PROT
SYS_ARCH_PROTECT(old_level);
#else /* SYS_LIGHTWEIGHT_PROT */
sys_sem_wait(mutex);
if (memp != NULL) {
memp_tab[type] = memp->next;
memp->next = NULL;
-#ifdef MEMP_STATS
+#if MEMP_STATS
++lwip_stats.memp[type].used;
if (lwip_stats.memp[type].used > lwip_stats.memp[type].max) {
lwip_stats.memp[type].max = lwip_stats.memp[type].used;
}
#endif /* MEMP_STATS */
-#ifdef SYS_LIGHTWEIGHT_PROT
+#if SYS_LIGHTWEIGHT_PROT
SYS_ARCH_UNPROTECT(old_level);
#else /* SYS_LIGHTWEIGHT_PROT */
sys_sem_signal(mutex);
return mem;
} else {
LWIP_DEBUGF(MEMP_DEBUG | 2, ("memp_malloc: out of memory in pool %d\n", type));
-#ifdef MEMP_STATS
+#if MEMP_STATS
++lwip_stats.memp[type].err;
#endif /* MEMP_STATS */
#if SYS_LIGHTWEIGHT_PROT
return NULL;
}
}
-/*-----------------------------------------------------------------------------------*/
+
void
memp_free(memp_t type, void *mem)
{
struct memp *memp;
-#ifdef SYS_LIGHTWEIGHT_PROT
+#if SYS_LIGHTWEIGHT_PROT
SYS_ARCH_DECL_PROTECT(old_level);
#endif /* SYS_LIGHTWEIGHT_PROT */
}
memp = (struct memp *)((u8_t *)mem - sizeof(struct memp));
-#ifdef SYS_LIGHTWEIGHT_PROT
+#if SYS_LIGHTWEIGHT_PROT
SYS_ARCH_PROTECT(old_level);
#else /* SYS_LIGHTWEIGHT_PROT */
sys_sem_wait(mutex);
#endif /* SYS_LIGHTWEIGHT_PROT */
-#ifdef MEMP_STATS
+#if MEMP_STATS
lwip_stats.memp[type].used--;
#endif /* MEMP_STATS */
sys_sem_signal(mutex);
#endif /* SYS_LIGHTWEIGHT_PROT */
}
-/*-----------------------------------------------------------------------------------*/
+