<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>GNU Radio 3.2.2 C++ API: mb_worker Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="navtree.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="navtree.js"></script> <script type="text/javascript" src="resize.js"></script> <script type="text/javascript"> $(document).ready(initResizable); </script> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.7.3 --> <div id="top"> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">GNU Radio 3.2.2 C++ API</div> </td> </tr> </tbody> </table> </div> </div> <div id="side-nav" class="ui-resizable side-nav-resizable"> <div id="nav-tree"> <div id="nav-tree-contents"> </div> </div> <div id="splitbar" style="-moz-user-select:none;" class="ui-resizable-handle"> </div> </div> <script type="text/javascript"> initNavTree('classmb__worker.html',''); </script> <div id="doc-content"> <div class="header"> <div class="summary"> <a href="#pub-types">Public Types</a> | <a href="#pub-methods">Public Member Functions</a> | <a href="#pub-attribs">Public Attributes</a> </div> <div class="headertitle"> <h1>mb_worker Class Reference</h1> </div> </div> <div class="contents"> <!-- doxytag: class="mb_worker" --><!-- doxytag: inherits="omni_thread" --> <p>Worker thread for thread_per_block runtime. <a href="#_details">More...</a></p> <p><code>#include <<a class="el" href="mb__worker_8h_source.html">mb_worker.h</a>></code></p> <div class="dynheader"> Inheritance diagram for mb_worker:</div> <div class="dyncontent"> <div class="center"><img src="classmb__worker__inherit__graph.png" border="0" usemap="#mb__worker_inherit__map" alt="Inheritance graph"/></div> <map name="mb__worker_inherit__map" id="mb__worker_inherit__map"> <area shape="rect" id="node2" href="classomni__thread.html" title="omni_thread" alt="" coords="5,5,99,35"/></map> <center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div> <p><a href="classmb__worker-members.html">List of all members.</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="pub-types"></a> Public Types</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="classmb__worker.html#ac410c295946a025dd788e9cf9034f745">worker_state_t</a> { <a class="el" href="classmb__worker.html#ac410c295946a025dd788e9cf9034f745aeb827490caec6206790cc92f078d6dfb">TS_UNINITIALIZED</a>, <a class="el" href="classmb__worker.html#ac410c295946a025dd788e9cf9034f745afdbe9320c830fc202c5652c617390d96">TS_RUNNING</a>, <a class="el" href="classmb__worker.html#ac410c295946a025dd788e9cf9034f745af3c637c45bd64a2b87e8d3700799e418">TS_DEAD</a> }</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight"><p>worker thread states </p> <a href="classmb__worker.html#ac410c295946a025dd788e9cf9034f745">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="classmb__worker.html#a9f6256e32f8b4e7d2e4fd537a6a17b02">cause_of_death_t</a> { <br/>   <a class="el" href="classmb__worker.html#a9f6256e32f8b4e7d2e4fd537a6a17b02aa2b6ade7702ba52e7da90c9e7d9f2ac3">RIP_NOT_DEAD_YET</a>, <a class="el" href="classmb__worker.html#a9f6256e32f8b4e7d2e4fd537a6a17b02aef884c2a5b5589073cd3777169a93632">RIP_EXIT</a>, <a class="el" href="classmb__worker.html#a9f6256e32f8b4e7d2e4fd537a6a17b02acbf5fe8063ac8a50e0effb96e1dcc250">RIP_TERMINATE</a>, <a class="el" href="classmb__worker.html#a9f6256e32f8b4e7d2e4fd537a6a17b02a38e47edc663e71d39ac722acf43d05ec">RIP_CTOR_EXCEPTION</a>, <br/>   <a class="el" href="classmb__worker.html#a9f6256e32f8b4e7d2e4fd537a6a17b02aa9589f808a55bece53b590e9dbb7676c">RIP_INIT_EXCEPTION</a>, <a class="el" href="classmb__worker.html#a9f6256e32f8b4e7d2e4fd537a6a17b02adf6a083744718bfcb872dcce7b215d71">RIP_UNHANDLED_EXCEPTION</a> <br/> }</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight"><p>why we're dead </p> <a href="classmb__worker.html#a9f6256e32f8b4e7d2e4fd537a6a17b02">More...</a><br/></td></tr> <tr><td colspan="2"><h2><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmb__worker.html#ab4e5c6fbfc44db5d68972514f5d802aa">mb_worker</a> (<a class="el" href="classmb__runtime__thread__per__block.html">mb_runtime_thread_per_block</a> *runtime, <a class="el" href="class__registry_8h.html#a313bf6707487be5d46232006b8aee4b6">mb_mblock_maker_t</a> maker, const std::string &instance_name, <a class="el" href="classboost_1_1shared__ptr.html">pmt_t</a> user_arg)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmb__worker.html#a56d11f06e23c740bc869b8f92a693eed">worker_thread_top_level</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">This code runs as the top-level of the new thread. <a href="#a56d11f06e23c740bc869b8f92a693eed"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="classmb__worker.html#abb4f88a874da8c91ed7360df011c2f0d">run_undetached</a> (void *arg)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Invokes the top-level of the new thread (name kind of sucks) <a href="#abb4f88a874da8c91ed7360df011c2f0d"></a><br/></td></tr> <tr><td colspan="2"><h2><a name="pub-attribs"></a> Public Attributes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmb__runtime__thread__per__block.html">mb_runtime_thread_per_block</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classmb__worker.html#a8d10ba41e1eb08041f03e222a1e21419">d_runtime</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class__registry_8h.html#a313bf6707487be5d46232006b8aee4b6">mb_mblock_maker_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmb__worker.html#ab111c0d527b6b8d7e5b0a6c5c482106b">d_maker</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classmb__worker.html#ad94772d2edef340acca68145685973c3">d_instance_name</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1shared__ptr.html">pmt_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmb__worker.html#a1acff2f3eec3d0edc8decd30d6c91e31">d_user_arg</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1shared__ptr.html">mb_mblock_sptr</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmb__worker.html#ab3eb2f8e45276f5aae6f19baf2b0881c">d_mblock</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classomni__mutex.html">omni_mutex</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmb__worker.html#a31aba7ef953582a5c38ee7871973c231">d_mutex</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">General mutex for all these fields. <a href="#a31aba7ef953582a5c38ee7871973c231"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classomni__condition.html">omni_condition</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmb__worker.html#af209e2de3d2fa64e7ad10945d8a46fc9">d_state_cond</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmb__worker.html#ac410c295946a025dd788e9cf9034f745">worker_state_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmb__worker.html#a55f3cc58d6ec8d42af3423e33585932f">d_state</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmb__worker.html#a9f6256e32f8b4e7d2e4fd537a6a17b02">cause_of_death_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmb__worker.html#a4d8bcd48aa9024659206ee295e190ee8">d_why_dead</a></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <div class="textblock"><p>Worker thread for thread_per_block runtime. </p> </div><hr/><h2>Member Enumeration Documentation</h2> <a class="anchor" id="a9f6256e32f8b4e7d2e4fd537a6a17b02"></a><!-- doxytag: member="mb_worker::cause_of_death_t" ref="a9f6256e32f8b4e7d2e4fd537a6a17b02" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="classmb__worker.html#a9f6256e32f8b4e7d2e4fd537a6a17b02">mb_worker::cause_of_death_t</a></td> </tr> </table> </div> <div class="memdoc"> <p>why we're dead </p> <dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><em><a class="anchor" id="a9f6256e32f8b4e7d2e4fd537a6a17b02aa2b6ade7702ba52e7da90c9e7d9f2ac3"></a><!-- doxytag: member="RIP_NOT_DEAD_YET" ref="a9f6256e32f8b4e7d2e4fd537a6a17b02aa2b6ade7702ba52e7da90c9e7d9f2ac3" args="" -->RIP_NOT_DEAD_YET</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" id="a9f6256e32f8b4e7d2e4fd537a6a17b02aef884c2a5b5589073cd3777169a93632"></a><!-- doxytag: member="RIP_EXIT" ref="a9f6256e32f8b4e7d2e4fd537a6a17b02aef884c2a5b5589073cd3777169a93632" args="" -->RIP_EXIT</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" id="a9f6256e32f8b4e7d2e4fd537a6a17b02acbf5fe8063ac8a50e0effb96e1dcc250"></a><!-- doxytag: member="RIP_TERMINATE" ref="a9f6256e32f8b4e7d2e4fd537a6a17b02acbf5fe8063ac8a50e0effb96e1dcc250" args="" -->RIP_TERMINATE</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" id="a9f6256e32f8b4e7d2e4fd537a6a17b02a38e47edc663e71d39ac722acf43d05ec"></a><!-- doxytag: member="RIP_CTOR_EXCEPTION" ref="a9f6256e32f8b4e7d2e4fd537a6a17b02a38e47edc663e71d39ac722acf43d05ec" args="" -->RIP_CTOR_EXCEPTION</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" id="a9f6256e32f8b4e7d2e4fd537a6a17b02aa9589f808a55bece53b590e9dbb7676c"></a><!-- doxytag: member="RIP_INIT_EXCEPTION" ref="a9f6256e32f8b4e7d2e4fd537a6a17b02aa9589f808a55bece53b590e9dbb7676c" args="" -->RIP_INIT_EXCEPTION</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" id="a9f6256e32f8b4e7d2e4fd537a6a17b02adf6a083744718bfcb872dcce7b215d71"></a><!-- doxytag: member="RIP_UNHANDLED_EXCEPTION" ref="a9f6256e32f8b4e7d2e4fd537a6a17b02adf6a083744718bfcb872dcce7b215d71" args="" -->RIP_UNHANDLED_EXCEPTION</em> </td><td> </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="ac410c295946a025dd788e9cf9034f745"></a><!-- doxytag: member="mb_worker::worker_state_t" ref="ac410c295946a025dd788e9cf9034f745" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="classmb__worker.html#ac410c295946a025dd788e9cf9034f745">mb_worker::worker_state_t</a></td> </tr> </table> </div> <div class="memdoc"> <p>worker thread states </p> <dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><em><a class="anchor" id="ac410c295946a025dd788e9cf9034f745aeb827490caec6206790cc92f078d6dfb"></a><!-- doxytag: member="TS_UNINITIALIZED" ref="ac410c295946a025dd788e9cf9034f745aeb827490caec6206790cc92f078d6dfb" args="" -->TS_UNINITIALIZED</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" id="ac410c295946a025dd788e9cf9034f745afdbe9320c830fc202c5652c617390d96"></a><!-- doxytag: member="TS_RUNNING" ref="ac410c295946a025dd788e9cf9034f745afdbe9320c830fc202c5652c617390d96" args="" -->TS_RUNNING</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" id="ac410c295946a025dd788e9cf9034f745af3c637c45bd64a2b87e8d3700799e418"></a><!-- doxytag: member="TS_DEAD" ref="ac410c295946a025dd788e9cf9034f745af3c637c45bd64a2b87e8d3700799e418" args="" -->TS_DEAD</em> </td><td> </td></tr> </table> </dd> </dl> </div> </div> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="ab4e5c6fbfc44db5d68972514f5d802aa"></a><!-- doxytag: member="mb_worker::mb_worker" ref="ab4e5c6fbfc44db5d68972514f5d802aa" args="(mb_runtime_thread_per_block *runtime, mb_mblock_maker_t maker, const std::string &instance_name, pmt_t user_arg)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">mb_worker::mb_worker </td> <td>(</td> <td class="paramtype"><a class="el" href="classmb__runtime__thread__per__block.html">mb_runtime_thread_per_block</a> * </td> <td class="paramname"><em>runtime</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="class__registry_8h.html#a313bf6707487be5d46232006b8aee4b6">mb_mblock_maker_t</a> </td> <td class="paramname"><em>maker</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const std::string & </td> <td class="paramname"><em>instance_name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classboost_1_1shared__ptr.html">pmt_t</a> </td> <td class="paramname"><em>user_arg</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="abb4f88a874da8c91ed7360df011c2f0d"></a><!-- doxytag: member="mb_worker::run_undetached" ref="abb4f88a874da8c91ed7360df011c2f0d" args="(void *arg)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void* mb_worker::run_undetached </td> <td>(</td> <td class="paramtype">void * </td> <td class="paramname"><em>arg</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Invokes the top-level of the new thread (name kind of sucks) </p> <p>Reimplemented from <a class="el" href="classomni__thread.html">omni_thread</a>.</p> </div> </div> <a class="anchor" id="a56d11f06e23c740bc869b8f92a693eed"></a><!-- doxytag: member="mb_worker::worker_thread_top_level" ref="a56d11f06e23c740bc869b8f92a693eed" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mb_worker::worker_thread_top_level </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>This code runs as the top-level of the new thread. </p> </div> </div> <hr/><h2>Member Data Documentation</h2> <a class="anchor" id="ad94772d2edef340acca68145685973c3"></a><!-- doxytag: member="mb_worker::d_instance_name" ref="ad94772d2edef340acca68145685973c3" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">std::string <a class="el" href="classmb__worker.html#ad94772d2edef340acca68145685973c3">mb_worker::d_instance_name</a></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="ab111c0d527b6b8d7e5b0a6c5c482106b"></a><!-- doxytag: member="mb_worker::d_maker" ref="ab111c0d527b6b8d7e5b0a6c5c482106b" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="class__registry_8h.html#a313bf6707487be5d46232006b8aee4b6">mb_mblock_maker_t</a> <a class="el" href="classmb__worker.html#ab111c0d527b6b8d7e5b0a6c5c482106b">mb_worker::d_maker</a></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="ab3eb2f8e45276f5aae6f19baf2b0881c"></a><!-- doxytag: member="mb_worker::d_mblock" ref="ab3eb2f8e45276f5aae6f19baf2b0881c" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classboost_1_1shared__ptr.html">mb_mblock_sptr</a> <a class="el" href="classmb__worker.html#ab3eb2f8e45276f5aae6f19baf2b0881c">mb_worker::d_mblock</a></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a31aba7ef953582a5c38ee7871973c231"></a><!-- doxytag: member="mb_worker::d_mutex" ref="a31aba7ef953582a5c38ee7871973c231" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classomni__mutex.html">omni_mutex</a> <a class="el" href="classmb__worker.html#a31aba7ef953582a5c38ee7871973c231">mb_worker::d_mutex</a></td> </tr> </table> </div> <div class="memdoc"> <p>General mutex for all these fields. </p> <p>They are accessed by both the main runtime thread and the newly created thread that runs the mblock's main loop. </p> </div> </div> <a class="anchor" id="a8d10ba41e1eb08041f03e222a1e21419"></a><!-- doxytag: member="mb_worker::d_runtime" ref="a8d10ba41e1eb08041f03e222a1e21419" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classmb__runtime__thread__per__block.html">mb_runtime_thread_per_block</a>* <a class="el" href="classmb__worker.html#a8d10ba41e1eb08041f03e222a1e21419">mb_worker::d_runtime</a></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a55f3cc58d6ec8d42af3423e33585932f"></a><!-- doxytag: member="mb_worker::d_state" ref="a55f3cc58d6ec8d42af3423e33585932f" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classmb__worker.html#ac410c295946a025dd788e9cf9034f745">worker_state_t</a> <a class="el" href="classmb__worker.html#a55f3cc58d6ec8d42af3423e33585932f">mb_worker::d_state</a></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="af209e2de3d2fa64e7ad10945d8a46fc9"></a><!-- doxytag: member="mb_worker::d_state_cond" ref="af209e2de3d2fa64e7ad10945d8a46fc9" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classomni__condition.html">omni_condition</a> <a class="el" href="classmb__worker.html#af209e2de3d2fa64e7ad10945d8a46fc9">mb_worker::d_state_cond</a></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a1acff2f3eec3d0edc8decd30d6c91e31"></a><!-- doxytag: member="mb_worker::d_user_arg" ref="a1acff2f3eec3d0edc8decd30d6c91e31" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classboost_1_1shared__ptr.html">pmt_t</a> <a class="el" href="classmb__worker.html#a1acff2f3eec3d0edc8decd30d6c91e31">mb_worker::d_user_arg</a></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a4d8bcd48aa9024659206ee295e190ee8"></a><!-- doxytag: member="mb_worker::d_why_dead" ref="a4d8bcd48aa9024659206ee295e190ee8" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classmb__worker.html#a9f6256e32f8b4e7d2e4fd537a6a17b02">cause_of_death_t</a> <a class="el" href="classmb__worker.html#a4d8bcd48aa9024659206ee295e190ee8">mb_worker::d_why_dead</a></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <hr/>The documentation for this class was generated from the following file:<ul> <li><a class="el" href="mb__worker_8h_source.html">mb_worker.h</a></li> </ul> </div> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="classmb__worker.html">mb_worker</a> </li> <li class="footer">Generated on Thu Feb 17 2011 for GNU Radio 3.2.2 C++ API by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </li> </ul> </div> </body> </html>