<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>oscl_error_imp_jumps.h File Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.2.18 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="modules.html">Modules</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </center>
<hr><h1>oscl_error_imp_jumps.h File Reference</h1>Implemenation of using Setjmp / Longjmp. 
<a href="#_details">More...</a>
<p>
<code>#include "<a class="el" href="oscl__error__trapcleanup_8h-source.html">oscl_error_trapcleanup.h</a>"</code><br>
<code>#include "<a class="el" href="oscl__assert_8h-source.html">oscl_assert.h</a>"</code><br>
<code>#include "<a class="el" href="osclconfig__error_8h-source.html">osclconfig_error.h</a>"</code><br>
<code>#include "<a class="el" href="oscl__defalloc_8h-source.html">oscl_defalloc.h</a>"</code><br>
<code>#include "<a class="el" href="oscl__error_8h-source.html">oscl_error.h</a>"</code><br>

<p>
<a href="oscl__error__imp__jumps_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
<tr><td nowrap align=right valign=top>class &nbsp;</td><td valign=bottom><a class="el" href="classOsclJump.html">OsclJump</a></td></tr>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__osclerror.html#a41">OSCL_JUMP_MAX_JUMP_MARKS</a>&nbsp;&nbsp;&nbsp;OSCL_MAX_TRAP_LEVELS</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__osclerror.html#a42">internalLeave</a>&nbsp;&nbsp;&nbsp;(-1)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="oscl__error__imp__jumps_8h.html#a2">PVError_DoLeave</a>()&nbsp;&nbsp;&nbsp;OsclJump::StaticJump(<a class="el" href="classinternalLeave.html">internalLeave</a>)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="oscl__error__imp__jumps_8h.html#a3">_PV_TRAP</a>(__r, __s)</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="oscl__error__imp__jumps_8h.html#a4">_PV_TRAP_NO_TLS</a>(__trapimp, __r, __s)</td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Implemenation of using Setjmp / Longjmp.
<p>

<p>
<hr><h2>Define Documentation</h2>
<a name="a3" doxytag="oscl_error_imp_jumps.h::_PV_TRAP"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> #define _PV_TRAP</td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">__r,         <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>__s&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp;          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
<b>Value:</b><div class="fragment"><pre>__r=<a class="code" href="group__osclerror.html#a11">OsclErrNone</a>;\
        {\
                <a class="code" href="classOsclErrorTrapImp.html">OsclErrorTrapImp</a>* __trap=<a class="code" href="classOsclErrorTrapImp.html#d0">OsclErrorTrapImp::Trap</a>();\
                <span class="keywordflow">if</span>(!__trap){__s;}<span class="keywordflow">else</span>{\
                <span class="keywordtype">int</span> __tr=setjmp(*(__trap-&gt;<a class="code" href="classOsclErrorTrapImp.html#m0">iJumpData</a>-&gt;<a class="code" href="classOsclJump.html#a1">Top</a>()));\
                <span class="keywordflow">if</span> (__tr==0)\
                {__s;}\
                <span class="keywordflow">else</span> <span class="keywordflow">if</span> (__tr==<a class="code" href="classinternalLeave.html">internalLeave</a>)\
                {__r=__trap-&gt;<a class="code" href="classOsclErrorTrapImp.html#m1">iLeave</a>;}\
                __trap-&gt;<a class="code" href="classOsclErrorTrapImp.html#a0">UnTrap</a>();}\
        }</pre></div>    </td>
  </tr>
</table>
<a name="a4" doxytag="oscl_error_imp_jumps.h::_PV_TRAP_NO_TLS"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> #define _PV_TRAP_NO_TLS</td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">__trapimp,         <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>__r,         <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>__s&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp;          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
<b>Value:</b><div class="fragment"><pre>__r=<a class="code" href="group__osclerror.html#a11">OsclErrNone</a>;\
        {\
                <a class="code" href="classOsclErrorTrapImp.html">OsclErrorTrapImp</a>* __trap=<a class="code" href="classOsclErrorTrapImp.html#d1">OsclErrorTrapImp::TrapNoTls</a>(__trapimp);\
                <span class="keywordflow">if</span>(!__trap){__s;}<span class="keywordflow">else</span>{\
                <span class="keywordtype">int</span> __tr=setjmp(*(__trap-&gt;<a class="code" href="classOsclErrorTrapImp.html#m0">iJumpData</a>-&gt;<a class="code" href="classOsclJump.html#a1">Top</a>()));\
                <span class="keywordflow">if</span> (__tr==0)\
                {__s;}\
                <span class="keywordflow">else</span> <span class="keywordflow">if</span> (__tr==<a class="code" href="classinternalLeave.html">internalLeave</a>)\
                {__r=__trap-&gt;<a class="code" href="classOsclErrorTrapImp.html#m1">iLeave</a>;}\
                __trap-&gt;<a class="code" href="classOsclErrorTrapImp.html#a0">UnTrap</a>();}\
        }</pre></div>    </td>
  </tr>
</table>
<a name="a2" doxytag="oscl_error_imp_jumps.h::PVError_DoLeave"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> #define PVError_DoLeave</td>
          <td class="md" valign="top">(&nbsp;</td>
&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp;          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap>&nbsp;&nbsp;&nbsp;OsclJump::StaticJump(<a class="el" href="classinternalLeave.html">internalLeave</a>)
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
    </td>
  </tr>
</table>
<hr size="1"><img src="pvlogo_small.jpg"><address style="align: right;"><small>OSCL API</small>
<address style="align: left;"><small>Posting Version: OPENCORE_20090310 </small>
</small></address>
</body>
</html>
