Symbols
loading...
Files
loading...

pbuf_free() function

Dereference a pbuf chain or queue and deallocate any no-longer-used pbufs at the head of this chain or queue. Decrements the pbuf reference count. If it reaches zero, the pbuf is deallocated. For a pbuf chain, this is repeated for each pbuf in the chain, up to the first pbuf which has a non-zero reference count after decrementing. So, when all reference counts are one, the whole chain is free'd. @internal examples: Assuming existing chains a->b->c with the following reference counts, calling pbuf_free(a) results in: 1->2->3 becomes ...1->3 3->3->3 becomes 2->3->3 1->1->2 becomes ......1 2->1->1 becomes 1->1->1 1->1->1 becomes .......

Syntax

u8_t pbuf_free(struct pbuf *p);
Implemented in pbuf.c:724

Arguments

p

The pbuf (chain) to be dereferenced.

Return value

the number of pbufs that were de-allocated from the head of the chain.

Notes

MUST NOT be called on a packet queue (Not verified to work yet). the reference counter of a pbuf equals the number of pointers that refer to the pbuf (or into the pbuf).

Examples

pbuf_free() is referenced by 35 libraries and example projects.

References

LocationReferrerText
pbuf.c:725
pbuf_free(struct pbuf *p)
pbuf.h:290
u8_t pbuf_free(struct pbuf *p);
api_msg.c:234recv_udp()
pbuf_free(p);
api_msg.c:247recv_udp()
pbuf_free(p);
api_msg.c:253recv_udp()
pbuf_free(p);
api_msg.c:315recv_tcp()
pbuf_free(p);
api_msg.c:848netconn_drain()
pbuf_free((struct pbuf *)mem);
dhcp.c:410dhcp_select()
pbuf_free(p_out);
dhcp.c:844dhcp_inform()
pbuf_free(p_out);
dhcp.c:957dhcp_decline()
pbuf_free(p_out);
dhcp.c:1013dhcp_discover()
pbuf_free(p_out);
dhcp.c:1183dhcp_renew()
pbuf_free(p_out);
dhcp.c:1239dhcp_rebind()
pbuf_free(p_out);
dhcp.c:1296dhcp_reboot()
pbuf_free(p_out);
dhcp.c:1362dhcp_release_and_stop()
pbuf_free(p_out);
dhcp.c:1863dhcp_recv()
pbuf_free(p);
dns.c:853dns_send()
pbuf_free(p);
dns.c:860dns_send()
pbuf_free(p);
dns.c:1297dns_recv()
pbuf_free(p);
dns.c:1351dns_recv()
pbuf_free(p);
dns.c:1361dns_recv()
pbuf_free(p);
etharp.c:176etharp_free_entry()
etharp.c:488etharp_update_arp_entry()
pbuf_free(p);
etharp.c:664etharp_input()
pbuf_free(p);
etharp.c:741etharp_input()
pbuf_free(p);
etharp.c:1070etharp_query()
pbuf_free(arp_table[i].q);
etharp.c:1161etharp_raw()
pbuf_free(p);
ethernet.c:251ethernet_input()
pbuf_free(p);
httpd.c:504http_state_eof()
pbuf_free(hs->req);
httpd.c:2527http_recv()
pbuf_free(p);
httpd.c:2570http_recv()
pbuf_free(hs->req);
httpd.c:2575http_recv()
pbuf_free(p);
httpd.c:2591http_recv()
pbuf_free(p);
icmp.c:149icmp_input()
pbuf_free(p);
icmp.c:175icmp_input()
pbuf_free(r);
icmp.c:183icmp_input()
pbuf_free(r);
icmp.c:189icmp_input()
pbuf_free(r);
icmp.c:193icmp_input()
pbuf_free(p);
icmp.c:282icmp_input()
pbuf_free(p);
icmp.c:285icmp_input()
pbuf_free(p);
icmp.c:291icmp_input()
pbuf_free(p);
icmp.c:401icmp_send_response()
pbuf_free(q);
ip4.c:449ip4_input()
pbuf_free(p);
ip4.c:490ip4_input()
pbuf_free(p);
ip4.c:609ip4_input()
pbuf_free(p);
ip4.c:633ip4_input()
pbuf_free(p);
ip4.c:745ip4_input()
pbuf_free(p);
ip4_frag.c:190ip_reass_free_complete_datagram()
pbuf_free(p);
ip4_frag.c:206ip_reass_free_complete_datagram()
pbuf_free(pcur);
ip4_frag.c:690ip4_reass()
pbuf_free(p);
ip4_frag.c:721ipfrag_free_pbuf_custom()
pbuf_free(pcr->original);
ip4_frag.c:823ip4_frag()
pbuf_free(rambuf);
ip4_frag.c:831ip4_frag()
pbuf_free(rambuf);
ip4_frag.c:882ip4_frag()
pbuf_free(rambuf);
netbuf.c:85netbuf_delete()
pbuf_free(buf->p);
netbuf.c:108netbuf_alloc()
pbuf_free(buf->p);
netbuf.c:131netbuf_free()
pbuf_free(buf->p);
netbuf.c:155netbuf_ref()
pbuf_free(buf->p);
pbuf.c:248pbuf_alloc()
pbuf_free(p);
pbuf.c:454pbuf_realloc()
pbuf_free(q->next);
pbuf.c:681pbuf_free_header()
pbuf_free(f);
pbuf.c:930pbuf_dechain()
tail_gone = pbuf_free(q);
pbuf.c:1289pbuf_coalesce()
pbuf_free(p);
sockets.c:576free_socket_free_elements()
pbuf_free(lastdata->pbuf);
sockets.c:1004lwip_recv_tcp()
pbuf_free(p);
sockets.c:1540lwip_sendmsg()
pbuf_free(p);
tcp.c:533tcp_shutdown()
pbuf_free(pcb->refused_data);
tcp.c:1627tcp_seg_free()
pbuf_free(seg->p);
tcp.c:1692tcp_recv_null()
pbuf_free(p);
tcp.c:2141tcp_pcb_purge()
pbuf_free(pcb->refused_data);
tcp_in.c:310tcp_input()
pbuf_free(p);
tcp_in.c:382tcp_input()
pbuf_free(p);
tcp_in.c:490tcp_input()
pbuf_free(recv_data);
tcp_in.c:569tcp_input()
pbuf_free(inseg.p);
tcp_in.c:582tcp_input()
pbuf_free(p);
tcp_in.c:591tcp_input()
pbuf_free(p);
tcp_out.c:170tcp_create_segment()
pbuf_free(p);
tcp_out.c:646tcp_write()
pbuf_free(p2);
tcp_out.c:662tcp_write()
pbuf_free(p);
tcp_out.c:801tcp_write()
pbuf_free(concat_p);
tcp_out.c:986tcp_split_unsent_seg()
pbuf_free(p);
tcp_out.c:1954tcp_output_control_segment()
pbuf_free(p);
tcpip.c:175tcpip_thread_handle_msg()
pbuf_free(msg->msg.inp.p);
tcpip.c:630pbuf_free_int()
pbuf_free(q);
udp.c:222udp_input()
pbuf_free(p);
udp.c:371udp_input()
pbuf_free(p);
udp.c:407udp_input()
pbuf_free(p);
udp.c:425udp_input()
pbuf_free(p);
udp.c:428udp_input()
pbuf_free(p);
udp.c:902udp_sendto_if_src()
pbuf_free(q);

Call Tree

Data read by pbuf_free()
Data written by pbuf_free()
pbuf_free()::alloc_src
pbuf_free()::q
pbuf_free()::count
pbuf_free()::ref
pbuf_free()::old_level
pbuf_free()::pc
all items filtered out
pbuf_free()
pbuf_free()::alloc_src
pbuf_free()::q
pbuf_free()::count
pbuf_free()::ref
pbuf_free()::old_level
all items filtered out
Type of pbuf_free()
pbuf_free()
all items filtered out