<!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::Signals::OldActions 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_1Signals.html">Signals</a></li><li class="navelem"><a class="el" href="classcrashpad_1_1Signals_1_1OldActions.html">OldActions</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_1Signals_1_1OldActions-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">crashpad::Signals::OldActions Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>A group of <code>struct sigaction</code> structures corresponding to a set of signals’ previous actions, addressable by signal number.  
 <a href="classcrashpad_1_1Signals_1_1OldActions.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="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a5afdbf5011a88a645526aabbb2f41da2"><td class="memItemLeft" align="right" valign="top">struct sigaction *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1Signals_1_1OldActions.html#a5afdbf5011a88a645526aabbb2f41da2">ActionForSignal</a> (int sig)</td></tr>
<tr class="memdesc:a5afdbf5011a88a645526aabbb2f41da2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a <code>struct sigaction</code> structure corresponding to the given signal.  <a href="#a5afdbf5011a88a645526aabbb2f41da2">More...</a><br /></td></tr>
<tr class="separator:a5afdbf5011a88a645526aabbb2f41da2"><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>A group of <code>struct sigaction</code> structures corresponding to a set of signals’ previous actions, addressable by signal number. </p>
<p>This type is used to store previous signal actions when new actions are installed in batch by <a class="el" href="classcrashpad_1_1Signals.html#a81cf7aa512190294c7dd9faa5134533c" title="Installs a new signal handler for all signals associated with crashes. ">InstallCrashHandlers()</a> or <a class="el" href="classcrashpad_1_1Signals.html#af5ae38c6eac880fa377e2ef6e871aa9b" title="Installs a new signal handler for all signals associated with termination. ">InstallTerminateHandlers()</a>.</p>
<p>This object is not initialized by any constructor. Its expected initial state is to have its contents filled with zeroes. Because signal handlers are stateless (there is no “context” parameter), any state must be accessed via objects of static storage duration, and it is expected that objects of this class will only ever exist with static storage duration, which in the absence of a constructor will be zero-initialized as expected. In the event that an object of this class must exist with a different storage duration, such as automatic or dynamic storage duration, it must be explicitly initialized. For example: <code><a class="el" href="classcrashpad_1_1Signals_1_1OldActions.html" title="A group of struct sigaction structures corresponding to a set of signals’ previous actions...">OldActions</a> old_actions = {};</code>. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a5afdbf5011a88a645526aabbb2f41da2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5afdbf5011a88a645526aabbb2f41da2">&#9670;&nbsp;</a></span>ActionForSignal()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct sigaction * crashpad::Signals::OldActions::ActionForSignal </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>sig</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns a <code>struct sigaction</code> structure corresponding to the given signal. </p>
<dl class="section note"><dt>Note</dt><dd>This method 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.14
</small></address>
</body>
</html>
