crashpad/doc/generated/doxygen/classcrashpad_1_1UniversalMachExcServer_1_1Interface.html
2018-08-01 13:34:49 -04:00

247 lines
14 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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 exceptions 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>