/*-----------------------------------------------------------------------------------*/ void memp_free(memp_t type, void *mem) { struct memp *memp; if(mem == NULL) { return; } memp = (struct memp *)((uint8_t *)mem - sizeof(struct memp)); #ifdef MEMP_STATS stats.memp[type].used--; #endif /* MEMP_STATS */ memp->next = memp_tab[type]; memp_tab[type] = memp; ASSERT("memp sanity", memp_sanity()); return; }
void memp_free(memp_t type, void *mem) { struct memp *memp; #if SYS_LIGHTWEIGHT_PROT SYS_ARCH_DECL_PROTECT(old_level); #endif /* SYS_LIGHTWEIGHT_PROT */ if (mem == NULL) { return; } memp = (struct memp *)((u8_t *)mem - sizeof(struct memp)); #if SYS_LIGHTWEIGHT_PROT SYS_ARCH_PROTECT(old_level); #else /* SYS_LIGHTWEIGHT_PROT */ sys_sem_wait(mutex); #endif /* SYS_LIGHTWEIGHT_PROT */ #if MEMP_STATS lwip_stats.memp[type].used--; #endif /* MEMP_STATS */ memp->next = memp_tab[type]; memp_tab[type] = memp; #if MEMP_SANITY_CHECK LWIP_ASSERT("memp sanity", memp_sanity()); #endif #if SYS_LIGHTWEIGHT_PROT SYS_ARCH_UNPROTECT(old_level); #else /* SYS_LIGHTWEIGHT_PROT */ sys_sem_signal(mutex); #endif /* SYS_LIGHTWEIGHT_PROT */ }