<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.18"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Crashpad: crashpad::Signals 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.18 -->
<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_1Signals.html">Signals</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="classcrashpad_1_1Signals-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">crashpad::Signals Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Utilities for handling POSIX signals.  
 <a href="classcrashpad_1_1Signals.html#details">More...</a></p>

<p><code>#include &quot;util/posix/signals.h&quot;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1Signals_1_1OldActions.html">OldActions</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A group of <code>struct sigaction</code> structures corresponding to a set of signals’&#160;previous actions, addressable by signal number.  <a href="classcrashpad_1_1Signals_1_1OldActions.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a0e1accccdf6e8c68f746b8a56b52785b"><td class="memItemLeft" align="right" valign="top"><a id="a0e1accccdf6e8c68f746b8a56b52785b"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1Signals.html#a0e1accccdf6e8c68f746b8a56b52785b">Handler</a> = void(*)(int, siginfo_t *, void *)</td></tr>
<tr class="memdesc:a0e1accccdf6e8c68f746b8a56b52785b"><td class="mdescLeft">&#160;</td><td class="mdescRight">The type used for <code>struct sigaction::sa_sigaction</code>. <br /></td></tr>
<tr class="separator:a0e1accccdf6e8c68f746b8a56b52785b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a7d0ddf78702d8272d45446f4d6d23811"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1Signals.html#a7d0ddf78702d8272d45446f4d6d23811">InstallHandler</a> (int sig, <a class="el" href="classcrashpad_1_1Signals.html#a0e1accccdf6e8c68f746b8a56b52785b">Handler</a> handler, int flags, struct sigaction *old_action)</td></tr>
<tr class="memdesc:a7d0ddf78702d8272d45446f4d6d23811"><td class="mdescLeft">&#160;</td><td class="mdescRight">Installs a new signal handler.  <a href="classcrashpad_1_1Signals.html#a7d0ddf78702d8272d45446f4d6d23811">More...</a><br /></td></tr>
<tr class="separator:a7d0ddf78702d8272d45446f4d6d23811"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46c25d43264336b48afa913a29aef45b"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1Signals.html#a46c25d43264336b48afa913a29aef45b">InstallDefaultHandler</a> (int sig)</td></tr>
<tr class="memdesc:a46c25d43264336b48afa913a29aef45b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Installs <code>SIG_DFL</code> for the signal <em>sig</em>.  <a href="classcrashpad_1_1Signals.html#a46c25d43264336b48afa913a29aef45b">More...</a><br /></td></tr>
<tr class="separator:a46c25d43264336b48afa913a29aef45b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2915876d6786521e6616049fe2a5f055"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1Signals.html#a2915876d6786521e6616049fe2a5f055">InstallCrashHandlers</a> (<a class="el" href="classcrashpad_1_1Signals.html#a0e1accccdf6e8c68f746b8a56b52785b">Handler</a> handler, int flags, <a class="el" href="classcrashpad_1_1Signals_1_1OldActions.html">OldActions</a> *old_actions, const std::set&lt; int &gt; *unhandled_signals=nullptr)</td></tr>
<tr class="memdesc:a2915876d6786521e6616049fe2a5f055"><td class="mdescLeft">&#160;</td><td class="mdescRight">Installs a new signal handler for all signals associated with crashes.  <a href="classcrashpad_1_1Signals.html#a2915876d6786521e6616049fe2a5f055">More...</a><br /></td></tr>
<tr class="separator:a2915876d6786521e6616049fe2a5f055"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5ae38c6eac880fa377e2ef6e871aa9b"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1Signals.html#af5ae38c6eac880fa377e2ef6e871aa9b">InstallTerminateHandlers</a> (<a class="el" href="classcrashpad_1_1Signals.html#a0e1accccdf6e8c68f746b8a56b52785b">Handler</a> handler, int flags, <a class="el" href="classcrashpad_1_1Signals_1_1OldActions.html">OldActions</a> *old_actions)</td></tr>
<tr class="memdesc:af5ae38c6eac880fa377e2ef6e871aa9b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Installs a new signal handler for all signals associated with termination.  <a href="classcrashpad_1_1Signals.html#af5ae38c6eac880fa377e2ef6e871aa9b">More...</a><br /></td></tr>
<tr class="separator:af5ae38c6eac880fa377e2ef6e871aa9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b8de5e2464d8b4cbd9edc3729fe5aae"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1Signals.html#a8b8de5e2464d8b4cbd9edc3729fe5aae">WillSignalReraiseAutonomously</a> (const siginfo_t *siginfo)</td></tr>
<tr class="memdesc:a8b8de5e2464d8b4cbd9edc3729fe5aae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines whether a signal will be re-raised autonomously upon return from a signal handler.  <a href="classcrashpad_1_1Signals.html#a8b8de5e2464d8b4cbd9edc3729fe5aae">More...</a><br /></td></tr>
<tr class="separator:a8b8de5e2464d8b4cbd9edc3729fe5aae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae401753011dca60d8b9417a28c0d7ff1"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1Signals.html#ae401753011dca60d8b9417a28c0d7ff1">RestoreHandlerAndReraiseSignalOnReturn</a> (const siginfo_t *siginfo, const struct sigaction *old_action)</td></tr>
<tr class="memdesc:ae401753011dca60d8b9417a28c0d7ff1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Restores a previous signal action and arranges to re-raise a signal on return from a signal handler.  <a href="classcrashpad_1_1Signals.html#ae401753011dca60d8b9417a28c0d7ff1">More...</a><br /></td></tr>
<tr class="separator:ae401753011dca60d8b9417a28c0d7ff1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6dbaf303bbbcd8e3056232e5942da16e"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1Signals.html#a6dbaf303bbbcd8e3056232e5942da16e">IsCrashSignal</a> (int sig)</td></tr>
<tr class="memdesc:a6dbaf303bbbcd8e3056232e5942da16e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines whether a signal is associated with a crash.  <a href="classcrashpad_1_1Signals.html#a6dbaf303bbbcd8e3056232e5942da16e">More...</a><br /></td></tr>
<tr class="separator:a6dbaf303bbbcd8e3056232e5942da16e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41ddeba5c2df63c4e632133e5370d7e7"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1Signals.html#a41ddeba5c2df63c4e632133e5370d7e7">IsTerminateSignal</a> (int sig)</td></tr>
<tr class="memdesc:a41ddeba5c2df63c4e632133e5370d7e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines whether a signal is associated with termination.  <a href="classcrashpad_1_1Signals.html#a41ddeba5c2df63c4e632133e5370d7e7">More...</a><br /></td></tr>
<tr class="separator:a41ddeba5c2df63c4e632133e5370d7e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a04e054616ab6c9f179c50c3ccd35881b"><td class="memItemLeft" align="right" valign="top"><a id="a04e054616ab6c9f179c50c3ccd35881b"></a>
static constexpr int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1Signals.html#a04e054616ab6c9f179c50c3ccd35881b">kSimulatedSigno</a> = -1</td></tr>
<tr class="memdesc:a04e054616ab6c9f179c50c3ccd35881b"><td class="mdescLeft">&#160;</td><td class="mdescRight">A signal number used by Crashpad to simulate signals. <br /></td></tr>
<tr class="separator:a04e054616ab6c9f179c50c3ccd35881b"><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>Utilities for handling POSIX signals. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a2915876d6786521e6616049fe2a5f055"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2915876d6786521e6616049fe2a5f055">&#9670;&nbsp;</a></span>InstallCrashHandlers()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool crashpad::Signals::InstallCrashHandlers </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classcrashpad_1_1Signals.html#a0e1accccdf6e8c68f746b8a56b52785b">Handler</a>&#160;</td>
          <td class="paramname"><em>handler</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>flags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classcrashpad_1_1Signals_1_1OldActions.html">OldActions</a> *&#160;</td>
          <td class="paramname"><em>old_actions</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::set&lt; int &gt; *&#160;</td>
          <td class="paramname"><em>unhandled_signals</em> = <code>nullptr</code>&#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">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Installs a new signal handler for all signals associated with crashes. </p>
