Lines Matching refs:next

157   /** index (-> ram[next]) of the next struct */
158 mem_size_t next;
246 LWIP_ASSERT("plug_holes: mem->next <= MEM_SIZE_ALIGNED", mem->next <= MEM_SIZE_ALIGNED);
248 nmem = (struct mem *)(void *)&ram[mem->next];
250 /* if mem->next is unused and not end of ram, combine mem and mem->next */
254 mem->next = nmem->next;
255 ((struct mem *)(void *)&ram[nmem->next])->prev = (mem_size_t)((u8_t *)mem - ram);
265 pmem->next = mem->next;
266 ((struct mem *)(void *)&ram[mem->next])->prev = (mem_size_t)((u8_t *)pmem - ram);
285 mem->next = MEM_SIZE_ALIGNED;
291 ram_end->next = MEM_SIZE_ALIGNED;
348 MEM_STATS_DEC_USED(used, mem->next - (mem_size_t)(((u8_t *)mem - ram)));
350 /* finally, see if prev or next are free also */
407 size = mem->next - ptr - SIZEOF_STRUCT_MEM;
421 mem2 = (struct mem *)(void *)&ram[mem->next];
423 /* The next struct is unused, we can simply move it at little */
424 mem_size_t next;
425 /* remember the old next pointer */
426 next = mem2->next;
434 /* restore the next pointer */
435 mem2->next = next;
439 mem->next = ptr2;
441 * let 'mem2->next->prev' point to mem2 again. but only if mem2->next is not
443 if (mem2->next != MEM_SIZE_ALIGNED) {
444 ((struct mem *)(void *)&ram[mem2->next])->prev = ptr2;
454 * region that couldn't hold data, but when mem->next gets freed,
462 mem2->next = mem->next;
464 mem->next = ptr2;
465 if (mem2->next != MEM_SIZE_ALIGNED) {
466 ((struct mem *)(void *)&ram[mem2->next])->prev = ptr2;
469 /* the original mem->next is used, so no need to plug holes! */
472 next struct mem is used but size between mem and mem2 is not big enough
533 ptr = ((struct mem *)(void *)&ram[ptr])->next) {
549 (mem->next - (ptr + SIZEOF_STRUCT_MEM)) >= size) {
551 * mem->next - (ptr + SIZEOF_STRUCT_MEM) gives us the 'user data size' of mem */
553 if (mem->next - (ptr + SIZEOF_STRUCT_MEM) >= (size + SIZEOF_STRUCT_MEM + MIN_SIZE_ALIGNED)) {
558 * mem->next - (ptr + (2*SIZEOF_STRUCT_MEM)) == size,
559 * struct mem would fit in but no data between mem2 and mem2->next
561 * region that couldn't hold data, but when mem->next gets freed,
568 mem2->next = mem->next;
570 /* and insert it between mem and mem->next */
571 mem->next = ptr2;
574 if (mem2->next != MEM_SIZE_ALIGNED) {
575 ((struct mem *)(void *)&ram[mem2->next])->prev = ptr2;
579 /* (a mem2 struct does no fit into the user data space of mem and mem->next will always
583 * also can't move mem->next directly behind mem, since mem->next
587 MEM_STATS_INC_USED(used, mem->next - (mem_size_t)((u8_t *)mem - ram));
594 /* Find next free block after mem and update lowest free pointer */
607 cur = (struct mem *)(void *)&ram[cur->next];