Commit 71975a17 authored by Philipp Huebner's avatar Philipp Huebner

Imported Upstream version 1.0.3

parent 56e8af12
sudo: false
language: erlang
install:
- rebar get-deps
script: rebar compile && rebar skip_deps=true eunit
otp_release:
- 17.1
- 17.5
- 18.1
# Version 1.0.3
* Added time related compatibility module, added API documentation (Paweł Chmielowski)
* Improve documentation readability (Marek Foss)
# Version 1.0.2
* Add p1_time_compat module to ease support for both R17 and R18 Erlang time features (Paweł Chmielowski)
# Version 1.0.1
* Better Rebar3 support, remove warning about missing hex plugin when
building with rebar (Mickaël Rémond)
This diff is collapsed.
This diff is collapsed.
# p1_utils # p1_utils
[![Build Status](https://travis-ci.org/processone/p1_utils.svg?branch=master)](https://travis-ci.org/processone/p1_utils) [![Coverage Status](https://coveralls.io/repos/processone/p1_utils/badge.svg?branch=master&service=github)](https://coveralls.io/github/processone/p1_utils?branch=master) [![Hex version](https://img.shields.io/hexpm/v/p1_utils.svg "Hex version")](https://hex.pm/packages/p1_utils)
p1_utils is an application containing ProcessOne modules and tools that are leveraged in other development projects: p1_utils is an application containing ProcessOne modules and tools that are leveraged in other development projects:
* `p1_fsm` and `p1_server` are drop-in replacements of Erlang gen_fsm and gen_server, offering extra option for better * `p1_fsm` and `p1_server` are drop-in replacements of Erlang gen_fsm and gen_server, offering extra option for better
reliability in production. They support mostly priority messages and message queue length controls. reliability in production. They support mostly priority messages and message queue length controls.
* `p1_nif_utils` is an helper utilities for handling NIF code. * `p1_nif_utils` is an helper utilities for handling NIF code.
* `treap` is a treap algorithm implementation. It is a randomized binary search tree. See: https://en.wikipedia.org/wiki/Treap * `treap` is a treap algorithm implementation. It is a randomized binary search tree. See: https://en.wikipedia.org/wiki/Treap
* `p1_time_compat` is a module to ease support and migration of Erlang
time management function from Erlang R16/R17 to Erlang R18.
If you have `rebar` binary, you can generate `p1_utils` documentation by running `rebar3 edoc`.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>The p1_utils application</title>
</head>
<frameset cols="20%,80%">
<frame src="modules-frame.html" name="modulesFrame" title="">
<frame src="overview-summary.html" name="overviewFrame" title="">
<noframes>
<h2>This page uses frames</h2>
<p>Your browser does not accept frames.
<br>You should go to the <a href="overview-summary.html">non-frame version</a> instead.
</p>
</noframes>
</frameset>
</html>
\ No newline at end of file
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>The p1_utils application</title>
<link rel="stylesheet" type="text/css" href="style.css" title="EDoc">
</head>
<body bgcolor="white">
<h2 class="indextitle">Modules</h2>
<table width="100%" border="0" summary="list of modules">
<tr><td><a href="p1_fsm.html" target="overviewFrame" class="module">p1_fsm</a></td></tr>
<tr><td><a href="p1_nif_utils.html" target="overviewFrame" class="module">p1_nif_utils</a></td></tr>
<tr><td><a href="p1_server.html" target="overviewFrame" class="module">p1_server</a></td></tr>
<tr><td><a href="p1_time_compat.html" target="overviewFrame" class="module">p1_time_compat</a></td></tr>
<tr><td><a href="treap.html" target="overviewFrame" class="module">treap</a></td></tr></table>
</body>
</html>
\ No newline at end of file
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>P1 Erlang Utils</title>
<link rel="stylesheet" type="text/css" href="style.css" title="EDoc">
</head>
<body bgcolor="white" class="mainpane">
<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.process-one.net" target="_top"><img src="logo_p1.png" align="right" border="0" alt="Logo"></a></td></tr></table></div>
<h1>P1 Erlang Utils</h1>
<p>Copyright © 2002-2015 ProcessOne</p>
<p><b>Version:</b> 1.0.0</p>
<p><b>Authors:</b> ProcessOne [<em>web site:</em> <tt><a href="http://www.process-one.net" target="_top">http://www.process-one.net</a></tt>].</p>
<p>
This is a set of Erlang utilities used in other ProcessOne projects.</p>
<p>p1_utils is an application containing ProcessOne modules and tools that are leveraged in other development projects:</p>
<ul>
<li><code>p1_fsm</code> and <code>p1_server</code> are drop-in replacements of Erlang gen_fsm and gen_server, offering extra option for better
reliability in production. They support mostly priority messages and message queue length controls.</li>
<li><code>p1_nif_utils</code> is an helper utilities for handling NIF code.</li>
<li><code>treap</code> is a treap algorithm implementation. It is a randomized binary search tree. See: <a href="https://en.wikipedia.org/wiki/Treap">Treap on Wikipedia</a></li>
</ul>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.process-one.net" target="_top"><img src="logo_p1.png" align="right" border="0" alt="Logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 17 2015, 23:20:00.</i></p>
</body>
</html>
@author ProcessOne [http://www.process-one.net]
@copyright 2002-2015 ProcessOne
@version 1.0.0
@title P1 Erlang Utils
@doc
This is a set of Erlang utilities used in other ProcessOne projects.
p1_utils is an application containing ProcessOne modules and tools that are leveraged in other development projects:
<ul>
<li><code>p1_fsm</code> and <code>p1_server</code> are drop-in replacements of Erlang gen_fsm and gen_server, offering extra option for better
reliability in production. They support mostly priority messages and message queue length controls.</li>
<li><code>p1_nif_utils</code> is an helper utilities for handling NIF code.</li>
<li><code>treap</code> is a treap algorithm implementation. It is a randomized binary search tree. See: <a href="https://en.wikipedia.org/wiki/Treap">Treap on Wikipedia</a></li>
</ul>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Module p1_fsm</title>
<link rel="stylesheet" type="text/css" href="style.css" title="EDoc">
</head>
<body bgcolor="white" class="mainpane">
<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.process-one.net" target="_top"><img src="logo_p1.png" align="right" border="0" alt="Logo"></a></td></tr></table></div>
<hr>
<h1>Module p1_fsm</h1>
<ul class="index"><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
<p><b>This module defines the <tt>p1_fsm</tt> behaviour.</b><br> Required callback functions: <tt>init/1</tt>, <tt>handle_event/3</tt>, <tt>handle_sync_event/4</tt>, <tt>handle_info/3</tt>, <tt>terminate/3</tt>, <tt>code_change/4</tt>.</p>
<h2><a name="index">Function Index</a></h2>
<table width="100%" border="0" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#cancel_timer-1">cancel_timer/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#enter_loop-4">enter_loop/4</a></td><td></td></tr>
<tr><td valign="top"><a href="#enter_loop-5">enter_loop/5</a></td><td></td></tr>
<tr><td valign="top"><a href="#enter_loop-6">enter_loop/6</a></td><td></td></tr>
<tr><td valign="top"><a href="#format_status-2">format_status/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#init_it-6">init_it/6</a></td><td></td></tr>
<tr><td valign="top"><a href="#print_event-3">print_event/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#reply-2">reply/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#send_all_state_event-2">send_all_state_event/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#send_event-2">send_event/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#send_event_after-2">send_event_after/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#start-3">start/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#start-4">start/4</a></td><td></td></tr>
<tr><td valign="top"><a href="#start_link-3">start_link/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#start_link-4">start_link/4</a></td><td></td></tr>
<tr><td valign="top"><a href="#start_timer-2">start_timer/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#sync_send_all_state_event-2">sync_send_all_state_event/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#sync_send_all_state_event-3">sync_send_all_state_event/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#sync_send_event-2">sync_send_event/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#sync_send_event-3">sync_send_event/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#system_code_change-4">system_code_change/4</a></td><td></td></tr>
<tr><td valign="top"><a href="#system_continue-3">system_continue/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#system_terminate-4">system_terminate/4</a></td><td></td></tr>
<tr><td valign="top"><a href="#wake_hib-7">wake_hib/7</a></td><td></td></tr>
</table>
<h2><a name="functions">Function Details</a></h2>
<h3 class="function"><a name="cancel_timer-1">cancel_timer/1</a></h3>
<div class="spec">
<p><tt>cancel_timer(Ref) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="enter_loop-4">enter_loop/4</a></h3>
<div class="spec">
<p><tt>enter_loop(Mod, Options, StateName, StateData) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="enter_loop-5">enter_loop/5</a></h3>
<div class="spec">
<p><tt>enter_loop(Mod, Options, StateName, StateData, ServerName) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="enter_loop-6">enter_loop/6</a></h3>
<div class="spec">
<p><tt>enter_loop(Mod, Options, StateName, StateData, ServerName, Timeout) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="format_status-2">format_status/2</a></h3>
<div class="spec">
<p><tt>format_status(Opt, StatusData) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="init_it-6">init_it/6</a></h3>
<div class="spec">
<p><tt>init_it(Starter, Parent, Name, Mod, Args, Options) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="print_event-3">print_event/3</a></h3>
<div class="spec">
<p><tt>print_event(Dev, X2, Name) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="reply-2">reply/2</a></h3>
<div class="spec">
<p><tt>reply(X1, Reply) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="send_all_state_event-2">send_all_state_event/2</a></h3>
<div class="spec">
<p><tt>send_all_state_event(Name, Event) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="send_event-2">send_event/2</a></h3>
<div class="spec">
<p><tt>send_event(Name, Event) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="send_event_after-2">send_event_after/2</a></h3>
<div class="spec">
<p><tt>send_event_after(Time, Event) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="start-3">start/3</a></h3>
<div class="spec">
<p><tt>start(Mod, Args, Options) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="start-4">start/4</a></h3>
<div class="spec">
<p><tt>start(Name, Mod, Args, Options) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="start_link-3">start_link/3</a></h3>
<div class="spec">
<p><tt>start_link(Mod, Args, Options) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="start_link-4">start_link/4</a></h3>
<div class="spec">
<p><tt>start_link(Name, Mod, Args, Options) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="start_timer-2">start_timer/2</a></h3>
<div class="spec">
<p><tt>start_timer(Time, Msg) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="sync_send_all_state_event-2">sync_send_all_state_event/2</a></h3>
<div class="spec">
<p><tt>sync_send_all_state_event(Name, Event) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="sync_send_all_state_event-3">sync_send_all_state_event/3</a></h3>
<div class="spec">
<p><tt>sync_send_all_state_event(Name, Event, Timeout) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="sync_send_event-2">sync_send_event/2</a></h3>
<div class="spec">
<p><tt>sync_send_event(Name, Event) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="sync_send_event-3">sync_send_event/3</a></h3>
<div class="spec">
<p><tt>sync_send_event(Name, Event, Timeout) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="system_code_change-4">system_code_change/4</a></h3>
<div class="spec">
<p><tt>system_code_change(X1, Module, OldVsn, Extra) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="system_continue-3">system_continue/3</a></h3>
<div class="spec">
<p><tt>system_continue(Parent, Debug, X3) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="system_terminate-4">system_terminate/4</a></h3>
<div class="spec">
<p><tt>system_terminate(Reason::term(), Parent::term(), Debug::term(), X4::[term(), ...]) -&gt; no_return()</tt><br></p>
</div>
<h3 class="function"><a name="wake_hib-7">wake_hib/7</a></h3>
<div class="spec">
<p><tt>wake_hib(Parent, Name, StateName, StateData, Mod, Debug, Limits) -&gt; any()</tt></p>
</div>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.process-one.net" target="_top"><img src="logo_p1.png" align="right" border="0" alt="Logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 17 2015, 23:20:00.</i></p>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Module p1_nif_utils</title>
<link rel="stylesheet" type="text/css" href="style.css" title="EDoc">
</head>
<body bgcolor="white" class="mainpane">
<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.process-one.net" target="_top"><img src="logo_p1.png" align="right" border="0" alt="Logo"></a></td></tr></table></div>
<hr>
<h1>Module p1_nif_utils</h1>
<ul class="index"><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
<h2><a name="index">Function Index</a></h2>
<table width="100%" border="0" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#get_so_path-3">get_so_path/3</a></td><td></td></tr>
</table>
<h2><a name="functions">Function Details</a></h2>
<h3 class="function"><a name="get_so_path-3">get_so_path/3</a></h3>
<div class="spec">
<p><tt>get_so_path(ModuleName, AppNames, SoName) -&gt; any()</tt></p>
</div>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.process-one.net" target="_top"><img src="logo_p1.png" align="right" border="0" alt="Logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 17 2015, 23:20:00.</i></p>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Module p1_server</title>
<link rel="stylesheet" type="text/css" href="style.css" title="EDoc">
</head>
<body bgcolor="white" class="mainpane">
<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.process-one.net" target="_top"><img src="logo_p1.png" align="right" border="0" alt="Logo"></a></td></tr></table></div>
<hr>
<h1>Module p1_server</h1>
<ul class="index"><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
<p><b>This module defines the <tt>p1_server</tt> behaviour.</b><br> Required callback functions: <tt>init/1</tt>, <tt>handle_call/3</tt>, <tt>handle_cast/2</tt>, <tt>handle_info/2</tt>, <tt>terminate/2</tt>, <tt>code_change/3</tt>.</p>
<h2><a name="index">Function Index</a></h2>
<table width="100%" border="0" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#abcast-2">abcast/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#abcast-3">abcast/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#call-2">call/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#call-3">call/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#cast-2">cast/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#enter_loop-3">enter_loop/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#enter_loop-4">enter_loop/4</a></td><td></td></tr>
<tr><td valign="top"><a href="#enter_loop-5">enter_loop/5</a></td><td></td></tr>
<tr><td valign="top"><a href="#format_status-2">format_status/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#init_it-6">init_it/6</a></td><td></td></tr>
<tr><td valign="top"><a href="#multi_call-2">multi_call/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#multi_call-3">multi_call/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#multi_call-4">multi_call/4</a></td><td></td></tr>
<tr><td valign="top"><a href="#reply-2">reply/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#start-3">start/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#start-4">start/4</a></td><td></td></tr>
<tr><td valign="top"><a href="#start_link-3">start_link/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#start_link-4">start_link/4</a></td><td></td></tr>
<tr><td valign="top"><a href="#system_code_change-4">system_code_change/4</a></td><td></td></tr>
<tr><td valign="top"><a href="#system_continue-3">system_continue/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#system_terminate-4">system_terminate/4</a></td><td></td></tr>
<tr><td valign="top"><a href="#wake_hib-6">wake_hib/6</a></td><td></td></tr>
</table>
<h2><a name="functions">Function Details</a></h2>
<h3 class="function"><a name="abcast-2">abcast/2</a></h3>
<div class="spec">
<p><tt>abcast(Name, Request) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="abcast-3">abcast/3</a></h3>
<div class="spec">
<p><tt>abcast(Nodes, Name, Request) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="call-2">call/2</a></h3>
<div class="spec">
<p><tt>call(Name, Request) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="call-3">call/3</a></h3>
<div class="spec">
<p><tt>call(Name, Request, Timeout) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="cast-2">cast/2</a></h3>
<div class="spec">
<p><tt>cast(Dest, Request) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="enter_loop-3">enter_loop/3</a></h3>
<div class="spec">
<p><tt>enter_loop(Mod, Options, State) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="enter_loop-4">enter_loop/4</a></h3>
<div class="spec">
<p><tt>enter_loop(Mod, Options, State, ServerName) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="enter_loop-5">enter_loop/5</a></h3>
<div class="spec">
<p><tt>enter_loop(Mod, Options, State, ServerName, Timeout) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="format_status-2">format_status/2</a></h3>
<div class="spec">
<p><tt>format_status(Opt, StatusData) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="init_it-6">init_it/6</a></h3>
<div class="spec">
<p><tt>init_it(Starter, Parent, Name, Mod, Args, Options) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="multi_call-2">multi_call/2</a></h3>
<div class="spec">
<p><tt>multi_call(Name, Req) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="multi_call-3">multi_call/3</a></h3>
<div class="spec">
<p><tt>multi_call(Nodes, Name, Req) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="multi_call-4">multi_call/4</a></h3>
<div class="spec">
<p><tt>multi_call(Nodes, Name, Req, Timeout) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="reply-2">reply/2</a></h3>
<div class="spec">
<p><tt>reply(X1, Reply) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="start-3">start/3</a></h3>
<div class="spec">
<p><tt>start(Mod, Args, Options) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="start-4">start/4</a></h3>
<div class="spec">
<p><tt>start(Name, Mod, Args, Options) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="start_link-3">start_link/3</a></h3>
<div class="spec">
<p><tt>start_link(Mod, Args, Options) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="start_link-4">start_link/4</a></h3>
<div class="spec">
<p><tt>start_link(Name, Mod, Args, Options) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="system_code_change-4">system_code_change/4</a></h3>
<div class="spec">
<p><tt>system_code_change(X1, Module, OldVsn, Extra) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="system_continue-3">system_continue/3</a></h3>
<div class="spec">
<p><tt>system_continue(Parent, Debug, X3) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="system_terminate-4">system_terminate/4</a></h3>
<div class="spec">
<p><tt>system_terminate(Reason::term(), Parent::term(), Debug::term(), X4::[term()]) -&gt; no_return()</tt><br></p>
</div>
<h3 class="function"><a name="wake_hib-6">wake_hib/6</a></h3>
<div class="spec">
<p><tt>wake_hib(Parent, Name, State, Mod, Debug, Limits) -&gt; any()</tt></p>
</div>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.process-one.net" target="_top"><img src="logo_p1.png" align="right" border="0" alt="Logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 17 2015, 23:20:00.</i></p>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Module p1_time_compat</title>
<link rel="stylesheet" type="text/css" href="style.css" title="EDoc">
</head>
<body bgcolor="white" class="mainpane">
<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.process-one.net" target="_top"><img src="logo_p1.png" align="right" border="0" alt="Logo"></a></td></tr></table></div>
<hr>
<h1>Module p1_time_compat</h1>
<ul class="index"><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
<h2><a name="index">Function Index</a></h2>
<table width="100%" border="0" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#convert_time_unit-3">convert_time_unit/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#monitor-2">monitor/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#monotonic_time-0">monotonic_time/0</a></td><td></td></tr>
<tr><td valign="top"><a href="#monotonic_time-1">monotonic_time/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#os_system_time-0">os_system_time/0</a></td><td></td></tr>
<tr><td valign="top"><a href="#os_system_time-1">os_system_time/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#system_flag-2">system_flag/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#system_info-1">system_info/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#system_time-0">system_time/0</a></td><td></td></tr>
<tr><td valign="top"><a href="#system_time-1">system_time/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#time_offset-0">time_offset/0</a></td><td></td></tr>
<tr><td valign="top"><a href="#time_offset-1">time_offset/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#timestamp-0">timestamp/0</a></td><td></td></tr>
<tr><td valign="top"><a href="#unique_integer-0">unique_integer/0</a></td><td></td></tr>
<tr><td valign="top"><a href="#unique_integer-1">unique_integer/1</a></td><td></td></tr>
</table>
<h2><a name="functions">Function Details</a></h2>
<h3 class="function"><a name="convert_time_unit-3">convert_time_unit/3</a></h3>
<div class="spec">
<p><tt>convert_time_unit(Time, FromUnit, ToUnit) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="monitor-2">monitor/2</a></h3>
<div class="spec">
<p><tt>monitor(Type, Item) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="monotonic_time-0">monotonic_time/0</a></h3>
<div class="spec">
<p><tt>monotonic_time() -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="monotonic_time-1">monotonic_time/1</a></h3>
<div class="spec">
<p><tt>monotonic_time(Unit) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="os_system_time-0">os_system_time/0</a></h3>
<div class="spec">
<p><tt>os_system_time() -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="os_system_time-1">os_system_time/1</a></h3>
<div class="spec">
<p><tt>os_system_time(Unit) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="system_flag-2">system_flag/2</a></h3>
<div class="spec">
<p><tt>system_flag(Flag, Value) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="system_info-1">system_info/1</a></h3>
<div class="spec">
<p><tt>system_info(Item) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="system_time-0">system_time/0</a></h3>
<div class="spec">
<p><tt>system_time() -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="system_time-1">system_time/1</a></h3>
<div class="spec">
<p><tt>system_time(Unit) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="time_offset-0">time_offset/0</a></h3>
<div class="spec">
<p><tt>time_offset() -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="time_offset-1">time_offset/1</a></h3>
<div class="spec">
<p><tt>time_offset(Unit) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="timestamp-0">timestamp/0</a></h3>
<div class="spec">
<p><tt>timestamp() -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="unique_integer-0">unique_integer/0</a></h3>
<div class="spec">
<p><tt>unique_integer() -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="unique_integer-1">unique_integer/1</a></h3>
<div class="spec">
<p><tt>unique_integer(Modifiers) -&gt; any()</tt></p>
</div>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.process-one.net" target="_top"><img src="logo_p1.png" align="right" border="0" alt="Logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 17 2015, 23:20:00.</i></p>
</body>
</html>
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
html {
-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0;padding:40px;}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}
html {
font-family: sans-serif;
}
body {
background: #000;
margin: 0;
padding: 1em;
line-height: 1.25em;
}
body.mainpane {
background: #fff
}
body > ul {
background: #ffc none repeat scroll 0% 0%;
padding: 30px;
}
body > ul > li a {
color: #555;
}
li {
margin-bottom: 15px;
}
.index li {
margin-left: 30px;
margin-bottom: 0;
color: #888;
list-style-type: decimal;
}
a {
text-decoration: none;
}
a:not([name]):hover,
a:not([name]):active {
text-decoration: underline;
}
h2,h3 {
margin-top: 2em;
margin-bottom: 0.5em;
}
hr {
height: 0px;
border: 0px;
}
tt {
color: #5B6380;
font-size: 1em !important;
font-family: monospace,monospace !important;
}
p > tt {
color:green;
font-family: monospace,monospace !important;
font-size: 1em !important;
}
table td {
padding:15px;
}
body > table tr:nth-child(odd) {
background:#E7E7E7 !important;
border:0px !important;
}
frame:nth-child(1) {
background:#161518 !important;
}
frame:nth-child(2) {
background:#F3F3F3 none repeat scroll 0% 0% !important;
}
pre {
background: #F3F3F3;
border: 1px solid #DDD;
padding: 10px;
border-left: 5px solid #B02539;
}
code {
background: #eee;
border: 1px solid #ddd;
margin: 3px;
padding: 1px 3px;
font-size: 1em !important;
}
#main {
padding: 40px !important;
}
.navbar {
background: #161518 none repeat scroll 0% 0%;
}
.navbar a, .index li a{
color: #888;