<?xml version='1.0' encoding='UTF-8' standalone='no'?> <doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.16"> <compounddef id="memp_8c" kind="file" language="C++"> <compoundname>memp.c</compoundname> <includes refid="opt_8h" local="yes">net/opt.h</includes> <includes refid="memp_8h" local="yes">net/memp.h</includes> <includes refid="sys_8h" local="yes">net/sys.h</includes> <includes refid="stats_8h" local="yes">net/stats.h</includes> <includes refid="string_8h" local="no">string.h</includes> <includes refid="pbuf_8h" local="yes">net/pbuf.h</includes> <includes refid="raw_8h" local="yes">net/raw.h</includes> <includes refid="udp_8h" local="yes">net/udp.h</includes> <includes refid="tcp_8h" local="yes">net/tcp.h</includes> <includes refid="tcp__priv_8h" local="yes">net/priv/tcp_priv.h</includes> <includes refid="ip4__frag_8h" local="yes">net/ip4_frag.h</includes> <includes refid="netbuf_8h" local="yes">net/netbuf.h</includes> <includes refid="api_8h" local="yes">net/api.h</includes> <includes refid="tcpip__priv_8h" local="yes">net/priv/tcpip_priv.h</includes> <includes refid="api__msg_8h" local="yes">net/priv/api_msg.h</includes> <includes refid="sockets_8h" local="yes">net/sockets.h</includes> <includes refid="netifapi_8h" local="yes">net/netifapi.h</includes> <includes refid="etharp_8h" local="yes">net/etharp.h</includes> <includes refid="igmp_8h" local="yes">net/igmp.h</includes> <includes refid="timeouts_8h" local="yes">net/timeouts.h</includes> <includes refid="ppp__opts_8h" local="yes">netif/ppp/ppp_opts.h</includes> <includes refid="netdb_8h" local="yes">net/netdb.h</includes> <includes refid="dns_8h" local="yes">net/dns.h</includes> <includes refid="nd6__priv_8h" local="yes">net/priv/nd6_priv.h</includes> <includes refid="ip6__frag_8h" local="yes">net/ip6_frag.h</includes> <includes refid="mld6_8h" local="yes">net/mld6.h</includes> <includes refid="memp__std_8h" local="yes">net/priv/memp_std.h</includes> <incdepgraph> <node id="39"> <label>ufs/ufs.h</label> <link refid="ufs_8h"/> <childnode refid="6" relation="include"> </childnode> <childnode refid="40" relation="include"> </childnode> </node> <node id="73"> <label>net/igmp.h</label> <link refid="igmp_8h"/> <childnode refid="2" relation="include"> </childnode> <childnode refid="56" relation="include"> </childnode> <childnode refid="55" relation="include"> </childnode> <childnode refid="49" relation="include"> </childnode> </node> <node id="17"> <label>stdarg.h</label> <link refid="stdarg_8h"/> </node> <node id="18"> <label>ubixos/kpanic.h</label> <link refid="kpanic_8h"/> </node> <node id="44"> <label>ubixos/sem.h</label> <link refid="sem_8h"/> <childnode refid="6" relation="include"> </childnode> <childnode refid="45" relation="include"> </childnode> <childnode refid="26" relation="include"> </childnode> </node> <node id="43"> <label>sys/tss.h</label> <link refid="tss_8h"/> <childnode refid="6" relation="include"> </childnode> </node> <node id="15"> <label>sys/io.h</label> <link refid="io_8h"/> </node> <node id="49"> <label>net/pbuf.h</label> <link refid="pbuf_8h"/> <childnode refid="2" relation="include"> </childnode> <childnode refid="46" relation="include"> </childnode> </node> <node id="45"> <label>ubixos/errno.h</label> <link refid="ubixos_2errno_8h"/> </node> <node id="42"> <label>ubixos/tty.h</label> <link refid="tty_8h"/> <childnode refid="6" relation="include"> </childnode> </node> <node id="48"> <label>strings.h</label> <link refid="strings_8h"/> <childnode refid="6" relation="include"> </childnode> </node> <node id="61"> <label>net/ip4.h</label> <link refid="ip4_8h"/> <childnode refid="2" relation="include"> </childnode> </node> <node id="21"> <label>net/priv/memp_priv.h</label> <link refid="memp__priv_8h"/> <childnode refid="2" relation="include"> </childnode> <childnode refid="22" relation="include"> </childnode> </node> <node id="32"> <label>i386/cpu.h</label> <link refid="i386_2cpu_8h"/> <childnode refid="6" relation="include"> </childnode> </node> <node id="69"> <label>net/priv/api_msg.h</label> <link refid="api__msg_8h"/> <childnode refid="2" relation="include"> </childnode> </node> <node id="8"> <label>sys/select.h</label> <link refid="select_8h"/> <childnode refid="9" relation="include"> </childnode> <childnode refid="7" relation="include"> </childnode> <childnode refid="10" relation="include"> </childnode> <childnode refid="11" relation="include"> </childnode> <childnode refid="12" relation="include"> </childnode> </node> <node id="76"> <label>net/dns.h</label> <link refid="dns_8h"/> <childnode refid="2" relation="include"> </childnode> </node> <node id="35"> <label>vfs/inode.h</label> <link refid="inode_8h"/> <childnode refid="6" relation="include"> </childnode> <childnode refid="36" relation="include"> </childnode> <childnode refid="37" relation="include"> </childnode> <childnode refid="38" relation="include"> </childnode> <childnode refid="39" relation="include"> </childnode> </node> <node id="53"> <label>net/priv/tcp_priv.h</label> <link refid="tcp__priv_8h"/> <childnode refid="2" relation="include"> </childnode> </node> <node id="24"> <label>net/sys.h</label> <link refid="sys_8h"/> <childnode refid="2" relation="include"> </childnode> <childnode refid="25" relation="include"> </childnode> <childnode refid="46" relation="include"> </childnode> </node> <node id="68"> <label>net/timeouts.h</label> <link refid="timeouts_8h"/> <childnode refid="2" relation="include"> </childnode> <childnode refid="46" relation="include"> </childnode> <childnode refid="24" relation="include"> </childnode> </node> <node id="26"> <label>ubixos/ubthread.h</label> <link refid="ubthread_8h"/> <childnode refid="6" relation="include"> </childnode> <childnode refid="27" relation="include"> </childnode> <childnode refid="14" relation="include"> </childnode> </node> <node id="13"> <label>net/arch/cc.h</label> <link refid="cc_8h"/> <childnode refid="14" relation="include"> </childnode> </node> <node id="12"> <label>sys/_sigset.h</label> <link refid="__sigset_8h"/> <childnode refid="7" relation="include"> </childnode> </node> <node id="66"> <label>net/priv/tcpip_priv.h</label> <link refid="tcpip__priv_8h"/> <childnode refid="2" relation="include"> </childnode> <childnode refid="67" relation="include"> </childnode> <childnode refid="24" relation="include"> </childnode> <childnode refid="68" relation="include"> </childnode> </node> <node id="52"> <label>net/tcp.h</label> <link refid="tcp_8h"/> <childnode refid="2" relation="include"> </childnode> </node> <node id="71"> <label>net/netifapi.h</label> <link refid="netifapi_8h"/> <childnode refid="2" relation="include"> </childnode> </node> <node id="51"> <label>net/udp.h</label> <link refid="udp_8h"/> <childnode refid="2" relation="include"> </childnode> </node> <node id="23"> <label>net/stats.h</label> <link refid="stats_8h"/> <childnode refid="2" relation="include"> </childnode> <childnode refid="22" relation="include"> </childnode> <childnode refid="19" relation="include"> </childnode> </node> <node id="22"> <label>net/mem.h</label> <link refid="mem_8h"/> <childnode refid="2" relation="include"> </childnode> </node> <node id="3"> <label>net/lwipopts.h</label> <link refid="lwipopts_8h"/> </node> <node id="25"> <label>net/arch/sys_arch.h</label> <link refid="sys__arch_8h"/> <childnode refid="26" relation="include"> </childnode> <childnode refid="44" relation="include"> </childnode> </node> <node id="65"> <label>net/api.h</label> <link refid="api_8h"/> <childnode refid="2" relation="include"> </childnode> </node> <node id="72"> <label>net/etharp.h</label> <link refid="etharp_8h"/> <childnode refid="2" relation="include"> </childnode> </node> <node id="41"> <label>vfs/mount.h</label> <link refid="mount_8h"/> <childnode refid="6" relation="include"> </childnode> </node> <node id="34"> <label>sys/resource.h</label> <link refid="resource_8h"/> <childnode refid="7" relation="include"> </childnode> </node> <node id="31"> <label>sys/trap.h</label> <link refid="trap_8h"/> <childnode refid="32" relation="include"> </childnode> </node> <node id="47"> <label>string.h</label> <link refid="string_8h"/> <childnode refid="6" relation="include"> </childnode> <childnode refid="48" relation="include"> </childnode> </node> <node id="6"> <label>sys/types.h</label> <link refid="include_2sys_2types_8h"/> <childnode refid="7" relation="include"> </childnode> <childnode refid="8" relation="include"> </childnode> </node> <node id="70"> <label>net/sockets.h</label> <link refid="sockets_8h"/> <childnode refid="2" relation="include"> </childnode> </node> <node id="67"> <label>net/tcpip.h</label> <link refid="tcpip_8h"/> <childnode refid="2" relation="include"> </childnode> <childnode refid="46" relation="include"> </childnode> <childnode refid="68" relation="include"> </childnode> <childnode refid="55" relation="include"> </childnode> </node> <node id="28"> <label>vfs/file.h</label> <link refid="include_2vfs_2file_8h"/> <childnode refid="6" relation="include"> </childnode> <childnode refid="29" relation="include"> </childnode> <childnode refid="30" relation="include"> </childnode> <childnode refid="35" relation="include"> </childnode> <childnode refid="41" relation="include"> </childnode> <childnode refid="39" relation="include"> </childnode> </node> <node id="77"> <label>net/priv/nd6_priv.h</label> <link refid="nd6__priv_8h"/> <childnode refid="2" relation="include"> </childnode> </node> <node id="57"> <label>net/def.h</label> <link refid="def_8h"/> <childnode refid="5" relation="include"> </childnode> <childnode refid="2" relation="include"> </childnode> </node> <node id="55"> <label>net/netif.h</label> <link refid="netif_8h"/> <childnode refid="2" relation="include"> </childnode> <childnode refid="46" relation="include"> </childnode> <childnode refid="56" relation="include"> </childnode> <childnode refid="57" relation="include"> </childnode> <childnode refid="49" relation="include"> </childnode> <childnode refid="23" relation="include"> </childnode> </node> <node id="78"> <label>net/ip6_frag.h</label> <link refid="ip6__frag_8h"/> <childnode refid="2" relation="include"> </childnode> <childnode refid="49" relation="include"> </childnode> <childnode refid="59" relation="include"> </childnode> <childnode refid="62" relation="include"> </childnode> <childnode refid="55" relation="include"> </childnode> </node> <node id="5"> <label>net/arch.h</label> <link refid="arch_8h"/> <childnode refid="6" relation="include"> </childnode> <childnode refid="13" relation="include"> </childnode> <childnode refid="16" relation="include"> </childnode> <childnode refid="18" relation="include"> </childnode> </node> <node id="38"> <label>fs/msdos_fs.h</label> <link refid="msdos__fs_8h"/> </node> <node id="33"> <label>sys/signal.h</label> <link refid="sys_2signal_8h"/> <childnode refid="6" relation="include"> </childnode> </node> <node id="62"> <label>net/ip6.h</label> <link refid="ip6_8h"/> <childnode refid="2" relation="include"> </childnode> </node> <node id="50"> <label>net/raw.h</label> <link refid="raw_8h"/> <childnode refid="2" relation="include"> </childnode> </node> <node id="54"> <label>net/ip4_frag.h</label> <link refid="ip4__frag_8h"/> <childnode refid="2" relation="include"> </childnode> <childnode refid="46" relation="include"> </childnode> <childnode refid="49" relation="include"> </childnode> <childnode refid="55" relation="include"> </childnode> <childnode refid="56" relation="include"> </childnode> <childnode refid="60" relation="include"> </childnode> </node> <node id="37"> <label>fs/pipe_fs.h</label> <link refid="pipe__fs_8h"/> </node> <node id="36"> <label>ubixos/wait.h</label> <link refid="wait_8h"/> </node> <node id="1"> <label>C:/Dev/git/UbixOS/sys/net/core/memp.c</label> <link refid="memp_8c"/> <childnode refid="2" relation="include"> </childnode> <childnode refid="19" relation="include"> </childnode> <childnode refid="24" relation="include"> </childnode> <childnode refid="23" relation="include"> </childnode> <childnode refid="47" relation="include"> </childnode> <childnode refid="49" relation="include"> </childnode> <childnode refid="50" relation="include"> </childnode> <childnode refid="51" relation="include"> </childnode> <childnode refid="52" relation="include"> </childnode> <childnode refid="53" relation="include"> </childnode> <childnode refid="54" relation="include"> </childnode> <childnode refid="64" relation="include"> </childnode> <childnode refid="65" relation="include"> </childnode> <childnode refid="66" relation="include"> </childnode> <childnode refid="69" relation="include"> </childnode> <childnode refid="70" relation="include"> </childnode> <childnode refid="71" relation="include"> </childnode> <childnode refid="72" relation="include"> </childnode> <childnode refid="73" relation="include"> </childnode> <childnode refid="68" relation="include"> </childnode> <childnode refid="74" relation="include"> </childnode> <childnode refid="75" relation="include"> </childnode> <childnode refid="76" relation="include"> </childnode> <childnode refid="77" relation="include"> </childnode> <childnode refid="78" relation="include"> </childnode> <childnode refid="79" relation="include"> </childnode> <childnode refid="20" relation="include"> </childnode> </node> <node id="59"> <label>net/ip6_addr.h</label> <link refid="ip6__addr_8h"/> <childnode refid="2" relation="include"> </childnode> <childnode refid="57" relation="include"> </childnode> </node> <node id="2"> <label>net/opt.h</label> <link refid="opt_8h"/> <childnode refid="3" relation="include"> </childnode> <childnode refid="4" relation="include"> </childnode> </node> <node id="16"> <label>lib/kprintf.h</label> <link refid="kprintf_8h"/> <childnode refid="6" relation="include"> </childnode> <childnode refid="17" relation="include"> </childnode> </node> <node id="60"> <label>net/ip.h</label> <link refid="ip_8h"/> <childnode refid="2" relation="include"> </childnode> <childnode refid="57" relation="include"> </childnode> <childnode refid="49" relation="include"> </childnode> <childnode refid="56" relation="include"> </childnode> <childnode refid="46" relation="include"> </childnode> <childnode refid="55" relation="include"> </childnode> <childnode refid="61" relation="include"> </childnode> <childnode refid="62" relation="include"> </childnode> <childnode refid="63" relation="include"> </childnode> </node> <node id="4"> <label>net/debug.h</label> <link refid="debug_8h"/> <childnode refid="5" relation="include"> </childnode> <childnode refid="2" relation="include"> </childnode> </node> <node id="58"> <label>net/ip4_addr.h</label> <link refid="ip4__addr_8h"/> <childnode refid="2" relation="include"> </childnode> <childnode refid="57" relation="include"> </childnode> </node> <node id="56"> <label>net/ip_addr.h</label> <link refid="ip__addr_8h"/> <childnode refid="2" relation="include"> </childnode> <childnode refid="57" relation="include"> </childnode> <childnode refid="58" relation="include"> </childnode> <childnode refid="59" relation="include"> </childnode> </node> <node id="30"> <label>sys/thread.h</label> <link refid="thread_8h"/> <childnode refid="6" relation="include"> </childnode> <childnode refid="31" relation="include"> </childnode> <childnode refid="33" relation="include"> </childnode> <childnode refid="34" relation="include"> </childnode> </node> <node id="20"> <label>net/priv/memp_std.h</label> <link refid="memp__std_8h"/> </node> <node id="64"> <label>net/netbuf.h</label> <link refid="netbuf_8h"/> <childnode refid="2" relation="include"> </childnode> </node> <node id="9"> <label>sys/cdefs.h</label> <link refid="cdefs_8h"/> </node> <node id="74"> <label>netif/ppp/ppp_opts.h</label> <link refid="ppp__opts_8h"/> <childnode refid="2" relation="include"> </childnode> </node> <node id="14"> <label>ubixos/time.h</label> <link refid="time_8h"/> <childnode refid="6" relation="include"> </childnode> <childnode refid="10" relation="include"> </childnode> <childnode refid="15" relation="include"> </childnode> </node> <node id="27"> <label>ubixos/sched.h</label> <link refid="sched_8h"/> <childnode refid="6" relation="include"> </childnode> <childnode refid="28" relation="include"> </childnode> <childnode refid="42" relation="include"> </childnode> <childnode refid="43" relation="include"> </childnode> <childnode refid="30" relation="include"> </childnode> </node> <node id="7"> <label>sys/_types.h</label> <link refid="__types_8h"/> </node> <node id="63"> <label>net/prot/ip.h</label> <link refid="prot_2ip_8h"/> <childnode refid="5" relation="include"> </childnode> </node> <node id="46"> <label>net/err.h</label> <link refid="err_8h"/> <childnode refid="2" relation="include"> </childnode> <childnode refid="5" relation="include"> </childnode> </node> <node id="10"> <label>sys/_timespec.h</label> <link refid="__timespec_8h"/> <childnode refid="7" relation="include"> </childnode> </node> <node id="40"> <label>sys/device.h</label> <link refid="include_2sys_2device_8h"/> <childnode refid="6" relation="include"> </childnode> </node> <node id="75"> <label>net/netdb.h</label> <link refid="netdb_8h"/> <childnode refid="2" relation="include"> </childnode> </node> <node id="29"> <label>ubixfs/dirCache.h</label> <link refid="dirCache_8h"/> <childnode refid="6" relation="include"> </childnode> </node> <node id="11"> <label>sys/_timeval.h</label> <link refid="__timeval_8h"/> <childnode refid="7" relation="include"> </childnode> </node> <node id="79"> <label>net/mld6.h</label> <link refid="mld6_8h"/> <childnode refid="2" relation="include"> </childnode> </node> <node id="19"> <label>net/memp.h</label> <link refid="memp_8h"/> <childnode refid="2" relation="include"> </childnode> <childnode refid="20" relation="include"> </childnode> <childnode refid="21" relation="include"> </childnode> <childnode refid="23" relation="include"> </childnode> </node> </incdepgraph> <sectiondef kind="define"> <memberdef kind="define" id="memp_8c_1a5f75b6e9cf0c6df9e70b08b8e05a1835" prot="public" static="no"> <name>LWIP_MEMPOOL</name> <param><defname>name</defname></param> <param><defname>num</defname></param> <param><defname>size</defname></param> <param><defname>desc</defname></param> <initializer><ref refid="group__mempool_1ga5b1fb3ce7942432d87cc948b1c5ed6cb" kindref="member">LWIP_MEMPOOL_DECLARE</ref>(<ref refid="pci_8c_1a8f8f80d37794cde9472343e4487ba3eb" kindref="member">name</ref>,num,size,desc)</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="C:/Dev/git/UbixOS/sys/net/core/memp.c" line="78" column="9" bodyfile="C:/Dev/git/UbixOS/sys/net/core/memp.c" bodystart="78" bodyend="-1"/> </memberdef> <memberdef kind="define" id="memp_8c_1a5f75b6e9cf0c6df9e70b08b8e05a1835" prot="public" static="no"> <name>LWIP_MEMPOOL</name> <param><defname>name</defname></param> <param><defname>num</defname></param> <param><defname>size</defname></param> <param><defname>desc</defname></param> <initializer>&memp_ ## <ref refid="pci_8c_1a8f8f80d37794cde9472343e4487ba3eb" kindref="member">name</ref>,</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="C:/Dev/git/UbixOS/sys/net/core/memp.c" line="82" column="9" bodyfile="C:/Dev/git/UbixOS/sys/net/core/memp.c" bodystart="78" bodyend="-1"/> </memberdef> </sectiondef> <sectiondef kind="var"> <memberdef kind="variable" id="memp_8c_1ad78a1f656a766f2c6341aa466762b883" prot="public" static="no" mutable="no"> <type><ref refid="cdefs_8h_1a2c212835823e3c54a8ab6d95c652660e" kindref="member">const</ref> struct <ref refid="structmemp__desc" kindref="compound">memp_desc</ref> *<ref refid="cdefs_8h_1a2c212835823e3c54a8ab6d95c652660e" kindref="member">const</ref></type> <definition>const struct memp_desc* const memp_pools[MEMP_MAX]</definition> <argsstring>[MEMP_MAX]</argsstring> <name>memp_pools</name> <initializer>= { #define <ref refid="memp__std_8h_1a922d258cde897fffc15fb1b4b0623e97" kindref="member">LWIP_MEMPOOL</ref>(<ref refid="pci_8c_1a8f8f80d37794cde9472343e4487ba3eb" kindref="member">name</ref>,num,size,desc) }</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="C:/Dev/git/UbixOS/sys/net/core/memp.c" line="81" column="29" bodyfile="C:/Dev/git/UbixOS/sys/net/core/memp.c" bodystart="81" bodyend="-1"/> <referencedby refid="memp_8c_1aecd94926b7c2a0e23ae195f4ae97581f" compoundref="memp_8c" startline="469" endline="496">memp_free</referencedby> <referencedby refid="memp_8c_1a9693e5b1ac2c6b9c0e7870522d45efa2" compoundref="memp_8c" startline="271" endline="288">memp_init</referencedby> </memberdef> </sectiondef> <sectiondef kind="func"> <memberdef kind="function" id="memp_8c_1aa7dc20041f4327b4c349dd055c2639ba" prot="public" static="yes" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void</type> <definition>static void do_memp_free_pool</definition> <argsstring>(const struct memp_desc *desc, void *mem)</argsstring> <name>do_memp_free_pool</name> <param> <type><ref refid="cdefs_8h_1a2c212835823e3c54a8ab6d95c652660e" kindref="member">const</ref> struct <ref refid="structmemp__desc" kindref="compound">memp_desc</ref> *</type> <declname>desc</declname> </param> <param> <type>void *</type> <declname>mem</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="C:/Dev/git/UbixOS/sys/net/core/memp.c" line="407" column="1" bodyfile="C:/Dev/git/UbixOS/sys/net/core/memp.c" bodystart="407" bodyend="443"/> </memberdef> <memberdef kind="function" id="memp_8c_1afe2fa9da5acb435aa2d1981c340eb71a" prot="public" static="yes" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void *</type> <definition>static void* do_memp_malloc_pool</definition> <argsstring>(const struct memp_desc *desc)</argsstring> <name>do_memp_malloc_pool</name> <param> <type><ref refid="cdefs_8h_1a2c212835823e3c54a8ab6d95c652660e" kindref="member">const</ref> struct <ref refid="structmemp__desc" kindref="compound">memp_desc</ref> *</type> <declname>desc</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="C:/Dev/git/UbixOS/sys/net/core/memp.c" line="292" column="1" bodyfile="C:/Dev/git/UbixOS/sys/net/core/memp.c" bodystart="292" bodyend="348"/> </memberdef> <memberdef kind="function" id="memp_8c_1aecd94926b7c2a0e23ae195f4ae97581f" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void</type> <definition>void memp_free</definition> <argsstring>(memp_t type, void *mem)</argsstring> <name>memp_free</name> <param> <type><ref refid="memp_8h_1a85a164b1f7764951cc685ea525114e57" kindref="member">memp_t</ref></type> <declname>type</declname> </param> <param> <type>void *</type> <declname>mem</declname> </param> <briefdescription> </briefdescription> <detaileddescription> <para>Put an element back into its pool.</para> <para><parameterlist kind="param"><parameteritem> <parameternamelist> <parametername>type</parametername> </parameternamelist> <parameterdescription> <para>the pool where to put mem </para> </parameterdescription> </parameteritem> <parameteritem> <parameternamelist> <parametername>mem</parametername> </parameternamelist> <parameterdescription> <para>the memp element to free </para> </parameterdescription> </parameteritem> </parameterlist> </para> </detaileddescription> <inbodydescription> </inbodydescription> <location file="C:/Dev/git/UbixOS/sys/net/core/memp.c" line="469" column="1" bodyfile="C:/Dev/git/UbixOS/sys/net/core/memp.c" bodystart="469" bodyend="496"/> <references refid="debug_8h_1a827bc03cd7889e7c007df39d33b33d18" compoundref="debug_8h" startline="135">LWIP_ERROR</references> <references refid="memp_8h_1a85a164b1f7764951cc685ea525114e57a3387042084427642949f3223c7ddd321" compoundref="memp_8h" startline="55">MEMP_MAX</references> <references refid="memp_8c_1ad78a1f656a766f2c6341aa466762b883" compoundref="memp_8c" startline="81">memp_pools</references> <references refid="fat__string_8h_1a070d2ce7b6bb7e5c05602aa8c308d0c4" compoundref="fat__string_8h" startline="17">NULL</references> <references refid="structmemp__desc_1a9d6b758ce5c3b47a67a7568d38fb3926" compoundref="memp__priv_8h" startline="151">memp_desc::tab</references> <referencedby refid="group__pbuf_1gab0dd696fb4b6bc65e548944584f1738b" compoundref="pbuf_8c" startline="715" endline="792">pbuf_free</referencedby> <referencedby refid="tcpip_8c_1ac5b7a59f4c3f5f721ab9ee81f231c9fd" compoundref="tcpip_8c" startline="421" endline="423">tcpip_callbackmsg_delete</referencedby> </memberdef> <memberdef kind="function" id="memp_8c_1a62f8c3c907743e34eee3cdac7fa1eaa5" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void</type> <definition>void memp_free_pool</definition> <argsstring>(const struct memp_desc *desc, void *mem)</argsstring> <name>memp_free_pool</name> <param> <type><ref refid="cdefs_8h_1a2c212835823e3c54a8ab6d95c652660e" kindref="member">const</ref> struct <ref refid="structmemp__desc" kindref="compound">memp_desc</ref> *</type> <declname>desc</declname> </param> <param> <type>void *</type> <declname>mem</declname> </param> <briefdescription> </briefdescription> <detaileddescription> <para>Put a custom pool element back into its pool.</para> <para><parameterlist kind="param"><parameteritem> <parameternamelist> <parametername>desc</parametername> </parameternamelist> <parameterdescription> <para>the pool where to put mem </para> </parameterdescription> </parameteritem> <parameteritem> <parameternamelist> <parametername>mem</parametername> </parameternamelist> <parameterdescription> <para>the memp element to free </para> </parameterdescription> </parameteritem> </parameterlist> </para> </detaileddescription> <inbodydescription> </inbodydescription> <location file="C:/Dev/git/UbixOS/sys/net/core/memp.c" line="452" column="1" bodyfile="C:/Dev/git/UbixOS/sys/net/core/memp.c" bodystart="452" bodyend="460"/> <references refid="debug_8h_1a94ad086267808462beae2b38f91996ed" compoundref="debug_8h" startline="116">LWIP_ASSERT</references> <references refid="fat__string_8h_1a070d2ce7b6bb7e5c05602aa8c308d0c4" compoundref="fat__string_8h" startline="17">NULL</references> </memberdef> <memberdef kind="function" id="memp_8c_1a9693e5b1ac2c6b9c0e7870522d45efa2" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void</type> <definition>void memp_init</definition> <argsstring>(void)</argsstring> <name>memp_init</name> <param> <type>void</type> </param> <briefdescription> </briefdescription> <detaileddescription> <para>Initializes lwIP built-in pools. Related functions: memp_malloc, memp_free</para> <para>Carves out memp_memory into linked lists for each pool-type. </para> </detaileddescription> <inbodydescription> </inbodydescription> <location file="C:/Dev/git/UbixOS/sys/net/core/memp.c" line="271" column="1" bodyfile="C:/Dev/git/UbixOS/sys/net/core/memp.c" bodystart="271" bodyend="288"/> <references refid="def_8h_1a4abb61f4c9339d8a0a0c63b4fbfe6a37" compoundref="def_8h" startline="58">LWIP_ARRAYSIZE</references> <references refid="memp_8c_1a6416303426d05526bed33f241fa6ecd7" compoundref="memp_8c" startline="230" endline="262">memp_init_pool</references> <references refid="memp_8c_1ad78a1f656a766f2c6341aa466762b883" compoundref="memp_8c" startline="81">memp_pools</references> <referencedby refid="core_2init_8c_1a0c1a18439524d2f4a5e51d25c0ca2ce9" compoundref="core_2init_8c" startline="333" endline="381">lwip_init</referencedby> </memberdef> <memberdef kind="function" id="memp_8c_1a6416303426d05526bed33f241fa6ecd7" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void</type> <definition>void memp_init_pool</definition> <argsstring>(const struct memp_desc *desc)</argsstring> <name>memp_init_pool</name> <param> <type><ref refid="cdefs_8h_1a2c212835823e3c54a8ab6d95c652660e" kindref="member">const</ref> struct <ref refid="structmemp__desc" kindref="compound">memp_desc</ref> *</type> <declname>desc</declname> </param> <briefdescription> </briefdescription> <detaileddescription> <para>Initialize custom memory pool. Related functions: memp_malloc_pool, memp_free_pool</para> <para><parameterlist kind="param"><parameteritem> <parameternamelist> <parametername>desc</parametername> </parameternamelist> <parameterdescription> <para>pool to initialize </para> </parameterdescription> </parameteritem> </parameterlist> </para> </detaileddescription> <inbodydescription> </inbodydescription> <location file="C:/Dev/git/UbixOS/sys/net/core/memp.c" line="230" column="1" bodyfile="C:/Dev/git/UbixOS/sys/net/core/memp.c" bodystart="230" bodyend="262"/> <references refid="structmemp__desc_1a9aec58adcbcd88167247296ca4346558" compoundref="memp__priv_8h" startline="148">memp_desc::base</references> <references refid="group__compiler__abstraction_1gaa8e8724eb1c220cbbb90de9e175ce1dc" compoundref="arch_8h" startline="236">LWIP_MEM_ALIGN</references> <references refid="group__compiler__abstraction_1ga70624a5deb8b9199406372a7f3603ecf" compoundref="arch_8h" startline="315">LWIP_UNUSED_ARG</references> <references refid="lwipopts_8h_1a27fdd01194a42fc41a7716b72cdb49e3" compoundref="lwipopts_8h" startline="63">MEMP_OVERFLOW_CHECK</references> <references refid="memp__priv_8h_1a7f8c378e0581aa2dc491cff52ae4fce2" compoundref="memp__priv_8h" startline="85">MEMP_SIZE</references> <references refid="structmemp_1a86abb86558e1cdee1bd2382f0323654d" compoundref="memp__priv_8h" startline="92">memp::next</references> <references refid="fat__string_8h_1a070d2ce7b6bb7e5c05602aa8c308d0c4" compoundref="fat__string_8h" startline="17">NULL</references> <references refid="structmemp__desc_1a2c32db78e565b8812ca0e20fe929a8a7" compoundref="memp__priv_8h" startline="145">memp_desc::num</references> <references refid="structmemp__desc_1a1688d2bdd5a7b77700e1fa627f025ba3" compoundref="memp__priv_8h" startline="141">memp_desc::size</references> <references refid="structmemp__desc_1a9d6b758ce5c3b47a67a7568d38fb3926" compoundref="memp__priv_8h" startline="151">memp_desc::tab</references> <referencedby refid="memp_8c_1a9693e5b1ac2c6b9c0e7870522d45efa2" compoundref="memp_8c" startline="271" endline="288">memp_init</referencedby> </memberdef> <memberdef kind="function" id="memp_8c_1a2b00593d086313c267b54a976bf67aa5" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void *</type> <definition>void* memp_malloc</definition> <argsstring>(memp_t type)</argsstring> <name>memp_malloc</name> <param> <type><ref refid="memp_8h_1a85a164b1f7764951cc685ea525114e57" kindref="member">memp_t</ref></type> <declname>type</declname> </param> <briefdescription> </briefdescription> <detaileddescription> <para>Get an element from a specific pool.</para> <para><parameterlist kind="param"><parameteritem> <parameternamelist> <parametername>type</parametername> </parameternamelist> <parameterdescription> <para>the pool to get an element from</para> </parameterdescription> </parameteritem> </parameterlist> <simplesect kind="return"><para>a pointer to the allocated memory or a NULL pointer on error </para> </simplesect> </para> </detaileddescription> <inbodydescription> </inbodydescription> <location file="C:/Dev/git/UbixOS/sys/net/core/memp.c" line="385" column="1" bodyfile="C:/Dev/git/UbixOS/sys/net/core/memp.c" bodystart="385" bodyend="404"/> <references refid="debug_8h_1a827bc03cd7889e7c007df39d33b33d18" compoundref="debug_8h" startline="135">LWIP_ERROR</references> <references refid="memp_8h_1a85a164b1f7764951cc685ea525114e57a3387042084427642949f3223c7ddd321" compoundref="memp_8h" startline="55">MEMP_MAX</references> <references refid="fat__string_8h_1a070d2ce7b6bb7e5c05602aa8c308d0c4" compoundref="fat__string_8h" startline="17">NULL</references> <referencedby refid="group__pbuf_1gacfcb0a2af918658ba0afe36499c65f47" compoundref="pbuf_8c" startline="248" endline="405">pbuf_alloc</referencedby> <referencedby refid="tcpip_8c_1aee14fa2587a9ba9d23e4c7e16c4526ac" compoundref="tcpip_8c" startline="405" endline="414">tcpip_callbackmsg_new</referencedby> </memberdef> <memberdef kind="function" id="memp_8c_1a348c83ee972f1edf7296a1cdf1d75f22" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void *</type> <definition>void* memp_malloc_pool</definition> <argsstring>(const struct memp_desc *desc)</argsstring> <name>memp_malloc_pool</name> <param> <type><ref refid="cdefs_8h_1a2c212835823e3c54a8ab6d95c652660e" kindref="member">const</ref> struct <ref refid="structmemp__desc" kindref="compound">memp_desc</ref> *</type> <declname>desc</declname> </param> <briefdescription> </briefdescription> <detaileddescription> <para>Get an element from a custom pool.</para> <para><parameterlist kind="param"><parameteritem> <parameternamelist> <parametername>desc</parametername> </parameternamelist> <parameterdescription> <para>the pool to get an element from</para> </parameterdescription> </parameteritem> </parameterlist> <simplesect kind="return"><para>a pointer to the allocated memory or a NULL pointer on error </para> </simplesect> </para> </detaileddescription> <inbodydescription> </inbodydescription> <location file="C:/Dev/git/UbixOS/sys/net/core/memp.c" line="359" column="1" bodyfile="C:/Dev/git/UbixOS/sys/net/core/memp.c" bodystart="359" bodyend="374"/> <references refid="debug_8h_1a94ad086267808462beae2b38f91996ed" compoundref="debug_8h" startline="116">LWIP_ASSERT</references> <references refid="fat__string_8h_1a070d2ce7b6bb7e5c05602aa8c308d0c4" compoundref="fat__string_8h" startline="17">NULL</references> </memberdef> </sectiondef> <briefdescription> </briefdescription> <detaileddescription> <para>Dynamic pool memory manager</para> <para>lwIP has dedicated pools for many structures (netconn, protocol control blocks, packet buffers, ...). All these pools are managed here. </para> </detaileddescription> <programlisting> <codeline lineno="1"></codeline> <codeline lineno="14"><highlight class="comment">/*</highlight></codeline> <codeline lineno="15"><highlight class="comment"><sp/>*<sp/>Copyright<sp/>(c)<sp/>2001-2004<sp/>Swedish<sp/>Institute<sp/>of<sp/>Computer<sp/>Science.</highlight></codeline> <codeline lineno="16"><highlight class="comment"><sp/>*<sp/>All<sp/>rights<sp/>reserved.</highlight></codeline> <codeline lineno="17"><highlight class="comment"><sp/>*</highlight></codeline> <codeline lineno="18"><highlight class="comment"><sp/>*<sp/>Redistribution<sp/>and<sp/>use<sp/>in<sp/>source<sp/>and<sp/>binary<sp/>forms,<sp/>with<sp/>or<sp/>without<sp/>modification,</highlight></codeline> <codeline lineno="19"><highlight class="comment"><sp/>*<sp/>are<sp/>permitted<sp/>provided<sp/>that<sp/>the<sp/>following<sp/>conditions<sp/>are<sp/>met:</highlight></codeline> <codeline lineno="20"><highlight class="comment"><sp/>*</highlight></codeline> <codeline lineno="21"><highlight class="comment"><sp/>*<sp/>1.<sp/>Redistributions<sp/>of<sp/>source<sp/>code<sp/>must<sp/>retain<sp/>the<sp/>above<sp/>copyright<sp/>notice,</highlight></codeline> <codeline lineno="22"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>this<sp/>list<sp/>of<sp/>conditions<sp/>and<sp/>the<sp/>following<sp/>disclaimer.</highlight></codeline> <codeline lineno="23"><highlight class="comment"><sp/>*<sp/>2.<sp/>Redistributions<sp/>in<sp/>binary<sp/>form<sp/>must<sp/>reproduce<sp/>the<sp/>above<sp/>copyright<sp/>notice,</highlight></codeline> <codeline lineno="24"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>this<sp/>list<sp/>of<sp/>conditions<sp/>and<sp/>the<sp/>following<sp/>disclaimer<sp/>in<sp/>the<sp/>documentation</highlight></codeline> <codeline lineno="25"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>and/or<sp/>other<sp/>materials<sp/>provided<sp/>with<sp/>the<sp/>distribution.</highlight></codeline> <codeline lineno="26"><highlight class="comment"><sp/>*<sp/>3.<sp/>The<sp/>name<sp/>of<sp/>the<sp/>author<sp/>may<sp/>not<sp/>be<sp/>used<sp/>to<sp/>endorse<sp/>or<sp/>promote<sp/>products</highlight></codeline> <codeline lineno="27"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>derived<sp/>from<sp/>this<sp/>software<sp/>without<sp/>specific<sp/>prior<sp/>written<sp/>permission.</highlight></codeline> <codeline lineno="28"><highlight class="comment"><sp/>*</highlight></codeline> <codeline lineno="29"><highlight class="comment"><sp/>*<sp/>THIS<sp/>SOFTWARE<sp/>IS<sp/>PROVIDED<sp/>BY<sp/>THE<sp/>AUTHOR<sp/>``AS<sp/>IS''<sp/>AND<sp/>ANY<sp/>EXPRESS<sp/>OR<sp/>IMPLIED</highlight></codeline> <codeline lineno="30"><highlight class="comment"><sp/>*<sp/>WARRANTIES,<sp/>INCLUDING,<sp/>BUT<sp/>NOT<sp/>LIMITED<sp/>TO,<sp/>THE<sp/>IMPLIED<sp/>WARRANTIES<sp/>OF</highlight></codeline> <codeline lineno="31"><highlight class="comment"><sp/>*<sp/>MERCHANTABILITY<sp/>AND<sp/>FITNESS<sp/>FOR<sp/>A<sp/>PARTICULAR<sp/>PURPOSE<sp/>ARE<sp/>DISCLAIMED.<sp/>IN<sp/>NO<sp/>EVENT</highlight></codeline> <codeline lineno="32"><highlight class="comment"><sp/>*<sp/>SHALL<sp/>THE<sp/>AUTHOR<sp/>BE<sp/>LIABLE<sp/>FOR<sp/>ANY<sp/>DIRECT,<sp/>INDIRECT,<sp/>INCIDENTAL,<sp/>SPECIAL,</highlight></codeline> <codeline lineno="33"><highlight class="comment"><sp/>*<sp/>EXEMPLARY,<sp/>OR<sp/>CONSEQUENTIAL<sp/>DAMAGES<sp/>(INCLUDING,<sp/>BUT<sp/>NOT<sp/>LIMITED<sp/>TO,<sp/>PROCUREMENT</highlight></codeline> <codeline lineno="34"><highlight class="comment"><sp/>*<sp/>OF<sp/>SUBSTITUTE<sp/>GOODS<sp/>OR<sp/>SERVICES;<sp/>LOSS<sp/>OF<sp/>USE,<sp/>DATA,<sp/>OR<sp/>PROFITS;<sp/>OR<sp/>BUSINESS</highlight></codeline> <codeline lineno="35"><highlight class="comment"><sp/>*<sp/>INTERRUPTION)<sp/>HOWEVER<sp/>CAUSED<sp/>AND<sp/>ON<sp/>ANY<sp/>THEORY<sp/>OF<sp/>LIABILITY,<sp/>WHETHER<sp/>IN</highlight></codeline> <codeline lineno="36"><highlight class="comment"><sp/>*<sp/>CONTRACT,<sp/>STRICT<sp/>LIABILITY,<sp/>OR<sp/>TORT<sp/>(INCLUDING<sp/>NEGLIGENCE<sp/>OR<sp/>OTHERWISE)<sp/>ARISING</highlight></codeline> <codeline lineno="37"><highlight class="comment"><sp/>*<sp/>IN<sp/>ANY<sp/>WAY<sp/>OUT<sp/>OF<sp/>THE<sp/>USE<sp/>OF<sp/>THIS<sp/>SOFTWARE,<sp/>EVEN<sp/>IF<sp/>ADVISED<sp/>OF<sp/>THE<sp/>POSSIBILITY</highlight></codeline> <codeline lineno="38"><highlight class="comment"><sp/>*<sp/>OF<sp/>SUCH<sp/>DAMAGE.</highlight></codeline> <codeline lineno="39"><highlight class="comment"><sp/>*</highlight></codeline> <codeline lineno="40"><highlight class="comment"><sp/>*<sp/>This<sp/>file<sp/>is<sp/>part<sp/>of<sp/>the<sp/>lwIP<sp/>TCP/IP<sp/>stack.</highlight></codeline> <codeline lineno="41"><highlight class="comment"><sp/>*</highlight></codeline> <codeline lineno="42"><highlight class="comment"><sp/>*<sp/>Author:<sp/>Adam<sp/>Dunkels<sp/><adam@sics.se></highlight></codeline> <codeline lineno="43"><highlight class="comment"><sp/>*</highlight></codeline> <codeline lineno="44"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="45"><highlight class="normal"></highlight></codeline> <codeline lineno="46"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="opt_8h" kindref="compound">net/opt.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="47"><highlight class="normal"></highlight></codeline> <codeline lineno="48"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="memp_8h" kindref="compound">net/memp.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="49"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="sys_8h" kindref="compound">net/sys.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="50"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="stats_8h" kindref="compound">net/stats.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="51"><highlight class="normal"></highlight></codeline> <codeline lineno="52"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><<ref refid="string_8h" kindref="compound">string.h</ref>></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="53"><highlight class="normal"></highlight></codeline> <codeline lineno="54"><highlight class="normal"></highlight><highlight class="comment">/*<sp/>Make<sp/>sure<sp/>we<sp/>include<sp/>everything<sp/>we<sp/>need<sp/>for<sp/>size<sp/>calculation<sp/>required<sp/>by<sp/>memp_std.h<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="55"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="pbuf_8h" kindref="compound">net/pbuf.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="56"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="raw_8h" kindref="compound">net/raw.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="57"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="udp_8h" kindref="compound">net/udp.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="58"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="tcp_8h" kindref="compound">net/tcp.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="59"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="tcp__priv_8h" kindref="compound">net/priv/tcp_priv.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="60"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="ip4__frag_8h" kindref="compound">net/ip4_frag.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="61"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="netbuf_8h" kindref="compound">net/netbuf.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="62"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="api_8h" kindref="compound">net/api.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="63"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="tcpip__priv_8h" kindref="compound">net/priv/tcpip_priv.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="64"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="api__msg_8h" kindref="compound">net/priv/api_msg.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="65"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="sockets_8h" kindref="compound">net/sockets.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="66"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="netifapi_8h" kindref="compound">net/netifapi.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="67"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="etharp_8h" kindref="compound">net/etharp.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="68"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="igmp_8h" kindref="compound">net/igmp.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="69"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="timeouts_8h" kindref="compound">net/timeouts.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="70"><highlight class="normal"></highlight><highlight class="comment">/*<sp/>needed<sp/>by<sp/>default<sp/>MEMP_NUM_SYS_TIMEOUT<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="71"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="ppp__opts_8h" kindref="compound">netif/ppp/ppp_opts.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="72"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="netdb_8h" kindref="compound">net/netdb.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="73"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="dns_8h" kindref="compound">net/dns.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="74"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="nd6__priv_8h" kindref="compound">net/priv/nd6_priv.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="75"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="ip6__frag_8h" kindref="compound">net/ip6_frag.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="76"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="mld6_8h" kindref="compound">net/mld6.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="77"><highlight class="normal"></highlight></codeline> <codeline lineno="78" refid="memp_8c_1a5f75b6e9cf0c6df9e70b08b8e05a1835" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>LWIP_MEMPOOL(name,num,size,desc)<sp/>LWIP_MEMPOOL_DECLARE(name,num,size,desc)</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="79"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="memp__std_8h" kindref="compound">net/priv/memp_std.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="80"><highlight class="normal"></highlight></codeline> <codeline lineno="81" refid="memp_8c_1ad78a1f656a766f2c6341aa466762b883" refkind="member"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structmemp__desc" kindref="compound">memp_desc</ref>*<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="memp_8c_1ad78a1f656a766f2c6341aa466762b883" kindref="member">memp_pools</ref>[<ref refid="memp_8h_1a85a164b1f7764951cc685ea525114e57a3387042084427642949f3223c7ddd321" kindref="member">MEMP_MAX</ref>]<sp/>=<sp/>{</highlight></codeline> <codeline lineno="82"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>LWIP_MEMPOOL(name,num,size,desc)<sp/>&memp_<sp/>##<sp/>name,</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="83"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="memp__std_8h" kindref="compound">net/priv/memp_std.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="84"><highlight class="normal">};</highlight></codeline> <codeline lineno="85"><highlight class="normal"></highlight></codeline> <codeline lineno="86"><highlight class="normal"></highlight><highlight class="preprocessor">#ifdef<sp/>LWIP_HOOK_FILENAME</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="87"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>LWIP_HOOK_FILENAME</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="88"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="89"><highlight class="normal"></highlight></codeline> <codeline lineno="90"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_MEM_MALLOC<sp/>&&<sp/>MEMP_OVERFLOW_CHECK<sp/>>=<sp/>2</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="91"><highlight class="normal"></highlight><highlight class="preprocessor">#undef<sp/>MEMP_OVERFLOW_CHECK</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="92"><highlight class="normal"></highlight><highlight class="comment">/*<sp/>MEMP_OVERFLOW_CHECK<sp/>>=<sp/>2<sp/>does<sp/>not<sp/>work<sp/>with<sp/>MEMP_MEM_MALLOC,<sp/>use<sp/>1<sp/>instead<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="93"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>MEMP_OVERFLOW_CHECK<sp/>1</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="94"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="95"><highlight class="normal"></highlight></codeline> <codeline lineno="96"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_SANITY_CHECK<sp/>&&<sp/>!MEMP_MEM_MALLOC</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="97"><highlight class="normal"></highlight></codeline> <codeline lineno="100"><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="101"><highlight class="normal">memp_sanity(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structmemp__desc" kindref="compound">memp_desc</ref><sp/>*desc)</highlight></codeline> <codeline lineno="102"><highlight class="normal">{</highlight></codeline> <codeline lineno="103"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structmemp" kindref="compound">memp</ref><sp/>*t,<sp/>*h;</highlight></codeline> <codeline lineno="104"><highlight class="normal"></highlight></codeline> <codeline lineno="105"><highlight class="normal"><sp/><sp/>t<sp/>=<sp/>*desc-><ref refid="structmemp__desc_1a9d6b758ce5c3b47a67a7568d38fb3926" kindref="member">tab</ref>;</highlight></codeline> <codeline lineno="106"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(t<sp/>!=<sp/><ref refid="fat__string_8h_1a070d2ce7b6bb7e5c05602aa8c308d0c4" kindref="member">NULL</ref>)<sp/>{</highlight></codeline> <codeline lineno="107"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(h<sp/>=<sp/>t-><ref refid="structmemp_1a86abb86558e1cdee1bd2382f0323654d" kindref="member">next</ref>;<sp/>(t<sp/>!=<sp/><ref refid="fat__string_8h_1a070d2ce7b6bb7e5c05602aa8c308d0c4" kindref="member">NULL</ref>)<sp/>&&<sp/>(h<sp/>!=<sp/><ref refid="fat__string_8h_1a070d2ce7b6bb7e5c05602aa8c308d0c4" kindref="member">NULL</ref>);<sp/>t<sp/>=<sp/>t-><ref refid="structmemp_1a86abb86558e1cdee1bd2382f0323654d" kindref="member">next</ref>,</highlight></codeline> <codeline lineno="108"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>h<sp/>=<sp/>((h-><ref refid="structmemp_1a86abb86558e1cdee1bd2382f0323654d" kindref="member">next</ref><sp/>!=<sp/><ref refid="fat__string_8h_1a070d2ce7b6bb7e5c05602aa8c308d0c4" kindref="member">NULL</ref>)<sp/>?<sp/>h-><ref refid="structmemp_1a86abb86558e1cdee1bd2382f0323654d" kindref="member">next</ref>-><ref refid="structmemp_1a86abb86558e1cdee1bd2382f0323654d" kindref="member">next</ref><sp/>:<sp/><ref refid="fat__string_8h_1a070d2ce7b6bb7e5c05602aa8c308d0c4" kindref="member">NULL</ref>))<sp/>{</highlight></codeline> <codeline lineno="109"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(t<sp/>==<sp/>h)<sp/>{</highlight></codeline> <codeline lineno="110"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>0;</highlight></codeline> <codeline lineno="111"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline> <codeline lineno="112"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline> <codeline lineno="113"><highlight class="normal"><sp/><sp/>}</highlight></codeline> <codeline lineno="114"><highlight class="normal"></highlight></codeline> <codeline lineno="115"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>1;</highlight></codeline> <codeline lineno="116"><highlight class="normal">}</highlight></codeline> <codeline lineno="117"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>MEMP_SANITY_CHECK<sp/>&&<sp/>!MEMP_MEM_MALLOC<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="118"><highlight class="normal"></highlight></codeline> <codeline lineno="119"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_OVERFLOW_CHECK</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="120"><highlight class="normal"></highlight></codeline> <codeline lineno="127"><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="128"><highlight class="normal">memp_overflow_check_element_overflow(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structmemp" kindref="compound">memp</ref><sp/>*p,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structmemp__desc" kindref="compound">memp_desc</ref><sp/>*desc)</highlight></codeline> <codeline lineno="129"><highlight class="normal">{</highlight></codeline> <codeline lineno="130"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_SANITY_REGION_AFTER_ALIGNED<sp/>><sp/>0</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="131"><highlight class="normal"><sp/><sp/><ref refid="group__compiler__abstraction_1ga77570ac4fcab86864fa1916e55676da2" kindref="member">u16_t</ref><sp/>k;</highlight></codeline> <codeline lineno="132"><highlight class="normal"><sp/><sp/><ref refid="group__compiler__abstraction_1ga4caecabca98b43919dd11be1c0d4cd8e" kindref="member">u8_t</ref><sp/>*m;</highlight></codeline> <codeline lineno="133"><highlight class="normal"><sp/><sp/>m<sp/>=<sp/>(<ref refid="group__compiler__abstraction_1ga4caecabca98b43919dd11be1c0d4cd8e" kindref="member">u8_t</ref>*)p<sp/>+<sp/><ref refid="memp__priv_8h_1a7f8c378e0581aa2dc491cff52ae4fce2" kindref="member">MEMP_SIZE</ref><sp/>+<sp/>desc-><ref refid="structmemp__desc_1a1688d2bdd5a7b77700e1fa627f025ba3" kindref="member">size</ref>;</highlight></codeline> <codeline lineno="134"><highlight class="normal"><sp/><sp/>for<sp/>(k<sp/>=<sp/>0;<sp/>k<sp/><<sp/>MEMP_SANITY_REGION_AFTER_ALIGNED;<sp/>k++)<sp/>{</highlight></codeline> <codeline lineno="135"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(m[k]<sp/>!=<sp/>0xcd)<sp/>{</highlight></codeline> <codeline lineno="136"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>errstr[128]<sp/>=<sp/></highlight><highlight class="stringliteral">"detected<sp/>memp<sp/>overflow<sp/>in<sp/>pool<sp/>"</highlight><highlight class="normal">;</highlight></codeline> <codeline lineno="137"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>strcat(errstr,<sp/>desc->desc);</highlight></codeline> <codeline lineno="138"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="debug_8h_1a94ad086267808462beae2b38f91996ed" kindref="member">LWIP_ASSERT</ref>(errstr,<sp/>0);</highlight></codeline> <codeline lineno="139"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline> <codeline lineno="140"><highlight class="normal"><sp/><sp/>}</highlight></codeline> <codeline lineno="141"><highlight class="normal"></highlight><highlight class="preprocessor">#else<sp/></highlight><highlight class="comment">/*<sp/>MEMP_SANITY_REGION_AFTER_ALIGNED<sp/>><sp/>0<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="142"><highlight class="normal"><sp/><sp/><ref refid="group__compiler__abstraction_1ga70624a5deb8b9199406372a7f3603ecf" kindref="member">LWIP_UNUSED_ARG</ref>(p);</highlight></codeline> <codeline lineno="143"><highlight class="normal"><sp/><sp/><ref refid="group__compiler__abstraction_1ga70624a5deb8b9199406372a7f3603ecf" kindref="member">LWIP_UNUSED_ARG</ref>(desc);</highlight></codeline> <codeline lineno="144"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>MEMP_SANITY_REGION_AFTER_ALIGNED<sp/>><sp/>0<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="145"><highlight class="normal">}</highlight></codeline> <codeline lineno="146"><highlight class="normal"></highlight></codeline> <codeline lineno="154"><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="155"><highlight class="normal">memp_overflow_check_element_underflow(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structmemp" kindref="compound">memp</ref><sp/>*p,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structmemp__desc" kindref="compound">memp_desc</ref><sp/>*desc)</highlight></codeline> <codeline lineno="156"><highlight class="normal">{</highlight></codeline> <codeline lineno="157"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_SANITY_REGION_BEFORE_ALIGNED<sp/>><sp/>0</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="158"><highlight class="normal"><sp/><sp/><ref refid="group__compiler__abstraction_1ga77570ac4fcab86864fa1916e55676da2" kindref="member">u16_t</ref><sp/>k;</highlight></codeline> <codeline lineno="159"><highlight class="normal"><sp/><sp/><ref refid="group__compiler__abstraction_1ga4caecabca98b43919dd11be1c0d4cd8e" kindref="member">u8_t</ref><sp/>*m;</highlight></codeline> <codeline lineno="160"><highlight class="normal"><sp/><sp/>m<sp/>=<sp/>(<ref refid="group__compiler__abstraction_1ga4caecabca98b43919dd11be1c0d4cd8e" kindref="member">u8_t</ref>*)p<sp/>+<sp/><ref refid="memp__priv_8h_1a7f8c378e0581aa2dc491cff52ae4fce2" kindref="member">MEMP_SIZE</ref><sp/>-<sp/>MEMP_SANITY_REGION_BEFORE_ALIGNED;</highlight></codeline> <codeline lineno="161"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(k<sp/>=<sp/>0;<sp/>k<sp/><<sp/>MEMP_SANITY_REGION_BEFORE_ALIGNED;<sp/>k++)<sp/>{</highlight></codeline> <codeline lineno="162"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(m[k]<sp/>!=<sp/>0xcd)<sp/>{</highlight></codeline> <codeline lineno="163"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>errstr[128]<sp/>=<sp/></highlight><highlight class="stringliteral">"detected<sp/>memp<sp/>underflow<sp/>in<sp/>pool<sp/>"</highlight><highlight class="normal">;</highlight></codeline> <codeline lineno="164"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>strcat(errstr,<sp/>desc->desc);</highlight></codeline> <codeline lineno="165"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="debug_8h_1a94ad086267808462beae2b38f91996ed" kindref="member">LWIP_ASSERT</ref>(errstr,<sp/>0);</highlight></codeline> <codeline lineno="166"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline> <codeline lineno="167"><highlight class="normal"><sp/><sp/>}</highlight></codeline> <codeline lineno="168"><highlight class="normal"></highlight><highlight class="preprocessor">#else<sp/></highlight><highlight class="comment">/*<sp/>MEMP_SANITY_REGION_BEFORE_ALIGNED<sp/>><sp/>0<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="169"><highlight class="normal"><sp/><sp/><ref refid="group__compiler__abstraction_1ga70624a5deb8b9199406372a7f3603ecf" kindref="member">LWIP_UNUSED_ARG</ref>(p);</highlight></codeline> <codeline lineno="170"><highlight class="normal"><sp/><sp/><ref refid="group__compiler__abstraction_1ga70624a5deb8b9199406372a7f3603ecf" kindref="member">LWIP_UNUSED_ARG</ref>(desc);</highlight></codeline> <codeline lineno="171"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>MEMP_SANITY_REGION_BEFORE_ALIGNED<sp/>><sp/>0<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="172"><highlight class="normal">}</highlight></codeline> <codeline lineno="173"><highlight class="normal"></highlight></codeline> <codeline lineno="177"><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="178"><highlight class="normal">memp_overflow_init_element(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structmemp" kindref="compound">memp</ref><sp/>*p,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structmemp__desc" kindref="compound">memp_desc</ref><sp/>*desc)</highlight></codeline> <codeline lineno="179"><highlight class="normal">{</highlight></codeline> <codeline lineno="180"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_SANITY_REGION_BEFORE_ALIGNED<sp/>><sp/>0<sp/>||<sp/>MEMP_SANITY_REGION_AFTER_ALIGNED<sp/>><sp/>0</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="181"><highlight class="normal"><sp/><sp/><ref refid="group__compiler__abstraction_1ga4caecabca98b43919dd11be1c0d4cd8e" kindref="member">u8_t</ref><sp/>*m;</highlight></codeline> <codeline lineno="182"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_SANITY_REGION_BEFORE_ALIGNED<sp/>><sp/>0</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="183"><highlight class="normal"><sp/><sp/>m<sp/>=<sp/>(<ref refid="group__compiler__abstraction_1ga4caecabca98b43919dd11be1c0d4cd8e" kindref="member">u8_t</ref>*)p<sp/>+<sp/><ref refid="memp__priv_8h_1a7f8c378e0581aa2dc491cff52ae4fce2" kindref="member">MEMP_SIZE</ref><sp/>-<sp/>MEMP_SANITY_REGION_BEFORE_ALIGNED;</highlight></codeline> <codeline lineno="184"><highlight class="normal"><sp/><sp/><ref refid="string_8h_1ace4b911463887af5e748326323e99a23" kindref="member">memset</ref>(m,<sp/>0xcd,<sp/>MEMP_SANITY_REGION_BEFORE_ALIGNED);</highlight></codeline> <codeline lineno="185"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="186"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_SANITY_REGION_AFTER_ALIGNED<sp/>><sp/>0</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="187"><highlight class="normal"><sp/><sp/>m<sp/>=<sp/>(<ref refid="group__compiler__abstraction_1ga4caecabca98b43919dd11be1c0d4cd8e" kindref="member">u8_t</ref>*)p<sp/>+<sp/><ref refid="memp__priv_8h_1a7f8c378e0581aa2dc491cff52ae4fce2" kindref="member">MEMP_SIZE</ref><sp/>+<sp/>desc-><ref refid="structmemp__desc_1a1688d2bdd5a7b77700e1fa627f025ba3" kindref="member">size</ref>;</highlight></codeline> <codeline lineno="188"><highlight class="normal"><sp/><sp/><ref refid="string_8h_1ace4b911463887af5e748326323e99a23" kindref="member">memset</ref>(m,<sp/>0xcd,<sp/>MEMP_SANITY_REGION_AFTER_ALIGNED);</highlight></codeline> <codeline lineno="189"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="190"><highlight class="normal"></highlight><highlight class="preprocessor">#else<sp/></highlight><highlight class="comment">/*<sp/>MEMP_SANITY_REGION_BEFORE_ALIGNED<sp/>><sp/>0<sp/>||<sp/>MEMP_SANITY_REGION_AFTER_ALIGNED<sp/>><sp/>0<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="191"><highlight class="normal"><sp/><sp/><ref refid="group__compiler__abstraction_1ga70624a5deb8b9199406372a7f3603ecf" kindref="member">LWIP_UNUSED_ARG</ref>(p);</highlight></codeline> <codeline lineno="192"><highlight class="normal"><sp/><sp/><ref refid="group__compiler__abstraction_1ga70624a5deb8b9199406372a7f3603ecf" kindref="member">LWIP_UNUSED_ARG</ref>(desc);</highlight></codeline> <codeline lineno="193"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>MEMP_SANITY_REGION_BEFORE_ALIGNED<sp/>><sp/>0<sp/>||<sp/>MEMP_SANITY_REGION_AFTER_ALIGNED<sp/>><sp/>0<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="194"><highlight class="normal">}</highlight></codeline> <codeline lineno="195"><highlight class="normal"></highlight></codeline> <codeline lineno="196"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_OVERFLOW_CHECK<sp/>>=<sp/>2</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="197"><highlight class="normal"></highlight></codeline> <codeline lineno="202"><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="203"><highlight class="normal">memp_overflow_check_all(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal">)</highlight></codeline> <codeline lineno="204"><highlight class="normal">{</highlight></codeline> <codeline lineno="205"><highlight class="normal"><sp/><sp/><ref refid="group__compiler__abstraction_1ga77570ac4fcab86864fa1916e55676da2" kindref="member">u16_t</ref><sp/>i,<sp/>j;</highlight></codeline> <codeline lineno="206"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structmemp" kindref="compound">memp</ref><sp/>*p;</highlight></codeline> <codeline lineno="207"><highlight class="normal"><sp/><sp/><ref refid="sys_8h_1a945395fa326214fc9736487242710a90" kindref="member">SYS_ARCH_DECL_PROTECT</ref>(old_level);</highlight></codeline> <codeline lineno="208"><highlight class="normal"><sp/><sp/><ref refid="sys_8h_1a3d0e48feafd378e9c26c64567ecd8bab" kindref="member">SYS_ARCH_PROTECT</ref>(old_level);</highlight></codeline> <codeline lineno="209"><highlight class="normal"></highlight></codeline> <codeline lineno="210"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(i<sp/>=<sp/>0;<sp/>i<sp/><<sp/><ref refid="memp_8h_1a85a164b1f7764951cc685ea525114e57a3387042084427642949f3223c7ddd321" kindref="member">MEMP_MAX</ref>;<sp/>++i)<sp/>{</highlight></codeline> <codeline lineno="211"><highlight class="normal"><sp/><sp/><sp/><sp/>p<sp/>=<sp/>(</highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structmemp" kindref="compound">memp</ref>*)<ref refid="group__compiler__abstraction_1gaa8e8724eb1c220cbbb90de9e175ce1dc" kindref="member">LWIP_MEM_ALIGN</ref>(<ref refid="memp_8c_1ad78a1f656a766f2c6341aa466762b883" kindref="member">memp_pools</ref>[i]->base);</highlight></codeline> <codeline lineno="212"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(j<sp/>=<sp/>0;<sp/>j<sp/><<sp/><ref refid="memp_8c_1ad78a1f656a766f2c6341aa466762b883" kindref="member">memp_pools</ref>[i]-><ref refid="structmemp__desc_1a2c32db78e565b8812ca0e20fe929a8a7" kindref="member">num</ref>;<sp/>++j)<sp/>{</highlight></codeline> <codeline lineno="213"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>memp_overflow_check_element_overflow(p,<sp/><ref refid="memp_8c_1ad78a1f656a766f2c6341aa466762b883" kindref="member">memp_pools</ref>[i]);</highlight></codeline> <codeline lineno="214"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>memp_overflow_check_element_underflow(p,<sp/><ref refid="memp_8c_1ad78a1f656a766f2c6341aa466762b883" kindref="member">memp_pools</ref>[i]);</highlight></codeline> <codeline lineno="215"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>p<sp/>=<sp/><ref refid="group__compiler__abstraction_1gaade87973d72135b0b3afccfff4f62eb8" kindref="member">LWIP_ALIGNMENT_CAST</ref>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structmemp" kindref="compound">memp</ref>*,<sp/>((<ref refid="group__compiler__abstraction_1ga4caecabca98b43919dd11be1c0d4cd8e" kindref="member">u8_t</ref>*)p<sp/>+<sp/><ref refid="memp__priv_8h_1a7f8c378e0581aa2dc491cff52ae4fce2" kindref="member">MEMP_SIZE</ref><sp/>+<sp/><ref refid="memp_8c_1ad78a1f656a766f2c6341aa466762b883" kindref="member">memp_pools</ref>[i]->size<sp/>+<sp/>MEMP_SANITY_REGION_AFTER_ALIGNED));</highlight></codeline> <codeline lineno="216"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline> <codeline lineno="217"><highlight class="normal"><sp/><sp/>}</highlight></codeline> <codeline lineno="218"><highlight class="normal"><sp/><sp/><ref refid="sys_8h_1a2f48e97047945642ddeb27e65bf4ffe2" kindref="member">SYS_ARCH_UNPROTECT</ref>(old_level);</highlight></codeline> <codeline lineno="219"><highlight class="normal">}</highlight></codeline> <codeline lineno="220"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>MEMP_OVERFLOW_CHECK<sp/>>=<sp/>2<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="221"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>MEMP_OVERFLOW_CHECK<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="222"><highlight class="normal"></highlight></codeline> <codeline lineno="229"><highlight class="keywordtype">void</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="230" refid="memp_8c_1a6416303426d05526bed33f241fa6ecd7" refkind="member"><highlight class="normal"><ref refid="memp_8c_1a6416303426d05526bed33f241fa6ecd7" kindref="member">memp_init_pool</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structmemp__desc" kindref="compound">memp_desc</ref><sp/>*desc)</highlight></codeline> <codeline lineno="231"><highlight class="normal">{</highlight></codeline> <codeline lineno="232"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_MEM_MALLOC</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="233"><highlight class="normal"><sp/><sp/><ref refid="group__compiler__abstraction_1ga70624a5deb8b9199406372a7f3603ecf" kindref="member">LWIP_UNUSED_ARG</ref>(desc);</highlight></codeline> <codeline lineno="234"><highlight class="normal"></highlight><highlight class="preprocessor">#else</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="235"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i;</highlight></codeline> <codeline lineno="236"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structmemp" kindref="compound">memp</ref><sp/>*<ref refid="structmemp" kindref="compound">memp</ref>;</highlight></codeline> <codeline lineno="237"><highlight class="normal"></highlight></codeline> <codeline lineno="238"><highlight class="normal"><sp/><sp/>*desc-><ref refid="structmemp__desc_1a9d6b758ce5c3b47a67a7568d38fb3926" kindref="member">tab</ref><sp/>=<sp/><ref refid="fat__string_8h_1a070d2ce7b6bb7e5c05602aa8c308d0c4" kindref="member">NULL</ref>;</highlight></codeline> <codeline lineno="239"><highlight class="normal"><sp/><sp/><ref refid="structmemp" kindref="compound">memp</ref><sp/>=<sp/>(</highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structmemp" kindref="compound">memp</ref>*)<ref refid="group__compiler__abstraction_1gaa8e8724eb1c220cbbb90de9e175ce1dc" kindref="member">LWIP_MEM_ALIGN</ref>(desc-><ref refid="structmemp__desc_1a9aec58adcbcd88167247296ca4346558" kindref="member">base</ref>);</highlight></codeline> <codeline lineno="240"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">/*<sp/>create<sp/>a<sp/>linked<sp/>list<sp/>of<sp/>memp<sp/>elements<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="241"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(i<sp/>=<sp/>0;<sp/>i<sp/><<sp/>desc-><ref refid="structmemp__desc_1a2c32db78e565b8812ca0e20fe929a8a7" kindref="member">num</ref>;<sp/>++i)<sp/>{</highlight></codeline> <codeline lineno="242"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structmemp" kindref="compound">memp</ref>-><ref refid="structmemp_1a86abb86558e1cdee1bd2382f0323654d" kindref="member">next</ref><sp/>=<sp/>*desc-><ref refid="structmemp__desc_1a9d6b758ce5c3b47a67a7568d38fb3926" kindref="member">tab</ref>;</highlight></codeline> <codeline lineno="243"><highlight class="normal"><sp/><sp/><sp/><sp/>*desc-><ref refid="structmemp__desc_1a9d6b758ce5c3b47a67a7568d38fb3926" kindref="member">tab</ref><sp/>=<sp/><ref refid="structmemp" kindref="compound">memp</ref>;</highlight></codeline> <codeline lineno="244"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_OVERFLOW_CHECK</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="245"><highlight class="normal"><sp/><sp/><sp/><sp/>memp_overflow_init_element(<ref refid="structmemp" kindref="compound">memp</ref>,<sp/>desc);</highlight></codeline> <codeline lineno="246"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>MEMP_OVERFLOW_CHECK<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="247"><highlight class="normal"><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>cast<sp/>through<sp/>void*<sp/>to<sp/>get<sp/>rid<sp/>of<sp/>alignment<sp/>warnings<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="248"><highlight class="normal"><sp/><sp/><sp/><ref refid="structmemp" kindref="compound">memp</ref><sp/>=<sp/>(</highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structmemp" kindref="compound">memp</ref><sp/>*)(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*)((<ref refid="group__compiler__abstraction_1ga4caecabca98b43919dd11be1c0d4cd8e" kindref="member">u8_t</ref><sp/>*)<ref refid="structmemp" kindref="compound">memp</ref><sp/>+<sp/><ref refid="memp__priv_8h_1a7f8c378e0581aa2dc491cff52ae4fce2" kindref="member">MEMP_SIZE</ref><sp/>+<sp/>desc-><ref refid="structmemp__desc_1a1688d2bdd5a7b77700e1fa627f025ba3" kindref="member">size</ref></highlight></codeline> <codeline lineno="249"><highlight class="normal">#</highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/><ref refid="lwipopts_8h_1a27fdd01194a42fc41a7716b72cdb49e3" kindref="member">MEMP_OVERFLOW_CHECK</ref></highlight></codeline> <codeline lineno="250"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>+<sp/>MEMP_SANITY_REGION_AFTER_ALIGNED</highlight></codeline> <codeline lineno="251"><highlight class="normal">#endif</highlight></codeline> <codeline lineno="252"><highlight class="normal"><sp/><sp/><sp/><sp/>);</highlight></codeline> <codeline lineno="253"><highlight class="normal"><sp/><sp/>}</highlight></codeline> <codeline lineno="254"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_STATS</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="255"><highlight class="normal"><sp/><sp/>desc->stats->avail<sp/>=<sp/>desc-><ref refid="structmemp__desc_1a2c32db78e565b8812ca0e20fe929a8a7" kindref="member">num</ref>;</highlight></codeline> <codeline lineno="256"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>MEMP_STATS<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="257"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>!MEMP_MEM_MALLOC<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="258"><highlight class="normal"></highlight></codeline> <codeline lineno="259"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_STATS<sp/>&&<sp/>(defined(LWIP_DEBUG)<sp/>||<sp/>LWIP_STATS_DISPLAY)</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="260"><highlight class="normal"><sp/><sp/>desc->stats->name<sp/><sp/>=<sp/>desc->desc;</highlight></codeline> <codeline lineno="261"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>MEMP_STATS<sp/>&&<sp/>(defined(LWIP_DEBUG)<sp/>||<sp/>LWIP_STATS_DISPLAY)<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="262"><highlight class="normal">}</highlight></codeline> <codeline lineno="263"><highlight class="normal"></highlight></codeline> <codeline lineno="270"><highlight class="keywordtype">void</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="271" refid="memp_8c_1a9693e5b1ac2c6b9c0e7870522d45efa2" refkind="member"><highlight class="normal"><ref refid="memp_8c_1a9693e5b1ac2c6b9c0e7870522d45efa2" kindref="member">memp_init</ref>(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal">)</highlight></codeline> <codeline lineno="272"><highlight class="normal">{</highlight></codeline> <codeline lineno="273"><highlight class="normal"><sp/><sp/><ref refid="group__compiler__abstraction_1ga77570ac4fcab86864fa1916e55676da2" kindref="member">u16_t</ref><sp/>i;</highlight></codeline> <codeline lineno="274"><highlight class="normal"></highlight></codeline> <codeline lineno="275"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">/*<sp/>for<sp/>every<sp/>pool:<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="276"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(i<sp/>=<sp/>0;<sp/>i<sp/><<sp/><ref refid="def_8h_1a4abb61f4c9339d8a0a0c63b4fbfe6a37" kindref="member">LWIP_ARRAYSIZE</ref>(<ref refid="memp_8c_1ad78a1f656a766f2c6341aa466762b883" kindref="member">memp_pools</ref>);<sp/>i++)<sp/>{</highlight></codeline> <codeline lineno="277"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="memp_8c_1a6416303426d05526bed33f241fa6ecd7" kindref="member">memp_init_pool</ref>(<ref refid="memp_8c_1ad78a1f656a766f2c6341aa466762b883" kindref="member">memp_pools</ref>[i]);</highlight></codeline> <codeline lineno="278"><highlight class="normal"></highlight></codeline> <codeline lineno="279"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>LWIP_STATS<sp/>&&<sp/>MEMP_STATS</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="280"><highlight class="normal"><sp/><sp/><sp/><sp/>lwip_stats.memp[i]<sp/>=<sp/><ref refid="memp_8c_1ad78a1f656a766f2c6341aa466762b883" kindref="member">memp_pools</ref>[i]->stats;</highlight></codeline> <codeline lineno="281"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="282"><highlight class="normal"><sp/><sp/>}</highlight></codeline> <codeline lineno="283"><highlight class="normal"></highlight></codeline> <codeline lineno="284"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_OVERFLOW_CHECK<sp/>>=<sp/>2</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="285"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">/*<sp/>check<sp/>everything<sp/>a<sp/>first<sp/>time<sp/>to<sp/>see<sp/>if<sp/>it<sp/>worked<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="286"><highlight class="normal"><sp/><sp/>memp_overflow_check_all();</highlight></codeline> <codeline lineno="287"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>MEMP_OVERFLOW_CHECK<sp/>>=<sp/>2<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="288"><highlight class="normal">}</highlight></codeline> <codeline lineno="289"><highlight class="normal"></highlight></codeline> <codeline lineno="290"><highlight class="normal"></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal">*</highlight></codeline> <codeline lineno="291"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>!MEMP_OVERFLOW_CHECK</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="292"><highlight class="normal">do_memp_malloc_pool(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structmemp__desc" kindref="compound">memp_desc</ref><sp/>*desc)</highlight></codeline> <codeline lineno="293"><highlight class="normal"></highlight><highlight class="preprocessor">#else</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="294"><highlight class="normal">do_memp_malloc_pool_fn(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structmemp__desc" kindref="compound">memp_desc</ref><sp/>*desc,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/><ref refid="structfile" kindref="compound">file</ref>,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>line)</highlight></codeline> <codeline lineno="295"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="296"><highlight class="normal">{</highlight></codeline> <codeline lineno="297"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structmemp" kindref="compound">memp</ref><sp/>*<ref refid="structmemp" kindref="compound">memp</ref>;</highlight></codeline> <codeline lineno="298"><highlight class="normal"><sp/><sp/><ref refid="sys_8h_1a945395fa326214fc9736487242710a90" kindref="member">SYS_ARCH_DECL_PROTECT</ref>(old_level);</highlight></codeline> <codeline lineno="299"><highlight class="normal"></highlight></codeline> <codeline lineno="300"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_MEM_MALLOC</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="301"><highlight class="normal"><sp/><sp/><ref refid="structmemp" kindref="compound">memp</ref><sp/>=<sp/>(</highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structmemp" kindref="compound">memp</ref><sp/>*)<ref refid="mem_8h_1a932aa40d85b14cb7331625e012d12335" kindref="member">mem_malloc</ref>(<ref refid="memp__priv_8h_1a7f8c378e0581aa2dc491cff52ae4fce2" kindref="member">MEMP_SIZE</ref><sp/>+<sp/><ref refid="memp__std_8h_1a561ce9de860eb47d034ceeb7eff3b20c" kindref="member">MEMP_ALIGN_SIZE</ref>(desc-><ref refid="structmemp__desc_1a1688d2bdd5a7b77700e1fa627f025ba3" kindref="member">size</ref>));</highlight></codeline> <codeline lineno="302"><highlight class="normal"><sp/><sp/><ref refid="sys_8h_1a3d0e48feafd378e9c26c64567ecd8bab" kindref="member">SYS_ARCH_PROTECT</ref>(old_level);</highlight></codeline> <codeline lineno="303"><highlight class="normal"></highlight><highlight class="preprocessor">#else<sp/></highlight><highlight class="comment">/*<sp/>MEMP_MEM_MALLOC<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="304"><highlight class="normal"><sp/><sp/><ref refid="sys_8h_1a3d0e48feafd378e9c26c64567ecd8bab" kindref="member">SYS_ARCH_PROTECT</ref>(old_level);</highlight></codeline> <codeline lineno="305"><highlight class="normal"></highlight></codeline> <codeline lineno="306"><highlight class="normal"><sp/><sp/><ref refid="structmemp" kindref="compound">memp</ref><sp/>=<sp/>*desc-><ref refid="structmemp__desc_1a9d6b758ce5c3b47a67a7568d38fb3926" kindref="member">tab</ref>;</highlight></codeline> <codeline lineno="307"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>MEMP_MEM_MALLOC<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="308"><highlight class="normal"></highlight></codeline> <codeline lineno="309"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(<ref refid="structmemp" kindref="compound">memp</ref><sp/>!=<sp/><ref refid="fat__string_8h_1a070d2ce7b6bb7e5c05602aa8c308d0c4" kindref="member">NULL</ref>)<sp/>{</highlight></codeline> <codeline lineno="310"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>!MEMP_MEM_MALLOC</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="311"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_OVERFLOW_CHECK<sp/>==<sp/>1</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="312"><highlight class="normal"><sp/><sp/><sp/><sp/>memp_overflow_check_element_overflow(<ref refid="structmemp" kindref="compound">memp</ref>,<sp/>desc);</highlight></codeline> <codeline lineno="313"><highlight class="normal"><sp/><sp/><sp/><sp/>memp_overflow_check_element_underflow(<ref refid="structmemp" kindref="compound">memp</ref>,<sp/>desc);</highlight></codeline> <codeline lineno="314"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>MEMP_OVERFLOW_CHECK<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="315"><highlight class="normal"></highlight></codeline> <codeline lineno="316"><highlight class="normal"><sp/><sp/><sp/><sp/>*desc-><ref refid="structmemp__desc_1a9d6b758ce5c3b47a67a7568d38fb3926" kindref="member">tab</ref><sp/>=<sp/><ref refid="structmemp" kindref="compound">memp</ref>-><ref refid="structmemp_1a86abb86558e1cdee1bd2382f0323654d" kindref="member">next</ref>;</highlight></codeline> <codeline lineno="317"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_OVERFLOW_CHECK</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="318"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structmemp" kindref="compound">memp</ref>-><ref refid="structmemp_1a86abb86558e1cdee1bd2382f0323654d" kindref="member">next</ref><sp/>=<sp/><ref refid="fat__string_8h_1a070d2ce7b6bb7e5c05602aa8c308d0c4" kindref="member">NULL</ref>;</highlight></codeline> <codeline lineno="319"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>MEMP_OVERFLOW_CHECK<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="320"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>!MEMP_MEM_MALLOC<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="321"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_OVERFLOW_CHECK</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="322"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structmemp" kindref="compound">memp</ref>->file<sp/>=<sp/><ref refid="tcpdump_8c_1a03d2d7be521e9d357862075078d24f06" kindref="member">file</ref>;</highlight></codeline> <codeline lineno="323"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structmemp" kindref="compound">memp</ref>->line<sp/>=<sp/>line;</highlight></codeline> <codeline lineno="324"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_MEM_MALLOC</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="325"><highlight class="normal"><sp/><sp/><sp/><sp/>memp_overflow_init_element(<ref refid="structmemp" kindref="compound">memp</ref>,<sp/>desc);</highlight></codeline> <codeline lineno="326"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>MEMP_MEM_MALLOC<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="327"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>MEMP_OVERFLOW_CHECK<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="328"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="debug_8h_1a94ad086267808462beae2b38f91996ed" kindref="member">LWIP_ASSERT</ref>(</highlight><highlight class="stringliteral">"memp_malloc:<sp/>memp<sp/>properly<sp/>aligned"</highlight><highlight class="normal">,</highlight></codeline> <codeline lineno="329"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>((<ref refid="group__compiler__abstraction_1gaf019cbb71af10dcfda7758b21e655307" kindref="member">mem_ptr_t</ref>)<ref refid="structmemp" kindref="compound">memp</ref><sp/>%<sp/><ref refid="lwipopts_8h_1a97343214666ee6dcb18c0bd77b441ea7" kindref="member">MEM_ALIGNMENT</ref>)<sp/>==<sp/>0);</highlight></codeline> <codeline lineno="330"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_STATS</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="331"><highlight class="normal"><sp/><sp/><sp/><sp/>desc->stats->used++;</highlight></codeline> <codeline lineno="332"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(desc->stats->used<sp/>><sp/>desc->stats->max)<sp/>{</highlight></codeline> <codeline lineno="333"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>desc->stats->max<sp/>=<sp/>desc->stats->used;</highlight></codeline> <codeline lineno="334"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline> <codeline lineno="335"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="336"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="sys_8h_1a2f48e97047945642ddeb27e65bf4ffe2" kindref="member">SYS_ARCH_UNPROTECT</ref>(old_level);</highlight></codeline> <codeline lineno="337"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>cast<sp/>through<sp/>u8_t*<sp/>to<sp/>get<sp/>rid<sp/>of<sp/>alignment<sp/>warnings<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="338"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>((<ref refid="group__compiler__abstraction_1ga4caecabca98b43919dd11be1c0d4cd8e" kindref="member">u8_t</ref>*)<ref refid="structmemp" kindref="compound">memp</ref><sp/>+<sp/><ref refid="memp__priv_8h_1a7f8c378e0581aa2dc491cff52ae4fce2" kindref="member">MEMP_SIZE</ref>);</highlight></codeline> <codeline lineno="339"><highlight class="normal"><sp/><sp/>}<sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline> <codeline lineno="340"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="debug_8h_1a63a04edf7ff63c951bd8706711956cdb" kindref="member">LWIP_DEBUGF</ref>(<ref refid="lwipopts_8h_1ad80231923f7a808d49eba5ec57d63616" kindref="member">MEMP_DEBUG</ref><sp/>|<sp/><ref refid="group__debugging__levels_1ga0269bdc51f1e8a5ecf9af72c6e1c996c" kindref="member">LWIP_DBG_LEVEL_SERIOUS</ref>,<sp/>(</highlight><highlight class="stringliteral">"memp_malloc:<sp/>out<sp/>of<sp/>memory<sp/>in<sp/>pool<sp/>%s\n"</highlight><highlight class="normal">,<sp/>desc->desc));</highlight></codeline> <codeline lineno="341"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_STATS</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="342"><highlight class="normal"><sp/><sp/><sp/><sp/>desc->stats->err++;</highlight></codeline> <codeline lineno="343"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="344"><highlight class="normal"><sp/><sp/>}</highlight></codeline> <codeline lineno="345"><highlight class="normal"></highlight></codeline> <codeline lineno="346"><highlight class="normal"><sp/><sp/><ref refid="sys_8h_1a2f48e97047945642ddeb27e65bf4ffe2" kindref="member">SYS_ARCH_UNPROTECT</ref>(old_level);</highlight></codeline> <codeline lineno="347"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="fat__string_8h_1a070d2ce7b6bb7e5c05602aa8c308d0c4" kindref="member">NULL</ref>;</highlight></codeline> <codeline lineno="348"><highlight class="normal">}</highlight></codeline> <codeline lineno="349"><highlight class="normal"></highlight></codeline> <codeline lineno="357"><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*</highlight></codeline> <codeline lineno="358"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>!MEMP_OVERFLOW_CHECK</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="359" refid="memp_8c_1a348c83ee972f1edf7296a1cdf1d75f22" refkind="member"><highlight class="normal"><ref refid="memp_8c_1a348c83ee972f1edf7296a1cdf1d75f22" kindref="member">memp_malloc_pool</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structmemp__desc" kindref="compound">memp_desc</ref><sp/>*desc)</highlight></codeline> <codeline lineno="360"><highlight class="normal"></highlight><highlight class="preprocessor">#else</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="361"><highlight class="normal">memp_malloc_pool_fn(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structmemp__desc" kindref="compound">memp_desc</ref><sp/>*desc,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/><ref refid="structfile" kindref="compound">file</ref>,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>line)</highlight></codeline> <codeline lineno="362"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="363"><highlight class="normal">{</highlight></codeline> <codeline lineno="364"><highlight class="normal"><sp/><sp/><ref refid="debug_8h_1a94ad086267808462beae2b38f91996ed" kindref="member">LWIP_ASSERT</ref>(</highlight><highlight class="stringliteral">"invalid<sp/>pool<sp/>desc"</highlight><highlight class="normal">,<sp/>desc<sp/>!=<sp/><ref refid="fat__string_8h_1a070d2ce7b6bb7e5c05602aa8c308d0c4" kindref="member">NULL</ref>);</highlight></codeline> <codeline lineno="365"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(desc<sp/>==<sp/><ref refid="fat__string_8h_1a070d2ce7b6bb7e5c05602aa8c308d0c4" kindref="member">NULL</ref>)<sp/>{</highlight></codeline> <codeline lineno="366"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="fat__string_8h_1a070d2ce7b6bb7e5c05602aa8c308d0c4" kindref="member">NULL</ref>;</highlight></codeline> <codeline lineno="367"><highlight class="normal"><sp/><sp/>}</highlight></codeline> <codeline lineno="368"><highlight class="normal"></highlight></codeline> <codeline lineno="369"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>!MEMP_OVERFLOW_CHECK</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="370"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>do_memp_malloc_pool(desc);</highlight></codeline> <codeline lineno="371"><highlight class="normal"></highlight><highlight class="preprocessor">#else</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="372"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>do_memp_malloc_pool_fn(desc,<sp/><ref refid="structfile" kindref="compound">file</ref>,<sp/>line);</highlight></codeline> <codeline lineno="373"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="374"><highlight class="normal">}</highlight></codeline> <codeline lineno="375"><highlight class="normal"></highlight></codeline> <codeline lineno="383"><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*</highlight></codeline> <codeline lineno="384"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>!MEMP_OVERFLOW_CHECK</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="385" refid="memp_8c_1a2b00593d086313c267b54a976bf67aa5" refkind="member"><highlight class="normal"><ref refid="memp_8c_1a2b00593d086313c267b54a976bf67aa5" kindref="member">memp_malloc</ref>(<ref refid="memp_8h_1a85a164b1f7764951cc685ea525114e57" kindref="member">memp_t</ref><sp/>type)</highlight></codeline> <codeline lineno="386"><highlight class="normal"></highlight><highlight class="preprocessor">#else</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="387"><highlight class="normal">memp_malloc_fn(<ref refid="memp_8h_1a85a164b1f7764951cc685ea525114e57" kindref="member">memp_t</ref><sp/>type,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/><ref refid="structfile" kindref="compound">file</ref>,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>line)</highlight></codeline> <codeline lineno="388"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="389"><highlight class="normal">{</highlight></codeline> <codeline lineno="390"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*<ref refid="structmemp" kindref="compound">memp</ref>;</highlight></codeline> <codeline lineno="391"><highlight class="normal"><sp/><sp/><ref refid="debug_8h_1a827bc03cd7889e7c007df39d33b33d18" kindref="member">LWIP_ERROR</ref>(</highlight><highlight class="stringliteral">"memp_malloc:<sp/>type<sp/><<sp/>MEMP_MAX"</highlight><highlight class="normal">,<sp/>(type<sp/><<sp/><ref refid="memp_8h_1a85a164b1f7764951cc685ea525114e57a3387042084427642949f3223c7ddd321" kindref="member">MEMP_MAX</ref>),<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="fat__string_8h_1a070d2ce7b6bb7e5c05602aa8c308d0c4" kindref="member">NULL</ref>;);</highlight></codeline> <codeline lineno="392"><highlight class="normal"></highlight></codeline> <codeline lineno="393"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_OVERFLOW_CHECK<sp/>>=<sp/>2</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="394"><highlight class="normal"><sp/><sp/>memp_overflow_check_all();</highlight></codeline> <codeline lineno="395"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>MEMP_OVERFLOW_CHECK<sp/>>=<sp/>2<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="396"><highlight class="normal"></highlight></codeline> <codeline lineno="397"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>!MEMP_OVERFLOW_CHECK</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="398"><highlight class="normal"><sp/><sp/><ref refid="structmemp" kindref="compound">memp</ref><sp/>=<sp/>do_memp_malloc_pool(<ref refid="memp_8c_1ad78a1f656a766f2c6341aa466762b883" kindref="member">memp_pools</ref>[type]);</highlight></codeline> <codeline lineno="399"><highlight class="normal"></highlight><highlight class="preprocessor">#else</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="400"><highlight class="normal"><sp/><sp/><ref refid="structmemp" kindref="compound">memp</ref><sp/>=<sp/>do_memp_malloc_pool_fn(<ref refid="memp_8c_1ad78a1f656a766f2c6341aa466762b883" kindref="member">memp_pools</ref>[type],<sp/><ref refid="structfile" kindref="compound">file</ref>,<sp/>line);</highlight></codeline> <codeline lineno="401"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="402"><highlight class="normal"></highlight></codeline> <codeline lineno="403"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="structmemp" kindref="compound">memp</ref>;</highlight></codeline> <codeline lineno="404"><highlight class="normal">}</highlight></codeline> <codeline lineno="405"><highlight class="normal"></highlight></codeline> <codeline lineno="406"><highlight class="normal"></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="407"><highlight class="normal">do_memp_free_pool(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structmemp__desc" kindref="compound">memp_desc</ref>*<sp/>desc,<sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*<ref refid="structmem" kindref="compound">mem</ref>)</highlight></codeline> <codeline lineno="408"><highlight class="normal">{</highlight></codeline> <codeline lineno="409"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structmemp" kindref="compound">memp</ref><sp/>*<ref refid="structmemp" kindref="compound">memp</ref>;</highlight></codeline> <codeline lineno="410"><highlight class="normal"><sp/><sp/><ref refid="sys_8h_1a945395fa326214fc9736487242710a90" kindref="member">SYS_ARCH_DECL_PROTECT</ref>(old_level);</highlight></codeline> <codeline lineno="411"><highlight class="normal"></highlight></codeline> <codeline lineno="412"><highlight class="normal"><sp/><sp/><ref refid="debug_8h_1a94ad086267808462beae2b38f91996ed" kindref="member">LWIP_ASSERT</ref>(</highlight><highlight class="stringliteral">"memp_free:<sp/>mem<sp/>properly<sp/>aligned"</highlight><highlight class="normal">,</highlight></codeline> <codeline lineno="413"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>((<ref refid="group__compiler__abstraction_1gaf019cbb71af10dcfda7758b21e655307" kindref="member">mem_ptr_t</ref>)<ref refid="structmem" kindref="compound">mem</ref><sp/>%<sp/><ref refid="lwipopts_8h_1a97343214666ee6dcb18c0bd77b441ea7" kindref="member">MEM_ALIGNMENT</ref>)<sp/>==<sp/>0);</highlight></codeline> <codeline lineno="414"><highlight class="normal"></highlight></codeline> <codeline lineno="415"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">/*<sp/>cast<sp/>through<sp/>void*<sp/>to<sp/>get<sp/>rid<sp/>of<sp/>alignment<sp/>warnings<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="416"><highlight class="normal"><sp/><sp/><ref refid="structmemp" kindref="compound">memp</ref><sp/>=<sp/>(</highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structmemp" kindref="compound">memp</ref><sp/>*)(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*)((<ref refid="group__compiler__abstraction_1ga4caecabca98b43919dd11be1c0d4cd8e" kindref="member">u8_t</ref>*)<ref refid="structmem" kindref="compound">mem</ref><sp/>-<sp/><ref refid="memp__priv_8h_1a7f8c378e0581aa2dc491cff52ae4fce2" kindref="member">MEMP_SIZE</ref>);</highlight></codeline> <codeline lineno="417"><highlight class="normal"></highlight></codeline> <codeline lineno="418"><highlight class="normal"><sp/><sp/><ref refid="sys_8h_1a3d0e48feafd378e9c26c64567ecd8bab" kindref="member">SYS_ARCH_PROTECT</ref>(old_level);</highlight></codeline> <codeline lineno="419"><highlight class="normal"></highlight></codeline> <codeline lineno="420"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_OVERFLOW_CHECK<sp/>==<sp/>1</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="421"><highlight class="normal"><sp/><sp/>memp_overflow_check_element_overflow(<ref refid="structmemp" kindref="compound">memp</ref>,<sp/>desc);</highlight></codeline> <codeline lineno="422"><highlight class="normal"><sp/><sp/>memp_overflow_check_element_underflow(<ref refid="structmemp" kindref="compound">memp</ref>,<sp/>desc);</highlight></codeline> <codeline lineno="423"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>MEMP_OVERFLOW_CHECK<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="424"><highlight class="normal"></highlight></codeline> <codeline lineno="425"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_STATS</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="426"><highlight class="normal"><sp/><sp/>desc->stats->used--;</highlight></codeline> <codeline lineno="427"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="428"><highlight class="normal"></highlight></codeline> <codeline lineno="429"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_MEM_MALLOC</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="430"><highlight class="normal"><sp/><sp/><ref refid="group__compiler__abstraction_1ga70624a5deb8b9199406372a7f3603ecf" kindref="member">LWIP_UNUSED_ARG</ref>(desc);</highlight></codeline> <codeline lineno="431"><highlight class="normal"><sp/><sp/><ref refid="sys_8h_1a2f48e97047945642ddeb27e65bf4ffe2" kindref="member">SYS_ARCH_UNPROTECT</ref>(old_level);</highlight></codeline> <codeline lineno="432"><highlight class="normal"><sp/><sp/><ref refid="mem_8h_1a2fd7aa1adf6e394d3be7c7734e7df41a" kindref="member">mem_free</ref>(<ref refid="structmemp" kindref="compound">memp</ref>);</highlight></codeline> <codeline lineno="433"><highlight class="normal"></highlight><highlight class="preprocessor">#else<sp/></highlight><highlight class="comment">/*<sp/>MEMP_MEM_MALLOC<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="434"><highlight class="normal"><sp/><sp/><ref refid="structmemp" kindref="compound">memp</ref>-><ref refid="structmemp_1a86abb86558e1cdee1bd2382f0323654d" kindref="member">next</ref><sp/>=<sp/>*desc-><ref refid="structmemp__desc_1a9d6b758ce5c3b47a67a7568d38fb3926" kindref="member">tab</ref>;</highlight></codeline> <codeline lineno="435"><highlight class="normal"><sp/><sp/>*desc-><ref refid="structmemp__desc_1a9d6b758ce5c3b47a67a7568d38fb3926" kindref="member">tab</ref><sp/>=<sp/><ref refid="structmemp" kindref="compound">memp</ref>;</highlight></codeline> <codeline lineno="436"><highlight class="normal"></highlight></codeline> <codeline lineno="437"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_SANITY_CHECK</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="438"><highlight class="normal"><sp/><sp/><ref refid="debug_8h_1a94ad086267808462beae2b38f91996ed" kindref="member">LWIP_ASSERT</ref>(</highlight><highlight class="stringliteral">"memp<sp/>sanity"</highlight><highlight class="normal">,<sp/>memp_sanity(desc));</highlight></codeline> <codeline lineno="439"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>MEMP_SANITY_CHECK<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="440"><highlight class="normal"></highlight></codeline> <codeline lineno="441"><highlight class="normal"><sp/><sp/><ref refid="sys_8h_1a2f48e97047945642ddeb27e65bf4ffe2" kindref="member">SYS_ARCH_UNPROTECT</ref>(old_level);</highlight></codeline> <codeline lineno="442"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>!MEMP_MEM_MALLOC<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="443"><highlight class="normal">}</highlight></codeline> <codeline lineno="444"><highlight class="normal"></highlight></codeline> <codeline lineno="451"><highlight class="keywordtype">void</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="452" refid="memp_8c_1a62f8c3c907743e34eee3cdac7fa1eaa5" refkind="member"><highlight class="normal"><ref refid="memp_8c_1a62f8c3c907743e34eee3cdac7fa1eaa5" kindref="member">memp_free_pool</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structmemp__desc" kindref="compound">memp_desc</ref>*<sp/>desc,<sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*<ref refid="structmem" kindref="compound">mem</ref>)</highlight></codeline> <codeline lineno="453"><highlight class="normal">{</highlight></codeline> <codeline lineno="454"><highlight class="normal"><sp/><sp/><ref refid="debug_8h_1a94ad086267808462beae2b38f91996ed" kindref="member">LWIP_ASSERT</ref>(</highlight><highlight class="stringliteral">"invalid<sp/>pool<sp/>desc"</highlight><highlight class="normal">,<sp/>desc<sp/>!=<sp/><ref refid="fat__string_8h_1a070d2ce7b6bb7e5c05602aa8c308d0c4" kindref="member">NULL</ref>);</highlight></codeline> <codeline lineno="455"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>((desc<sp/>==<sp/><ref refid="fat__string_8h_1a070d2ce7b6bb7e5c05602aa8c308d0c4" kindref="member">NULL</ref>)<sp/>||<sp/>(<ref refid="structmem" kindref="compound">mem</ref><sp/>==<sp/><ref refid="fat__string_8h_1a070d2ce7b6bb7e5c05602aa8c308d0c4" kindref="member">NULL</ref>))<sp/>{</highlight></codeline> <codeline lineno="456"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">;</highlight></codeline> <codeline lineno="457"><highlight class="normal"><sp/><sp/>}</highlight></codeline> <codeline lineno="458"><highlight class="normal"></highlight></codeline> <codeline lineno="459"><highlight class="normal"><sp/><sp/>do_memp_free_pool(desc,<sp/><ref refid="structmem" kindref="compound">mem</ref>);</highlight></codeline> <codeline lineno="460"><highlight class="normal">}</highlight></codeline> <codeline lineno="461"><highlight class="normal"></highlight></codeline> <codeline lineno="468"><highlight class="keywordtype">void</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="469" refid="memp_8c_1aecd94926b7c2a0e23ae195f4ae97581f" refkind="member"><highlight class="normal"><ref refid="memp_8c_1aecd94926b7c2a0e23ae195f4ae97581f" kindref="member">memp_free</ref>(<ref refid="memp_8h_1a85a164b1f7764951cc685ea525114e57" kindref="member">memp_t</ref><sp/>type,<sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*<ref refid="structmem" kindref="compound">mem</ref>)</highlight></codeline> <codeline lineno="470"><highlight class="normal">{</highlight></codeline> <codeline lineno="471"><highlight class="normal"></highlight><highlight class="preprocessor">#ifdef<sp/>LWIP_HOOK_MEMP_AVAILABLE</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="472"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structmemp" kindref="compound">memp</ref><sp/>*old_first;</highlight></codeline> <codeline lineno="473"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="474"><highlight class="normal"></highlight></codeline> <codeline lineno="475"><highlight class="normal"><sp/><sp/><ref refid="debug_8h_1a827bc03cd7889e7c007df39d33b33d18" kindref="member">LWIP_ERROR</ref>(</highlight><highlight class="stringliteral">"memp_free:<sp/>type<sp/><<sp/>MEMP_MAX"</highlight><highlight class="normal">,<sp/>(type<sp/><<sp/><ref refid="memp_8h_1a85a164b1f7764951cc685ea525114e57a3387042084427642949f3223c7ddd321" kindref="member">MEMP_MAX</ref>),<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">;);</highlight></codeline> <codeline lineno="476"><highlight class="normal"></highlight></codeline> <codeline lineno="477"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(<ref refid="structmem" kindref="compound">mem</ref><sp/>==<sp/><ref refid="fat__string_8h_1a070d2ce7b6bb7e5c05602aa8c308d0c4" kindref="member">NULL</ref>)<sp/>{</highlight></codeline> <codeline lineno="478"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">;</highlight></codeline> <codeline lineno="479"><highlight class="normal"><sp/><sp/>}</highlight></codeline> <codeline lineno="480"><highlight class="normal"></highlight></codeline> <codeline lineno="481"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>MEMP_OVERFLOW_CHECK<sp/>>=<sp/>2</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="482"><highlight class="normal"><sp/><sp/>memp_overflow_check_all();</highlight></codeline> <codeline lineno="483"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>MEMP_OVERFLOW_CHECK<sp/>>=<sp/>2<sp/>*/</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="484"><highlight class="normal"></highlight></codeline> <codeline lineno="485"><highlight class="normal"></highlight><highlight class="preprocessor">#ifdef<sp/>LWIP_HOOK_MEMP_AVAILABLE</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="486"><highlight class="normal"><sp/><sp/>old_first<sp/>=<sp/>*<ref refid="memp_8c_1ad78a1f656a766f2c6341aa466762b883" kindref="member">memp_pools</ref>[type]-><ref refid="structmemp__desc_1a9d6b758ce5c3b47a67a7568d38fb3926" kindref="member">tab</ref>;</highlight></codeline> <codeline lineno="487"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="488"><highlight class="normal"></highlight></codeline> <codeline lineno="489"><highlight class="normal"><sp/><sp/>do_memp_free_pool(<ref refid="memp_8c_1ad78a1f656a766f2c6341aa466762b883" kindref="member">memp_pools</ref>[type],<sp/><ref refid="structmem" kindref="compound">mem</ref>);</highlight></codeline> <codeline lineno="490"><highlight class="normal"></highlight></codeline> <codeline lineno="491"><highlight class="normal"></highlight><highlight class="preprocessor">#ifdef<sp/>LWIP_HOOK_MEMP_AVAILABLE</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="492"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(old_first<sp/>==<sp/><ref refid="fat__string_8h_1a070d2ce7b6bb7e5c05602aa8c308d0c4" kindref="member">NULL</ref>)<sp/>{</highlight></codeline> <codeline lineno="493"><highlight class="normal"><sp/><sp/><sp/><sp/>LWIP_HOOK_MEMP_AVAILABLE(type);</highlight></codeline> <codeline lineno="494"><highlight class="normal"><sp/><sp/>}</highlight></codeline> <codeline lineno="495"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="496"><highlight class="normal">}</highlight></codeline> </programlisting> <location file="C:/Dev/git/UbixOS/sys/net/core/memp.c"/> </compounddef> </doxygen>