<p><a class="el" href="classcrashpad_1_1Signals.html" title="Utilities for handling POSIX signals.">Signals</a> associated with crashes are those whose default dispositions involve creating a core dump. The precise set of signals involved varies between operating systems.</p>
<p>A single signal may either be associated with a crash or with termination (see <a class="el" href="classcrashpad_1_1Signals.html#af5ae38c6eac880fa377e2ef6e871aa9b" title="Installs a new signal handler for all signals associated with termination.">InstallTerminateHandlers()</a>), and perhaps neither, but never both.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">handler</td><td>A signal-handling function to execute, used as the <code>struct sigaction::sa_sigaction</code> field when calling <code>sigaction()</code>. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">flags</td><td>Flags to pass to <code>sigaction()</code> in the <code>struct sigaction::sa_flags</code> field. <code>SA_SIGINFO</code> will be specified implicitly. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">old_actions</td><td>The previous actions for the signals, replaced by the new action. May be <code>nullptr</code> if not needed. The same <em>old_actions</em> object may be used for calls to both this function and <a class="el" href="classcrashpad_1_1Signals.html#af5ae38c6eac880fa377e2ef6e871aa9b" title="Installs a new signal handler for all signals associated with termination.">InstallTerminateHandlers()</a>. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">unhandled_signals</td><td>Signal handlers will not be installed for signal numbers in this set. Optional.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> on success. <code>false</code> on failure with a message logged.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>This function may not be called from a signal handler because of its use of logging. See <a class="el" href="classcrashpad_1_1Signals.html#ae401753011dca60d8b9417a28c0d7ff1" title="Restores a previous signal action and arranges to re-raise a signal on return from a signal handler.">RestoreHandlerAndReraiseSignalOnReturn()</a> instead. </dd></dl>

