<!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::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.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><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’&#160;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="classcrashpad_1_1Signals_1_1OldActions.html#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’&#160;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#a2915876d6786521e6616049fe2a5f055" 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’&#160;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.18
</small></address>
</body>
</html>
