<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Crashpad: crashpad::UniversalMachExcServer::Interface Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="crashpad_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Crashpad
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespacecrashpad.html">crashpad</a></li><li class="navelem"><a class="el" href="classcrashpad_1_1UniversalMachExcServer.html">UniversalMachExcServer</a></li><li class="navelem"><a class="el" href="classcrashpad_1_1UniversalMachExcServer_1_1Interface.html">Interface</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classcrashpad_1_1UniversalMachExcServer_1_1Interface-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">crashpad::UniversalMachExcServer::Interface Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
</div><!--header-->
<div class="contents">

<p>An interface that the different request messages that are a part of the <code>exc</code> and <code>mach_exc</code> Mach subsystems can be dispatched to.  
 <a href="classcrashpad_1_1UniversalMachExcServer_1_1Interface.html#details">More...</a></p>

<p><code>#include &quot;util/mach/exc_server_variants.h&quot;</code></p>
<div class="dynheader">
Inheritance diagram for crashpad::UniversalMachExcServer::Interface:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classcrashpad_1_1UniversalMachExcServer_1_1Interface.png" usemap="#crashpad::UniversalMachExcServer::Interface_map" alt=""/>
  <map id="crashpad::UniversalMachExcServer::Interface_map" name="crashpad::UniversalMachExcServer::Interface_map">
<area href="classcrashpad_1_1CrashReportExceptionHandler.html" title="An exception handler that writes crash reports for exception messages to a CrashReportDatabase. " alt="crashpad::CrashReportExceptionHandler" shape="rect" coords="0,56,368,80"/>
<area href="classcrashpad_1_1test_1_1ExceptionSwallower_1_1ExceptionSwallowerThread.html" alt="crashpad::test::ExceptionSwallower::ExceptionSwallowerThread" shape="rect" coords="378,56,746,80"/>
</map>
 </div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a09d5a399d96f4142b97c50ea7390a4cc"><td class="memItemLeft" align="right" valign="top">virtual kern_return_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1UniversalMachExcServer_1_1Interface.html#a09d5a399d96f4142b97c50ea7390a4cc">CatchMachException</a> (exception_behavior_t behavior, exception_handler_t exception_port, thread_t thread, task_t task, exception_type_t exception, const mach_exception_data_type_t *code, mach_msg_type_number_t code_count, thread_state_flavor_t *flavor, <a class="el" href="namespacecrashpad.html#a72fa9ea632f7f1ec93ec3c1b1d300db6">ConstThreadState</a> old_state, mach_msg_type_number_t old_state_count, thread_state_t new_state, mach_msg_type_number_t *new_state_count, const mach_msg_trailer_t *trailer, bool *destroy_complex_request)=0</td></tr>
<tr class="memdesc:a09d5a399d96f4142b97c50ea7390a4cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handles exceptions raised by <code>exception_raise()</code>, <code>exception_raise_state()</code>, <code>exception_raise_state_identity()</code>, <code>mach_exception_raise()</code>, <code>mach_exception_raise_state()</code>, and <code>mach_exception_raise_state_identity()</code>.  <a href="#a09d5a399d96f4142b97c50ea7390a4cc">More...</a><br /></td></tr>
<tr class="separator:a09d5a399d96f4142b97c50ea7390a4cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>An interface that the different request messages that are a part of the <code>exc</code> and <code>mach_exc</code> Mach subsystems can be dispatched to. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a09d5a399d96f4142b97c50ea7390a4cc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a09d5a399d96f4142b97c50ea7390a4cc">&#9670;&nbsp;</a></span>CatchMachException()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual kern_return_t crashpad::UniversalMachExcServer::Interface::CatchMachException </td>
          <td>(</td>
          <td class="paramtype">exception_behavior_t&#160;</td>
          <td class="paramname"><em>behavior</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">exception_handler_t&#160;</td>
          <td class="paramname"><em>exception_port</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">thread_t&#160;</td>
          <td class="paramname"><em>thread</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">task_t&#160;</td>
          <td class="paramname"><em>task</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">exception_type_t&#160;</td>
          <td class="paramname"><em>exception</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const mach_exception_data_type_t *&#160;</td>
          <td class="paramname"><em>code</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">mach_msg_type_number_t&#160;</td>
          <td class="paramname"><em>code_count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">thread_state_flavor_t *&#160;</td>
          <td class="paramname"><em>flavor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespacecrashpad.html#a72fa9ea632f7f1ec93ec3c1b1d300db6">ConstThreadState</a>&#160;</td>
          <td class="paramname"><em>old_state</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">mach_msg_type_number_t&#160;</td>
          <td class="paramname"><em>old_state_count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">thread_state_t&#160;</td>
          <td class="paramname"><em>new_state</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">mach_msg_type_number_t *&#160;</td>
          <td class="paramname"><em>new_state_count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const mach_msg_trailer_t *&#160;</td>
          <td class="paramname"><em>trailer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool *&#160;</td>
          <td class="paramname"><em>destroy_complex_request</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Handles exceptions raised by <code>exception_raise()</code>, <code>exception_raise_state()</code>, <code>exception_raise_state_identity()</code>, <code>mach_exception_raise()</code>, <code>mach_exception_raise_state()</code>, and <code>mach_exception_raise_state_identity()</code>. </p>
<p>For convenience in implementation, these different “behaviors” of exception messages are all mapped to a single interface method. The exception’s original “behavior” is specified in the <em>behavior</em> parameter. Only parameters that were supplied in the request message are populated, other parameters are set to reasonable default values.</p>
<p>This behaves equivalently to a <code>catch_exception_raise_state_identity()</code> function used with <code>exc_server()</code>, or a <code>catch_mach_exception_raise_state_identity()</code> function used with <code>mach_exc_server()</code>. Except as noted, the parameters and return value are equivalent to those of these other functions.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">behavior</td><td><code>EXCEPTION_DEFAULT</code>, <code>EXCEPTION_STATE</code>, or <code>EXCEPTION_STATE_IDENTITY</code>, possibly with <code>MACH_EXCEPTION_CODES</code> ORed in. This identifies which exception request message was processed and thus which other parameters are valid. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">exception_port</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">thread</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">task</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">exception</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">code</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">code_count</td><td></td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">flavor</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">old_state</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">old_state_count</td><td></td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">new_state</td><td></td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">new_state_count</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">trailer</td><td>The trailer received with the request message. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">destroy_complex_request</td><td><code>true</code> if the request message is to be destroyed even when this method returns success. See <a class="el" href="classcrashpad_1_1MachMessageServer_1_1Interface.html" title="A Mach RPC callback interface, called by Run(). ">MachMessageServer::Interface</a>.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A code indicating whether the exception was handled. See <a class="el" href="namespacecrashpad.html#a2112e7fcb6a2fc7f9b6b0ff8856e8466" title="Computes an approriate successful return value for an exception handler function. ...">ExcServerSuccessfulReturnValue()</a> for success codes. On failure, a code such as <code>KERN_FAILURE</code>. </dd></dl>

<p>Implemented in <a class="el" href="classcrashpad_1_1CrashReportExceptionHandler.html#a98ecf7abdf0a99fe30b6fa7116649bee">crashpad::CrashReportExceptionHandler</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>util/mach/exc_server_variants.h</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.14
</small></address>
</body>
</html>