</div>
</div>
<a id="a46c25d43264336b48afa913a29aef45b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a46c25d43264336b48afa913a29aef45b">&#9670;&nbsp;</a></span>InstallDefaultHandler()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool crashpad::Signals::InstallDefaultHandler </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>sig</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Installs <code>SIG_DFL</code> for the signal <em>sig</em>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">sig</td><td>The signal to set the default action for.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> on success, <code>false</code> on failure with errno set. No message is logged. </dd></dl>

</div>
</div>
<a id="a7d0ddf78702d8272d45446f4d6d23811"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7d0ddf78702d8272d45446f4d6d23811">&#9670;&nbsp;</a></span>InstallHandler()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool crashpad::Signals::InstallHandler </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>sig</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classcrashpad_1_1Signals.html#a0e1accccdf6e8c68f746b8a56b52785b">Handler</a>&#160;</td>
          <td class="paramname"><em>handler</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>flags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sigaction *&#160;</td>
          <td class="paramname"><em>old_action</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">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Installs a new signal handler. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">sig</td><td>The signal number to handle. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">handler</td><td>A signal-handling function to execute, used as the <code>struct sigaction::sa_sigaction</code> field when calling <code>sigaction()</code>. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">flags</td><td>Flags to pass to <code>sigaction()</code> in the <code>struct sigaction::sa_flags</code> field. <code>SA_SIGINFO</code> will be specified implicitly. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">old_action</td><td>The previous action for the signal, replaced by the new action. May be <code>nullptr</code> if not needed.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> on success. <code>false</code> on failure with a message logged.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>This function may not be called from a signal handler because of its use of logging. See <a class="el" href="classcrashpad_1_1Signals.html#ae401753011dca60d8b9417a28c0d7ff1" title="Restores a previous signal action and arranges to re-raise a signal on return from a signal handler.">RestoreHandlerAndReraiseSignalOnReturn()</a> instead. </dd></dl>

</div>
</div>
<a id="af5ae38c6eac880fa377e2ef6e871aa9b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af5ae38c6eac880fa377e2ef6e871aa9b">&#9670;&nbsp;</a></span>InstallTerminateHandlers()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool crashpad::Signals::InstallTerminateHandlers </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classcrashpad_1_1Signals.html#a0e1accccdf6e8c68f746b8a56b52785b">Handler</a>&#160;</td>
          <td class="paramname"><em>handler</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>flags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classcrashpad_1_1Signals_1_1OldActions.html">OldActions</a> *&#160;</td>
          <td class="paramname"><em>old_actions</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">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Installs a new signal handler for all signals associated with termination. </p>
<p><a class="el" href="classcrashpad_1_1Signals.html" title="Utilities for handling POSIX signals.">Signals</a> associated with termination are those whose default dispositions involve terminating the process without creating a core dump. The precise set of signals involved varies between operating systems.</p>
<p>A single signal may either be associated with termination or with a crash (see InstalCrashHandlers()), and perhaps neither, but never both.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">handler</td><td>A signal-handling function to execute, used as the <code>struct sigaction::sa_sigaction</code> field when calling <code>sigaction()</code>. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">flags</td><td>Flags to pass to <code>sigaction()</code> in the <code>struct sigaction::sa_flags</code> field. <code>SA_SIGINFO</code> will be specified implicitly. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">old_actions</td><td>The previous actions for the signals, replaced by the new action. May be <code>nullptr</code> if not needed. The same <em>old_actions</em> object may be used for calls to both this function and <a class="el" href="classcrashpad_1_1Signals.html#a2915876d6786521e6616049fe2a5f055" title="Installs a new signal handler for all signals associated with crashes.">InstallCrashHandlers()</a>.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> on success. <code>false</code> on failure with a message logged.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>This function may not be called from a signal handler because of its use of logging. See <a class="el" href="classcrashpad_1_1Signals.html#ae401753011dca60d8b9417a28c0d7ff1" title="Restores a previous signal action and arranges to re-raise a signal on return from a signal handler.">RestoreHandlerAndReraiseSignalOnReturn()</a> instead. </dd></dl>

