<?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.7.3"> <compounddef id="classpmt__pool" kind="class" prot="public"> <compoundname>pmt_pool</compoundname> <includes refid="pmt__pool_8h" local="no">pmt_pool.h</includes> <innerclass refid="structpmt__pool_1_1item" prot="private">pmt_pool::item</innerclass> <sectiondef kind="private-attrib"> <memberdef kind="variable" id="classpmt__pool_1adf04bf48cc2c9fde3eaea9a435f4cca5" prot="private" static="no" mutable="no"> <type><ref refid="classomni__mutex" kindref="compound">omni_mutex</ref></type> <definition>omni_mutex pmt_pool::d_mutex</definition> <argsstring></argsstring> <name>d_mutex</name> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/builddir/build/BUILD/gnuradio-3.2.2/pmt/src/lib/pmt_pool.h" line="40" bodyfile="/builddir/build/BUILD/gnuradio-3.2.2/pmt/src/lib/pmt_pool.h" bodystart="40" bodyend="-1"/> </memberdef> <memberdef kind="variable" id="classpmt__pool_1a228d6a1468d1846a1b4a1afa263ead54" prot="private" static="no" mutable="no"> <type><ref refid="classomni__condition" kindref="compound">omni_condition</ref></type> <definition>omni_condition pmt_pool::d_cond</definition> <argsstring></argsstring> <name>d_cond</name> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/builddir/build/BUILD/gnuradio-3.2.2/pmt/src/lib/pmt_pool.h" line="41" bodyfile="/builddir/build/BUILD/gnuradio-3.2.2/pmt/src/lib/pmt_pool.h" bodystart="41" bodyend="-1"/> </memberdef> <memberdef kind="variable" id="classpmt__pool_1a144313d8f903b3ec885c388e8db3d3c1" prot="private" static="no" mutable="no"> <type>size_t</type> <definition>size_t pmt_pool::d_itemsize</definition> <argsstring></argsstring> <name>d_itemsize</name> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/builddir/build/BUILD/gnuradio-3.2.2/pmt/src/lib/pmt_pool.h" line="43" bodyfile="/builddir/build/BUILD/gnuradio-3.2.2/pmt/src/lib/pmt_pool.h" bodystart="43" bodyend="-1"/> </memberdef> <memberdef kind="variable" id="classpmt__pool_1ae945c42d424fb05af1d9cc66de26e770" prot="private" static="no" mutable="no"> <type>size_t</type> <definition>size_t pmt_pool::d_alignment</definition> <argsstring></argsstring> <name>d_alignment</name> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/builddir/build/BUILD/gnuradio-3.2.2/pmt/src/lib/pmt_pool.h" line="44" bodyfile="/builddir/build/BUILD/gnuradio-3.2.2/pmt/src/lib/pmt_pool.h" bodystart="44" bodyend="-1"/> </memberdef> <memberdef kind="variable" id="classpmt__pool_1a8b3c3b3ae56bf5f4b9277b7adfed912e" prot="private" static="no" mutable="no"> <type>size_t</type> <definition>size_t pmt_pool::d_allocation_size</definition> <argsstring></argsstring> <name>d_allocation_size</name> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/builddir/build/BUILD/gnuradio-3.2.2/pmt/src/lib/pmt_pool.h" line="45" bodyfile="/builddir/build/BUILD/gnuradio-3.2.2/pmt/src/lib/pmt_pool.h" bodystart="45" bodyend="-1"/> </memberdef> <memberdef kind="variable" id="classpmt__pool_1a6c950dd2e0416557be0b30dca8a35b35" prot="private" static="no" mutable="no"> <type>size_t</type> <definition>size_t pmt_pool::d_max_items</definition> <argsstring></argsstring> <name>d_max_items</name> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/builddir/build/BUILD/gnuradio-3.2.2/pmt/src/lib/pmt_pool.h" line="46" bodyfile="/builddir/build/BUILD/gnuradio-3.2.2/pmt/src/lib/pmt_pool.h" bodystart="46" bodyend="-1"/> </memberdef> <memberdef kind="variable" id="classpmt__pool_1a1ebca864ac4b02288f47a395d75870bc" prot="private" static="no" mutable="no"> <type>size_t</type> <definition>size_t pmt_pool::d_n_items</definition> <argsstring></argsstring> <name>d_n_items</name> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/builddir/build/BUILD/gnuradio-3.2.2/pmt/src/lib/pmt_pool.h" line="47" bodyfile="/builddir/build/BUILD/gnuradio-3.2.2/pmt/src/lib/pmt_pool.h" bodystart="47" bodyend="-1"/> </memberdef> <memberdef kind="variable" id="classpmt__pool_1afaa87cf4abaec85a93a55a2d8b2c01ac" prot="private" static="no" mutable="no"> <type>item *</type> <definition>item* pmt_pool::d_freelist</definition> <argsstring></argsstring> <name>d_freelist</name> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/builddir/build/BUILD/gnuradio-3.2.2/pmt/src/lib/pmt_pool.h" line="48" bodyfile="/builddir/build/BUILD/gnuradio-3.2.2/pmt/src/lib/pmt_pool.h" bodystart="48" bodyend="-1"/> </memberdef> <memberdef kind="variable" id="classpmt__pool_1acbf6c432cac969cb60d6255ddae405f8" prot="private" static="no" mutable="no"> <type><ref refid="classstd_1_1vector" kindref="compound">std::vector</ref>< char * ></type> <definition>std::vector<char *> pmt_pool::d_allocations</definition> <argsstring></argsstring> <name>d_allocations</name> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/builddir/build/BUILD/gnuradio-3.2.2/pmt/src/lib/pmt_pool.h" line="49" bodyfile="/builddir/build/BUILD/gnuradio-3.2.2/pmt/src/lib/pmt_pool.h" bodystart="49" bodyend="-1"/> </memberdef> </sectiondef> <sectiondef kind="public-func"> <memberdef kind="function" id="classpmt__pool_1aff4e8d57d1441a79ccd0a7b6164f7e4e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type></type> <definition>pmt_pool::pmt_pool</definition> <argsstring>(size_t itemsize, size_t alignment=16, size_t allocation_size=4096, size_t max_items=0)</argsstring> <name>pmt_pool</name> <param> <type>size_t</type> <declname>itemsize</declname> </param> <param> <type>size_t</type> <declname>alignment</declname> <defval>16</defval> </param> <param> <type>size_t</type> <declname>allocation_size</declname> <defval>4096</defval> </param> <param> <type>size_t</type> <declname>max_items</declname> <defval>0</defval> </param> <briefdescription> </briefdescription> <detaileddescription> <para><parameterlist kind="param"><parameteritem> <parameternamelist> <parametername>itemsize</parametername> </parameternamelist> <parameterdescription> <para>size in bytes of the items to be allocated. </para></parameterdescription> </parameteritem> <parameteritem> <parameternamelist> <parametername>alignment</parametername> </parameternamelist> <parameterdescription> <para>alignment in bytes of all objects to be allocated (must be power-of-2). </para></parameterdescription> </parameteritem> <parameteritem> <parameternamelist> <parametername>allocation_size</parametername> </parameternamelist> <parameterdescription> <para>number of bytes to allocate at a time from the underlying allocator. </para></parameterdescription> </parameteritem> <parameteritem> <parameternamelist> <parametername>max_items</parametername> </parameternamelist> <parameterdescription> <para>is the maximum number of items to allocate. If this number is exceeded, the allocate blocks. 0 implies no limit. </para></parameterdescription> </parameteritem> </parameterlist> </para> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/builddir/build/BUILD/gnuradio-3.2.2/pmt/src/lib/pmt_pool.h" line="60"/> </memberdef> <memberdef kind="function" id="classpmt__pool_1aee7004d923b1a2bfef46c46d8e18a0eb" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type></type> <definition>pmt_pool::~pmt_pool</definition> <argsstring>()</argsstring> <name>~pmt_pool</name> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/builddir/build/BUILD/gnuradio-3.2.2/pmt/src/lib/pmt_pool.h" line="61"/> </memberdef> <memberdef kind="function" id="classpmt__pool_1a92d57a2f62e3b02693b86755e42a23c2" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void *</type> <definition>void* pmt_pool::malloc</definition> <argsstring>()</argsstring> <name>malloc</name> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/builddir/build/BUILD/gnuradio-3.2.2/pmt/src/lib/pmt_pool.h" line="63"/> </memberdef> <memberdef kind="function" id="classpmt__pool_1a949bba8b34cfa48772eecf8926cb475b" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void</type> <definition>void pmt_pool::free</definition> <argsstring>(void *p)</argsstring> <name>free</name> <param> <type>void *</type> <declname>p</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/builddir/build/BUILD/gnuradio-3.2.2/pmt/src/lib/pmt_pool.h" line="64"/> </memberdef> </sectiondef> <briefdescription> <para>very simple thread-safe fixed-size allocation pool </para> </briefdescription> <detaileddescription> <para>FIXME may want to go to global allocation with per-thread free list. This would eliminate virtually all lock contention. </para> </detaileddescription> <collaborationgraph> <node id="15859"> <label>std::vector< char * ></label> <link refid="classstd_1_1vector"/> </node> <node id="15858"> <label>pmt_pool</label> <link refid="classpmt__pool"/> <childnode refid="15859" relation="usage"> <edgelabel>d_allocations</edgelabel> </childnode> <childnode refid="15860" relation="usage"> <edgelabel>d_freelist</edgelabel> </childnode> <childnode refid="15861" relation="usage"> <edgelabel>d_cond</edgelabel> </childnode> <childnode refid="15862" relation="usage"> <edgelabel>d_mutex</edgelabel> </childnode> </node> <node id="15860"> <label>pmt_pool::item</label> <childnode refid="15860" relation="usage"> <edgelabel>d_next</edgelabel> </childnode> </node> <node id="15861"> <label>omni_condition</label> <link refid="classomni__condition"/> <childnode refid="15862" relation="usage"> <edgelabel>mutex</edgelabel> </childnode> </node> <node id="15862"> <label>omni_mutex</label> <link refid="classomni__mutex"/> </node> </collaborationgraph> <location file="/builddir/build/BUILD/gnuradio-3.2.2/pmt/src/lib/pmt_pool.h" line="34" bodyfile="/builddir/build/BUILD/gnuradio-3.2.2/pmt/src/lib/pmt_pool.h" bodystart="34" bodyend="65"/> <listofallmembers> <member refid="classpmt__pool_1ae945c42d424fb05af1d9cc66de26e770" prot="private" virt="non-virtual"><scope>pmt_pool</scope><name>d_alignment</name></member> <member refid="classpmt__pool_1a8b3c3b3ae56bf5f4b9277b7adfed912e" prot="private" virt="non-virtual"><scope>pmt_pool</scope><name>d_allocation_size</name></member> <member refid="classpmt__pool_1acbf6c432cac969cb60d6255ddae405f8" prot="private" virt="non-virtual"><scope>pmt_pool</scope><name>d_allocations</name></member> <member refid="classpmt__pool_1a228d6a1468d1846a1b4a1afa263ead54" prot="private" virt="non-virtual"><scope>pmt_pool</scope><name>d_cond</name></member> <member refid="classpmt__pool_1afaa87cf4abaec85a93a55a2d8b2c01ac" prot="private" virt="non-virtual"><scope>pmt_pool</scope><name>d_freelist</name></member> <member refid="classpmt__pool_1a144313d8f903b3ec885c388e8db3d3c1" prot="private" virt="non-virtual"><scope>pmt_pool</scope><name>d_itemsize</name></member> <member refid="classpmt__pool_1a6c950dd2e0416557be0b30dca8a35b35" prot="private" virt="non-virtual"><scope>pmt_pool</scope><name>d_max_items</name></member> <member refid="classpmt__pool_1adf04bf48cc2c9fde3eaea9a435f4cca5" prot="private" virt="non-virtual"><scope>pmt_pool</scope><name>d_mutex</name></member> <member refid="classpmt__pool_1a1ebca864ac4b02288f47a395d75870bc" prot="private" virt="non-virtual"><scope>pmt_pool</scope><name>d_n_items</name></member> <member refid="classpmt__pool_1a949bba8b34cfa48772eecf8926cb475b" prot="public" virt="non-virtual"><scope>pmt_pool</scope><name>free</name></member> <member refid="classpmt__pool_1a92d57a2f62e3b02693b86755e42a23c2" prot="public" virt="non-virtual"><scope>pmt_pool</scope><name>malloc</name></member> <member refid="classpmt__pool_1aff4e8d57d1441a79ccd0a7b6164f7e4e" prot="public" virt="non-virtual"><scope>pmt_pool</scope><name>pmt_pool</name></member> <member refid="classpmt__pool_1aee7004d923b1a2bfef46c46d8e18a0eb" prot="public" virt="non-virtual"><scope>pmt_pool</scope><name>~pmt_pool</name></member> </listofallmembers> </compounddef> </doxygen>