Lines Matching refs:next
350 /** index (-> ram[next]) of the next struct */
351 mem_size_t next;
484 LWIP_ASSERT("plug_holes: mem->next <= MEM_SIZE_ALIGNED", mem->next <= MEM_SIZE_ALIGNED);
486 nmem = ptr_to_mem(mem->next);
488 /* if mem->next is unused and not end of ram, combine mem and mem->next */
492 mem->next = nmem->next;
493 if (nmem->next != MEM_SIZE_ALIGNED) {
494 ptr_to_mem(nmem->next)->prev = mem_to_ptr(mem);
505 pmem->next = mem->next;
506 if (mem->next != MEM_SIZE_ALIGNED) {
507 ptr_to_mem(mem->next)->prev = mem_to_ptr(pmem);
527 mem->next = MEM_SIZE_ALIGNED;
533 ram_end->next = MEM_SIZE_ALIGNED;
556 nmem = ptr_to_mem(mem->next);
558 if ((mem->next > MEM_SIZE_ALIGNED) || (mem->prev > MEM_SIZE_ALIGNED) ||
559 ((mem->prev != rmem_idx) && (pmem->next != rmem_idx)) ||
578 LWIP_ASSERT("heap element next ptr valid", mem->next <= MEM_SIZE_ALIGNED);
579 LWIP_ASSERT("heap element next ptr aligned", LWIP_MEM_ALIGN(ptr_to_mem(mem->next) == ptr_to_mem(mem->next)));
582 for (mem = ptr_to_mem(mem->next);
584 mem = ptr_to_mem(mem->next)) {
587 LWIP_ASSERT("heap element next ptr valid", mem->next <= MEM_SIZE_ALIGNED);
589 LWIP_ASSERT("heap element next ptr aligned", LWIP_MEM_ALIGN(ptr_to_mem(mem->next) == ptr_to_mem(mem->next)));
606 LWIP_ASSERT("heap element next ptr valid", mem->next == MEM_SIZE_ALIGNED);
677 MEM_STATS_DEC_USED(used, mem->next - (mem_size_t)(((u8_t *)mem - ram)));
679 /* finally, see if prev or next are free also */
739 size = (mem_size_t)((mem_size_t)(mem->next - ptr) - (SIZEOF_STRUCT_MEM + MEM_SANITY_OVERHEAD));
753 mem2 = ptr_to_mem(mem->next);
755 /* The next struct is unused, we can simply move it at little */
756 mem_size_t next;
757 LWIP_ASSERT("invalid next ptr", mem->next != MEM_SIZE_ALIGNED);
758 /* remember the old next pointer */
759 next = mem2->next;
767 /* restore the next pointer */
768 mem2->next = next;
772 mem->next = ptr2;
774 * let 'mem2->next->prev' point to mem2 again. but only if mem2->next is not
776 if (mem2->next != MEM_SIZE_ALIGNED) {
777 ptr_to_mem(mem2->next)->prev = ptr2;
787 * region that couldn't hold data, but when mem->next gets freed,
790 LWIP_ASSERT("invalid next ptr", mem->next != MEM_SIZE_ALIGNED);
796 mem2->next = mem->next;
798 mem->next = ptr2;
799 if (mem2->next != MEM_SIZE_ALIGNED) {
800 ptr_to_mem(mem2->next)->prev = ptr2;
803 /* the original mem->next is used, so no need to plug holes! */
806 next struct mem is used but size between mem and mem2 is not big enough
871 ptr = ptr_to_mem(ptr)->next) {
887 (mem->next - (ptr + SIZEOF_STRUCT_MEM)) >= size) {
889 * mem->next - (ptr + SIZEOF_STRUCT_MEM) gives us the 'user data size' of mem */
891 if (mem->next - (ptr + SIZEOF_STRUCT_MEM) >= (size + SIZEOF_STRUCT_MEM + MIN_SIZE_ALIGNED)) {
896 * mem->next - (ptr + (2*SIZEOF_STRUCT_MEM)) == size,
897 * struct mem would fit in but no data between mem2 and mem2->next
899 * region that couldn't hold data, but when mem->next gets freed,
903 LWIP_ASSERT("invalid next ptr",ptr2 != MEM_SIZE_ALIGNED);
907 mem2->next = mem->next;
909 /* and insert it between mem and mem->next */
910 mem->next = ptr2;
913 if (mem2->next != MEM_SIZE_ALIGNED) {
914 ptr_to_mem(mem2->next)->prev = ptr2;
918 /* (a mem2 struct does no fit into the user data space of mem and mem->next will always
922 * also can't move mem->next directly behind mem, since mem->next
926 MEM_STATS_INC_USED(used, mem->next - mem_to_ptr(mem));
933 /* Find next free block after mem and update lowest free pointer */
946 cur = ptr_to_mem(cur->next);