</div>
</div>
<a id="a6dbaf303bbbcd8e3056232e5942da16e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6dbaf303bbbcd8e3056232e5942da16e">&#9670;&nbsp;</a></span>IsCrashSignal()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool crashpad::Signals::IsCrashSignal </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>sig</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Determines whether a signal is associated with a crash. </p>
<p><a class="el" href="classcrashpad_1_1Signals.html" title="Utilities for handling POSIX signals.">Signals</a> associated with crashes are those whose default dispositions involve creating a core dump. The precise set of signals involved varies between operating systems.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">sig</td><td>The signal to test.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if <em>sig</em> is associated with a crash. <code>false</code> otherwise.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>This function is safe to call from a signal handler. </dd></dl>

</div>
</div>
<a id="a41ddeba5c2df63c4e632133e5370d7e7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a41ddeba5c2df63c4e632133e5370d7e7">&#9670;&nbsp;</a></span>IsTerminateSignal()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool crashpad::Signals::IsTerminateSignal </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>sig</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Determines whether a signal is associated with termination. </p>
<p><a class="el" href="classcrashpad_1_1Signals.html" title="Utilities for handling POSIX signals.">Signals</a> associated with termination are those whose default dispositions involve terminating the process without creating a core dump. The precise set of signals involved varies between operating systems.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">sig</td><td>The signal to test.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if <em>sig</em> is associated with termination. <code>false</code> otherwise.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>This function is safe to call from a signal handler. </dd></dl>

</div>
</div>
<a id="ae401753011dca60d8b9417a28c0d7ff1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae401753011dca60d8b9417a28c0d7ff1">&#9670;&nbsp;</a></span>RestoreHandlerAndReraiseSignalOnReturn()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void crashpad::Signals::RestoreHandlerAndReraiseSignalOnReturn </td>
          <td>(</td>
          <td class="paramtype">const siginfo_t *&#160;</td>
          <td class="paramname"><em>siginfo</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const struct sigaction *&#160;</td>
          <td class="paramname"><em>old_action</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">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Restores a previous signal action and arranges to re-raise a signal on return from a signal handler. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">siginfo</td><td>A pointer to a <code>siginfo_t</code> object received by a signal handler. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">old_action</td><td>The previous action for the signal, which will be re-established as the signal’s action. May be <code>nullptr</code>, which directs the default action for the signal to be used.</td></tr>
  </table>
  </dd>
</dl>
<p>If this function fails, it will immediately call <code>_exit()</code> and set an exit status of <code>191</code>.</p>
<dl class="section note"><dt>Note</dt><dd>This function may only be called from a signal handler. </dd></dl>

</div>
</div>
<a id="a8b8de5e2464d8b4cbd9edc3729fe5aae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8b8de5e2464d8b4cbd9edc3729fe5aae">&#9670;&nbsp;</a></span>WillSignalReraiseAutonomously()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool crashpad::Signals::WillSignalReraiseAutonomously </td>
          <td>(</td>
          <td class="paramtype">const siginfo_t *&#160;</td>
          <td class="paramname"><em>siginfo</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Determines whether a signal will be re-raised autonomously upon return from a signal handler. </p>
<p>Certain signals, when generated synchronously in response to a hardware fault, are unrecoverable. Upon return from the signal handler, the same action that triggered the signal to be raised initially will be retried, and unless the signal handler took action to mitigate this error, the same signal will be re-raised. As an example, a CPU will not be able to read unmapped memory (causing <code>SIGSEGV</code>), thus the signal will be re-raised upon return from the signal handler unless the signal handler established a memory mapping where required.</p>
<p>It is important to distinguish between these synchronous signals generated in response to a hardware fault and signals generated asynchronously or in software. As an example, <code>SIGSEGV</code> will not re-raise autonomously if sent by <code>kill()</code>.</p>
<p>This function distinguishes between signals that can re-raise autonomously, and for those that can, between instances of the signal that were generated synchronously in response to a hardware fault and instances that were generated by other means.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">siginfo</td><td>A pointer to a <code>siginfo_t</code> object received by a signal handler.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if the signal being handled will re-raise itself autonomously upon return from a signal handler. <code>false</code> if it will not. When this function returns <code>false</code>, a signal can still be re-raised upon return from a signal handler by calling <code>raise()</code> from within the signal handler.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>This function is safe to call from a signal handler. </dd></dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>util/posix/signals.h</li>
<li>util/posix/signals.cc</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.18
</small></address>
</body>
</html>
