You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2 lines
22 KiB

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>StarvationDomain (infer.Concurrency.StarvationDomain)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div class="content"><header><nav><a href="../index.html">Up</a> <a href="../../index.html">infer</a> &#x00BB; <a href="../index.html">Concurrency</a> &#x00BB; StarvationDomain</nav><h1>Module <code>Concurrency.StarvationDomain</code></h1></header><div class="spec module" id="module-F"><a href="#module-F" class="anchor"></a><code><span class="keyword">module</span> F = Stdlib.Format</code></div><dl><dt class="spec module" id="module-ThreadDomain"><a href="#module-ThreadDomain" class="anchor"></a><code><span class="keyword">module</span> <a href="ThreadDomain/index.html">ThreadDomain</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></dt><dd><p>Domain for thread-type. The main goals are</p></dd></dl><dl><dt class="spec module" id="module-Lock"><a href="#module-Lock" class="anchor"></a><code><span class="keyword">module</span> <a href="Lock/index.html">Lock</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></dt><dd><p>Abstract address for a lock. There are two notions of equality:</p></dd></dl><div class="spec module" id="module-VarDomain"><a href="#module-VarDomain" class="anchor"></a><code><span class="keyword">module</span> <a href="VarDomain/index.html">VarDomain</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-Event"><a href="#module-Event" class="anchor"></a><code><span class="keyword">module</span> <a href="Event/index.html">Event</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-LockState"><a href="#module-LockState" class="anchor"></a><code><span class="keyword">module</span> <a href="LockState/index.html">LockState</a> : <a href="../../Absint/AbstractDomain/index.html#module-type-WithTop">Absint.AbstractDomain.WithTop</a></code></div><dl><dt class="spec module" id="module-Acquisition"><a href="#module-Acquisition" class="anchor"></a><code><span class="keyword">module</span> <a href="Acquisition/index.html">Acquisition</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></dt><dd><p>a lock acquisition with location information</p></dd></dl><dl><dt class="spec module" id="module-Acquisitions"><a href="#module-Acquisitions" class="anchor"></a><code><span class="keyword">module</span> <a href="Acquisitions/index.html">Acquisitions</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></dt><dd><p>A set of lock acquisitions with source locations and procnames.</p></dd></dl><dl><dt class="spec module" id="module-CriticalPairElement"><a href="#module-CriticalPairElement" class="anchor"></a><code><span class="keyword">module</span> <a href="CriticalPairElement/index.html">CriticalPairElement</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></dt><dd><p>An event and the currently-held locks at the time it occurred.</p></dd></dl><dl><dt class="spec module" id="module-CriticalPair"><a href="#module-CriticalPair" class="anchor"></a><code><span class="keyword">module</span> <a href="CriticalPair/index.html">CriticalPair</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></dt><dd><p>A <code>CriticalPairElement</code> equipped with a call stack. The intuition is that if we have a critical pair `(locks, event)` in the summary of a method then there is a trace of that method where `event` occurs, and right before it occurs the locks held are exactly `locks` (no over/under approximation). We call it &quot;critical&quot; because the information here alone determines deadlock conditions.</p></dd>