87 |
LWIP_ASSERT("plug_holes: mem->next <= MEM_SIZE", mem->next <= MEM_SIZE); |
LWIP_ASSERT("plug_holes: mem->next <= MEM_SIZE", mem->next <= MEM_SIZE); |
88 |
|
|
89 |
nmem = (struct mem *)&ram[mem->next]; |
nmem = (struct mem *)&ram[mem->next]; |
90 |
if(mem != nmem && nmem->used == 0 && (u8_t *)nmem != (u8_t *)ram_end) { |
if (mem != nmem && nmem->used == 0 && (u8_t *)nmem != (u8_t *)ram_end) { |
91 |
if(lfree == nmem) { |
if (lfree == nmem) { |
92 |
lfree = mem; |
lfree = mem; |
93 |
} |
} |
94 |
mem->next = nmem->next; |
mem->next = nmem->next; |
97 |
|
|
98 |
/* plug hole backward */ |
/* plug hole backward */ |
99 |
pmem = (struct mem *)&ram[mem->prev]; |
pmem = (struct mem *)&ram[mem->prev]; |
100 |
if(pmem != mem && pmem->used == 0) { |
if (pmem != mem && pmem->used == 0) { |
101 |
if(lfree == mem) { |
if (lfree == mem) { |
102 |
lfree = pmem; |
lfree = pmem; |
103 |
} |
} |
104 |
pmem->next = mem->next; |
pmem->next = mem->next; |
224 |
mem2->next = mem->next; |
mem2->next = mem->next; |
225 |
mem2->prev = ptr; |
mem2->prev = ptr; |
226 |
mem->next = ptr2; |
mem->next = ptr2; |
227 |
if(mem2->next != MEM_SIZE) { |
if (mem2->next != MEM_SIZE) { |
228 |
((struct mem *)&ram[mem2->next])->prev = ptr2; |
((struct mem *)&ram[mem2->next])->prev = ptr2; |
229 |
} |
} |
230 |
|
|
257 |
|
|
258 |
for (ptr = (u8_t *)lfree - ram; ptr < MEM_SIZE; ptr = ((struct mem *)&ram[ptr])->next) { |
for (ptr = (u8_t *)lfree - ram; ptr < MEM_SIZE; ptr = ((struct mem *)&ram[ptr])->next) { |
259 |
mem = (struct mem *)&ram[ptr]; |
mem = (struct mem *)&ram[ptr]; |
260 |
if(!mem->used && |
if (!mem->used && |
261 |
mem->next - (ptr + SIZEOF_STRUCT_MEM) >= size + SIZEOF_STRUCT_MEM) { |
mem->next - (ptr + SIZEOF_STRUCT_MEM) >= size + SIZEOF_STRUCT_MEM) { |
262 |
ptr2 = ptr + SIZEOF_STRUCT_MEM + size; |
ptr2 = ptr + SIZEOF_STRUCT_MEM + size; |
263 |
mem2 = (struct mem *)&ram[ptr2]; |
mem2 = (struct mem *)&ram[ptr2]; |
273 |
mem->used = 1; |
mem->used = 1; |
274 |
#ifdef MEM_STATS |
#ifdef MEM_STATS |
275 |
lwip_stats.mem.used += (size + SIZEOF_STRUCT_MEM); |
lwip_stats.mem.used += (size + SIZEOF_STRUCT_MEM); |
276 |
/* if(lwip_stats.mem.max < lwip_stats.mem.used) { |
/* if (lwip_stats.mem.max < lwip_stats.mem.used) { |
277 |
lwip_stats.mem.max = lwip_stats.mem.used; |
lwip_stats.mem.max = lwip_stats.mem.used; |
278 |
} */ |
} */ |
279 |
if (lwip_stats.mem.max < ptr2) { |
if (lwip_stats.mem.max < ptr2) { |
283 |
|
|
284 |
if (mem == lfree) { |
if (mem == lfree) { |
285 |
/* Find next free block after mem */ |
/* Find next free block after mem */ |
286 |
while(lfree->used && lfree != ram_end) { |
while (lfree->used && lfree != ram_end) { |
287 |
lfree = (struct mem *)&ram[lfree->next]; |
lfree = (struct mem *)&ram[lfree->next]; |
288 |
} |
} |
289 |
LWIP_ASSERT("mem_malloc: !lfree->used", !lfree->used); |
LWIP_ASSERT("mem_malloc: !lfree->used", !lfree->used); |