blob: ede88b31a88033592ff03328f42b45b6999fd0de [file] [log] [blame]
<!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.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>API Reference Manual for linux-dpdk: ODP ATOMIC</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="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.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="odpdoxygen.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="projectlogo"><img alt="Logo" src="ODP-Logo-HQ.svg"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">API Reference Manual for linux-dpdk
&#160;<span id="projectnumber">1.47.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<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','.html');
/* @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>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('group__odp__atomic.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- 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 class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">ODP ATOMIC</div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">API Description</h2>
<p>Atomic variables. </p>
<p><b> Atomic integers using relaxed memory ordering </b></p>
<p>Atomic integer types (odp_atomic_u32_t, odp_atomic_u64_t and odp_atomic_u128_t) can be used to implement e.g. shared counters. If not otherwise documented, all functions in this API perform their operations atomically and are implemented using <b> RELAXED memory ordering </b> (see memory order descriptions in the C11 specification). Relaxed operations do not provide synchronization or ordering for other memory accesses (initiated before or after the operation), only atomicity of the operation itself is guaranteed.</p>
<p><b> Operations with non-relaxed memory ordering </b></p>
<p><b> An operation with RELEASE </b> memory ordering (odp_atomic_xxx_rel_xxx()) ensures that other threads loading the same atomic variable with ACQUIRE memory ordering see all stores (from the calling thread) that happened before this releasing store.</p>
<p><b> An operation with ACQUIRE </b> memory ordering (odp_atomic_xxx_acq_xxx()) ensures that the calling thread sees all stores (done by the releasing thread) that happened before a RELEASE memory ordered store to the same atomic variable.</p>
<p><b> An operation with ACQUIRE-and-RELEASE </b> memory ordering (odp_atomic_xxx_acq_rel_xxx()) combines the effects of ACQUIRE and RELEASE memory orders. A single operation acts as both an acquiring load and a releasing store. </p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">union &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionodp__atomic__op__t.html">odp_atomic_op_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Atomic operations. <a href="unionodp__atomic__op__t.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="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ga2a5bd4b0ca5d1521fe2e0f300bc1144d"><td class="memItemLeft" align="right" valign="top">typedef union <a class="el" href="unionodp__atomic__op__t.html">odp_atomic_op_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga2a5bd4b0ca5d1521fe2e0f300bc1144d">odp_atomic_op_t</a></td></tr>
<tr class="memdesc:ga2a5bd4b0ca5d1521fe2e0f300bc1144d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Atomic operations. <a href="group__odp__atomic.html#ga2a5bd4b0ca5d1521fe2e0f300bc1144d">More...</a><br /></td></tr>
<tr class="separator:ga2a5bd4b0ca5d1521fe2e0f300bc1144d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac9a0fd8401af4bca4204d89033fbce5e"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structodp__atomic__u128__s.html">odp_atomic_u128_s</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gac9a0fd8401af4bca4204d89033fbce5e">odp_atomic_u128_t</a></td></tr>
<tr class="memdesc:gac9a0fd8401af4bca4204d89033fbce5e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Atomic 128-bit unsigned integer. <a href="group__odp__atomic.html#gac9a0fd8401af4bca4204d89033fbce5e">More...</a><br /></td></tr>
<tr class="separator:gac9a0fd8401af4bca4204d89033fbce5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4a182dc814319291a26bfa173ac2ae74"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structodp__atomic__u64__s.html">odp_atomic_u64_s</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a></td></tr>
<tr class="memdesc:ga4a182dc814319291a26bfa173ac2ae74"><td class="mdescLeft">&#160;</td><td class="mdescRight">Atomic 64-bit unsigned integer. <a href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">More...</a><br /></td></tr>
<tr class="separator:ga4a182dc814319291a26bfa173ac2ae74"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0b52bd24dbcebefacecc664f3f0e2001"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structodp__atomic__u32__s.html">odp_atomic_u32_s</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a></td></tr>
<tr class="memdesc:ga0b52bd24dbcebefacecc664f3f0e2001"><td class="mdescLeft">&#160;</td><td class="mdescRight">Atomic 32-bit unsigned integer. <a href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">More...</a><br /></td></tr>
<tr class="separator:ga0b52bd24dbcebefacecc664f3f0e2001"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga0029015adacaadb06ee94ea67d00eece"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga0029015adacaadb06ee94ea67d00eece">odp_atomic_init_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom, uint32_t val)</td></tr>
<tr class="memdesc:ga0029015adacaadb06ee94ea67d00eece"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize atomic uint32 variable. <a href="group__odp__atomic.html#ga0029015adacaadb06ee94ea67d00eece">More...</a><br /></td></tr>
<tr class="separator:ga0029015adacaadb06ee94ea67d00eece"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1ebc0fa6d690c24bd2bcc38bcb9a2276"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga1ebc0fa6d690c24bd2bcc38bcb9a2276">odp_atomic_load_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom)</td></tr>
<tr class="memdesc:ga1ebc0fa6d690c24bd2bcc38bcb9a2276"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load value of atomic uint32 variable. <a href="group__odp__atomic.html#ga1ebc0fa6d690c24bd2bcc38bcb9a2276">More...</a><br /></td></tr>
<tr class="separator:ga1ebc0fa6d690c24bd2bcc38bcb9a2276"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa6d2d16a9ef9897b1442d77e41f7101e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gaa6d2d16a9ef9897b1442d77e41f7101e">odp_atomic_store_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom, uint32_t val)</td></tr>
<tr class="memdesc:gaa6d2d16a9ef9897b1442d77e41f7101e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Store value to atomic uint32 variable. <a href="group__odp__atomic.html#gaa6d2d16a9ef9897b1442d77e41f7101e">More...</a><br /></td></tr>
<tr class="separator:gaa6d2d16a9ef9897b1442d77e41f7101e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga71a1eeba2eeafb1a0d09728f79a6a4c4"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga71a1eeba2eeafb1a0d09728f79a6a4c4">odp_atomic_fetch_add_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom, uint32_t val)</td></tr>
<tr class="memdesc:ga71a1eeba2eeafb1a0d09728f79a6a4c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch and add to atomic uint32 variable. <a href="group__odp__atomic.html#ga71a1eeba2eeafb1a0d09728f79a6a4c4">More...</a><br /></td></tr>
<tr class="separator:ga71a1eeba2eeafb1a0d09728f79a6a4c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1d19f934c326b163f94196e72503969b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga1d19f934c326b163f94196e72503969b">odp_atomic_add_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom, uint32_t val)</td></tr>
<tr class="memdesc:ga1d19f934c326b163f94196e72503969b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add to atomic uint32 variable. <a href="group__odp__atomic.html#ga1d19f934c326b163f94196e72503969b">More...</a><br /></td></tr>
<tr class="separator:ga1d19f934c326b163f94196e72503969b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga359036d8823a9b2a0aceb6d7df3009c3"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga359036d8823a9b2a0aceb6d7df3009c3">odp_atomic_fetch_sub_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom, uint32_t val)</td></tr>
<tr class="memdesc:ga359036d8823a9b2a0aceb6d7df3009c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch and subtract from atomic uint32 variable. <a href="group__odp__atomic.html#ga359036d8823a9b2a0aceb6d7df3009c3">More...</a><br /></td></tr>
<tr class="separator:ga359036d8823a9b2a0aceb6d7df3009c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaeebfa33e021f63f52a4b0d49d454cfc4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gaeebfa33e021f63f52a4b0d49d454cfc4">odp_atomic_sub_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom, uint32_t val)</td></tr>
<tr class="memdesc:gaeebfa33e021f63f52a4b0d49d454cfc4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subtract from atomic uint32 variable. <a href="group__odp__atomic.html#gaeebfa33e021f63f52a4b0d49d454cfc4">More...</a><br /></td></tr>
<tr class="separator:gaeebfa33e021f63f52a4b0d49d454cfc4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6c3e834a2aed06d9d641465a327fb2b5"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga6c3e834a2aed06d9d641465a327fb2b5">odp_atomic_fetch_inc_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom)</td></tr>
<tr class="memdesc:ga6c3e834a2aed06d9d641465a327fb2b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch and increment atomic uint32 variable. <a href="group__odp__atomic.html#ga6c3e834a2aed06d9d641465a327fb2b5">More...</a><br /></td></tr>
<tr class="separator:ga6c3e834a2aed06d9d641465a327fb2b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga20dd8163395000df923f3f5112626a2e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga20dd8163395000df923f3f5112626a2e">odp_atomic_inc_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom)</td></tr>
<tr class="memdesc:ga20dd8163395000df923f3f5112626a2e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Increment atomic uint32 variable. <a href="group__odp__atomic.html#ga20dd8163395000df923f3f5112626a2e">More...</a><br /></td></tr>
<tr class="separator:ga20dd8163395000df923f3f5112626a2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac84cb77c8a0d6ab0a073d0b9ebc99e9f"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gac84cb77c8a0d6ab0a073d0b9ebc99e9f">odp_atomic_fetch_dec_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom)</td></tr>
<tr class="memdesc:gac84cb77c8a0d6ab0a073d0b9ebc99e9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch and decrement atomic uint32 variable. <a href="group__odp__atomic.html#gac84cb77c8a0d6ab0a073d0b9ebc99e9f">More...</a><br /></td></tr>
<tr class="separator:gac84cb77c8a0d6ab0a073d0b9ebc99e9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga54195916c9a67724da041679e9ab72fa"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga54195916c9a67724da041679e9ab72fa">odp_atomic_dec_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom)</td></tr>
<tr class="memdesc:ga54195916c9a67724da041679e9ab72fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decrement atomic uint32 variable. <a href="group__odp__atomic.html#ga54195916c9a67724da041679e9ab72fa">More...</a><br /></td></tr>
<tr class="separator:ga54195916c9a67724da041679e9ab72fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3302f80d627806b50b4f413024c86c17"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga3302f80d627806b50b4f413024c86c17">odp_atomic_max_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom, uint32_t new_max)</td></tr>
<tr class="memdesc:ga3302f80d627806b50b4f413024c86c17"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update maximum value of atomic uint32 variable. <a href="group__odp__atomic.html#ga3302f80d627806b50b4f413024c86c17">More...</a><br /></td></tr>
<tr class="separator:ga3302f80d627806b50b4f413024c86c17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga13f748e6cdd7bc9d75cd9f96cef11f8f"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga13f748e6cdd7bc9d75cd9f96cef11f8f">odp_atomic_fetch_max_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom, uint32_t new_max)</td></tr>
<tr class="memdesc:ga13f748e6cdd7bc9d75cd9f96cef11f8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch and update maximum value of atomic uint32 variable. <a href="group__odp__atomic.html#ga13f748e6cdd7bc9d75cd9f96cef11f8f">More...</a><br /></td></tr>
<tr class="separator:ga13f748e6cdd7bc9d75cd9f96cef11f8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga59db49aabd06fd8393c73defb648959b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga59db49aabd06fd8393c73defb648959b">odp_atomic_min_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom, uint32_t new_min)</td></tr>
<tr class="memdesc:ga59db49aabd06fd8393c73defb648959b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update minimum value of atomic uint32 variable. <a href="group__odp__atomic.html#ga59db49aabd06fd8393c73defb648959b">More...</a><br /></td></tr>
<tr class="separator:ga59db49aabd06fd8393c73defb648959b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga53bd0e5691dcdbd72986d4f1e608ebfe"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga53bd0e5691dcdbd72986d4f1e608ebfe">odp_atomic_fetch_min_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom, uint32_t new_min)</td></tr>
<tr class="memdesc:ga53bd0e5691dcdbd72986d4f1e608ebfe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch and update minimum value of atomic uint32 variable. <a href="group__odp__atomic.html#ga53bd0e5691dcdbd72986d4f1e608ebfe">More...</a><br /></td></tr>
<tr class="separator:ga53bd0e5691dcdbd72986d4f1e608ebfe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9568820afe533a23dbdd8982ca6420cf"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga9568820afe533a23dbdd8982ca6420cf">odp_atomic_cas_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom, uint32_t *old_val, uint32_t new_val)</td></tr>
<tr class="memdesc:ga9568820afe533a23dbdd8982ca6420cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compare and swap atomic uint32 variable. <a href="group__odp__atomic.html#ga9568820afe533a23dbdd8982ca6420cf">More...</a><br /></td></tr>
<tr class="separator:ga9568820afe533a23dbdd8982ca6420cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaea9d16228f8266b7cb16060a077c7f21"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gaea9d16228f8266b7cb16060a077c7f21">odp_atomic_xchg_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom, uint32_t new_val)</td></tr>
<tr class="memdesc:gaea9d16228f8266b7cb16060a077c7f21"><td class="mdescLeft">&#160;</td><td class="mdescRight">Exchange value of atomic uint32 variable. <a href="group__odp__atomic.html#gaea9d16228f8266b7cb16060a077c7f21">More...</a><br /></td></tr>
<tr class="separator:gaea9d16228f8266b7cb16060a077c7f21"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1692bc0087632952de4efc16c04db43f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga1692bc0087632952de4efc16c04db43f">odp_atomic_bit_set_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom, uint32_t bits)</td></tr>
<tr class="memdesc:ga1692bc0087632952de4efc16c04db43f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set bits in atomic uint32 variable. <a href="group__odp__atomic.html#ga1692bc0087632952de4efc16c04db43f">More...</a><br /></td></tr>
<tr class="separator:ga1692bc0087632952de4efc16c04db43f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga86c68307f6290dcef1ee830c3245bc84"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga86c68307f6290dcef1ee830c3245bc84">odp_atomic_bit_fetch_set_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom, uint32_t bits)</td></tr>
<tr class="memdesc:ga86c68307f6290dcef1ee830c3245bc84"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch value and set bits in atomic uint32 variable. <a href="group__odp__atomic.html#ga86c68307f6290dcef1ee830c3245bc84">More...</a><br /></td></tr>
<tr class="separator:ga86c68307f6290dcef1ee830c3245bc84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9eaa604a2d5e147a456c4c129314c9ee"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga9eaa604a2d5e147a456c4c129314c9ee">odp_atomic_bit_clr_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom, uint32_t bits)</td></tr>
<tr class="memdesc:ga9eaa604a2d5e147a456c4c129314c9ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear bits in atomic uint32 variable. <a href="group__odp__atomic.html#ga9eaa604a2d5e147a456c4c129314c9ee">More...</a><br /></td></tr>
<tr class="separator:ga9eaa604a2d5e147a456c4c129314c9ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac038b3dc881210eb30e090d19ba72482"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gac038b3dc881210eb30e090d19ba72482">odp_atomic_bit_fetch_clr_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom, uint32_t bits)</td></tr>
<tr class="memdesc:gac038b3dc881210eb30e090d19ba72482"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch value and clear bits in atomic uint32 variable. <a href="group__odp__atomic.html#gac038b3dc881210eb30e090d19ba72482">More...</a><br /></td></tr>
<tr class="separator:gac038b3dc881210eb30e090d19ba72482"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga325f41ac9f4b2220d0562e91dbaafc86"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga325f41ac9f4b2220d0562e91dbaafc86">odp_atomic_init_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom, uint64_t val)</td></tr>
<tr class="memdesc:ga325f41ac9f4b2220d0562e91dbaafc86"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize atomic uint64 variable. <a href="group__odp__atomic.html#ga325f41ac9f4b2220d0562e91dbaafc86">More...</a><br /></td></tr>
<tr class="separator:ga325f41ac9f4b2220d0562e91dbaafc86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafe63805cc280307e31478439280537e2"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gafe63805cc280307e31478439280537e2">odp_atomic_load_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom)</td></tr>
<tr class="memdesc:gafe63805cc280307e31478439280537e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load value of atomic uint64 variable. <a href="group__odp__atomic.html#gafe63805cc280307e31478439280537e2">More...</a><br /></td></tr>
<tr class="separator:gafe63805cc280307e31478439280537e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacc6b59f6d2088a655185657caa007b7b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gacc6b59f6d2088a655185657caa007b7b">odp_atomic_store_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom, uint64_t val)</td></tr>
<tr class="memdesc:gacc6b59f6d2088a655185657caa007b7b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Store value to atomic uint64 variable. <a href="group__odp__atomic.html#gacc6b59f6d2088a655185657caa007b7b">More...</a><br /></td></tr>
<tr class="separator:gacc6b59f6d2088a655185657caa007b7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf95f1275cd1cba7b0544f4a98b90d474"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gaf95f1275cd1cba7b0544f4a98b90d474">odp_atomic_fetch_add_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom, uint64_t val)</td></tr>
<tr class="memdesc:gaf95f1275cd1cba7b0544f4a98b90d474"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch and add to atomic uint64 variable. <a href="group__odp__atomic.html#gaf95f1275cd1cba7b0544f4a98b90d474">More...</a><br /></td></tr>
<tr class="separator:gaf95f1275cd1cba7b0544f4a98b90d474"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad8d0b05d2773ce8df05b60c5dee9d54f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gad8d0b05d2773ce8df05b60c5dee9d54f">odp_atomic_add_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom, uint64_t val)</td></tr>
<tr class="memdesc:gad8d0b05d2773ce8df05b60c5dee9d54f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add to atomic uint64 variable. <a href="group__odp__atomic.html#gad8d0b05d2773ce8df05b60c5dee9d54f">More...</a><br /></td></tr>
<tr class="separator:gad8d0b05d2773ce8df05b60c5dee9d54f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab01086bdbac2b9ec4df776ce3902fa2d"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gab01086bdbac2b9ec4df776ce3902fa2d">odp_atomic_fetch_sub_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom, uint64_t val)</td></tr>
<tr class="memdesc:gab01086bdbac2b9ec4df776ce3902fa2d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch and subtract from atomic uint64 variable. <a href="group__odp__atomic.html#gab01086bdbac2b9ec4df776ce3902fa2d">More...</a><br /></td></tr>
<tr class="separator:gab01086bdbac2b9ec4df776ce3902fa2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac13af1aae3162fdd17e8eaa5e44692c8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gac13af1aae3162fdd17e8eaa5e44692c8">odp_atomic_sub_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom, uint64_t val)</td></tr>
<tr class="memdesc:gac13af1aae3162fdd17e8eaa5e44692c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subtract from atomic uint64 variable. <a href="group__odp__atomic.html#gac13af1aae3162fdd17e8eaa5e44692c8">More...</a><br /></td></tr>
<tr class="separator:gac13af1aae3162fdd17e8eaa5e44692c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae61c8a6fb13018976c2821370a7710a0"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gae61c8a6fb13018976c2821370a7710a0">odp_atomic_fetch_inc_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom)</td></tr>
<tr class="memdesc:gae61c8a6fb13018976c2821370a7710a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch and increment atomic uint64 variable. <a href="group__odp__atomic.html#gae61c8a6fb13018976c2821370a7710a0">More...</a><br /></td></tr>
<tr class="separator:gae61c8a6fb13018976c2821370a7710a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa55026c7f953f826ec1d5337388e3600"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gaa55026c7f953f826ec1d5337388e3600">odp_atomic_inc_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom)</td></tr>
<tr class="memdesc:gaa55026c7f953f826ec1d5337388e3600"><td class="mdescLeft">&#160;</td><td class="mdescRight">Increment atomic uint64 variable. <a href="group__odp__atomic.html#gaa55026c7f953f826ec1d5337388e3600">More...</a><br /></td></tr>
<tr class="separator:gaa55026c7f953f826ec1d5337388e3600"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8ba0ce6252d55dc932641261083bfd0b"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga8ba0ce6252d55dc932641261083bfd0b">odp_atomic_fetch_dec_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom)</td></tr>
<tr class="memdesc:ga8ba0ce6252d55dc932641261083bfd0b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch and decrement atomic uint64 variable. <a href="group__odp__atomic.html#ga8ba0ce6252d55dc932641261083bfd0b">More...</a><br /></td></tr>
<tr class="separator:ga8ba0ce6252d55dc932641261083bfd0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga21f2627ca0d9d877e2344c979c541af4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga21f2627ca0d9d877e2344c979c541af4">odp_atomic_dec_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom)</td></tr>
<tr class="memdesc:ga21f2627ca0d9d877e2344c979c541af4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decrement atomic uint64 variable. <a href="group__odp__atomic.html#ga21f2627ca0d9d877e2344c979c541af4">More...</a><br /></td></tr>
<tr class="separator:ga21f2627ca0d9d877e2344c979c541af4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga14e459e29e344a7cba00e13b3004744e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga14e459e29e344a7cba00e13b3004744e">odp_atomic_max_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom, uint64_t new_max)</td></tr>
<tr class="memdesc:ga14e459e29e344a7cba00e13b3004744e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update maximum value of atomic uint64 variable. <a href="group__odp__atomic.html#ga14e459e29e344a7cba00e13b3004744e">More...</a><br /></td></tr>
<tr class="separator:ga14e459e29e344a7cba00e13b3004744e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga35ee593c39894d4925c818eec5b763df"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga35ee593c39894d4925c818eec5b763df">odp_atomic_fetch_max_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom, uint64_t new_max)</td></tr>
<tr class="memdesc:ga35ee593c39894d4925c818eec5b763df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch and update maximum value of atomic uint64 variable. <a href="group__odp__atomic.html#ga35ee593c39894d4925c818eec5b763df">More...</a><br /></td></tr>
<tr class="separator:ga35ee593c39894d4925c818eec5b763df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaec59e03c30a8f25bbac7ccde8bd9e8a3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gaec59e03c30a8f25bbac7ccde8bd9e8a3">odp_atomic_min_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom, uint64_t new_min)</td></tr>
<tr class="memdesc:gaec59e03c30a8f25bbac7ccde8bd9e8a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update minimum value of atomic uint64 variable. <a href="group__odp__atomic.html#gaec59e03c30a8f25bbac7ccde8bd9e8a3">More...</a><br /></td></tr>
<tr class="separator:gaec59e03c30a8f25bbac7ccde8bd9e8a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4f226d197a1bd35628f887ee5049d816"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga4f226d197a1bd35628f887ee5049d816">odp_atomic_fetch_min_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom, uint64_t new_min)</td></tr>
<tr class="memdesc:ga4f226d197a1bd35628f887ee5049d816"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch and update minimum value of atomic uint64_t variable. <a href="group__odp__atomic.html#ga4f226d197a1bd35628f887ee5049d816">More...</a><br /></td></tr>
<tr class="separator:ga4f226d197a1bd35628f887ee5049d816"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gade746ba2cfa6952007f0454fade46acf"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gade746ba2cfa6952007f0454fade46acf">odp_atomic_cas_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom, uint64_t *old_val, uint64_t new_val)</td></tr>
<tr class="memdesc:gade746ba2cfa6952007f0454fade46acf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compare and swap atomic uint64 variable. <a href="group__odp__atomic.html#gade746ba2cfa6952007f0454fade46acf">More...</a><br /></td></tr>
<tr class="separator:gade746ba2cfa6952007f0454fade46acf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4d50872ccea51867df3f27b202a2de03"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga4d50872ccea51867df3f27b202a2de03">odp_atomic_xchg_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom, uint64_t new_val)</td></tr>
<tr class="memdesc:ga4d50872ccea51867df3f27b202a2de03"><td class="mdescLeft">&#160;</td><td class="mdescRight">Exchange value of atomic uint64 variable. <a href="group__odp__atomic.html#ga4d50872ccea51867df3f27b202a2de03">More...</a><br /></td></tr>
<tr class="separator:ga4d50872ccea51867df3f27b202a2de03"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2be63f3ac34e7180ac583f028885ac2d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga2be63f3ac34e7180ac583f028885ac2d">odp_atomic_bit_set_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom, uint64_t bits)</td></tr>
<tr class="memdesc:ga2be63f3ac34e7180ac583f028885ac2d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set bits in atomic uint64 variable. <a href="group__odp__atomic.html#ga2be63f3ac34e7180ac583f028885ac2d">More...</a><br /></td></tr>
<tr class="separator:ga2be63f3ac34e7180ac583f028885ac2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaebc2c92069e8f3b05b22da53a0928ee4"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gaebc2c92069e8f3b05b22da53a0928ee4">odp_atomic_bit_fetch_set_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom, uint64_t bits)</td></tr>
<tr class="memdesc:gaebc2c92069e8f3b05b22da53a0928ee4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch value and set bits in atomic uint64 variable. <a href="group__odp__atomic.html#gaebc2c92069e8f3b05b22da53a0928ee4">More...</a><br /></td></tr>
<tr class="separator:gaebc2c92069e8f3b05b22da53a0928ee4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf594f40b544486c5e33a77e3b1f403d8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gaf594f40b544486c5e33a77e3b1f403d8">odp_atomic_bit_clr_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom, uint64_t bits)</td></tr>
<tr class="memdesc:gaf594f40b544486c5e33a77e3b1f403d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear bits in atomic uint64 variable. <a href="group__odp__atomic.html#gaf594f40b544486c5e33a77e3b1f403d8">More...</a><br /></td></tr>
<tr class="separator:gaf594f40b544486c5e33a77e3b1f403d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7989c9a9e45d2ba10d9193f1f15d5932"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga7989c9a9e45d2ba10d9193f1f15d5932">odp_atomic_bit_fetch_clr_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom, uint64_t bits)</td></tr>
<tr class="memdesc:ga7989c9a9e45d2ba10d9193f1f15d5932"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch value and clear bits in atomic uint64 variable. <a href="group__odp__atomic.html#ga7989c9a9e45d2ba10d9193f1f15d5932">More...</a><br /></td></tr>
<tr class="separator:ga7989c9a9e45d2ba10d9193f1f15d5932"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf03347dd42f46f77b5ad0029e59c3f4d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gaf03347dd42f46f77b5ad0029e59c3f4d">odp_atomic_init_u128</a> (<a class="el" href="group__odp__atomic.html#gac9a0fd8401af4bca4204d89033fbce5e">odp_atomic_u128_t</a> *atom, <a class="el" href="group__odp__std.html#ga97ecc7754869729d40ef5dd8659e0ce8">odp_u128_t</a> val)</td></tr>
<tr class="memdesc:gaf03347dd42f46f77b5ad0029e59c3f4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize atomic odp_u128_t variable. <a href="group__odp__atomic.html#gaf03347dd42f46f77b5ad0029e59c3f4d">More...</a><br /></td></tr>
<tr class="separator:gaf03347dd42f46f77b5ad0029e59c3f4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac4c8046b0635028ab140d583cc0bc84c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__odp__std.html#ga97ecc7754869729d40ef5dd8659e0ce8">odp_u128_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gac4c8046b0635028ab140d583cc0bc84c">odp_atomic_load_u128</a> (<a class="el" href="group__odp__atomic.html#gac9a0fd8401af4bca4204d89033fbce5e">odp_atomic_u128_t</a> *atom)</td></tr>
<tr class="memdesc:gac4c8046b0635028ab140d583cc0bc84c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load value of atomic odp_u128_t variable. <a href="group__odp__atomic.html#gac4c8046b0635028ab140d583cc0bc84c">More...</a><br /></td></tr>
<tr class="separator:gac4c8046b0635028ab140d583cc0bc84c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf239184c450e89e4ffe8c48f2c133591"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gaf239184c450e89e4ffe8c48f2c133591">odp_atomic_store_u128</a> (<a class="el" href="group__odp__atomic.html#gac9a0fd8401af4bca4204d89033fbce5e">odp_atomic_u128_t</a> *atom, <a class="el" href="group__odp__std.html#ga97ecc7754869729d40ef5dd8659e0ce8">odp_u128_t</a> val)</td></tr>
<tr class="memdesc:gaf239184c450e89e4ffe8c48f2c133591"><td class="mdescLeft">&#160;</td><td class="mdescRight">Store value to atomic odp_u128_t variable. <a href="group__odp__atomic.html#gaf239184c450e89e4ffe8c48f2c133591">More...</a><br /></td></tr>
<tr class="separator:gaf239184c450e89e4ffe8c48f2c133591"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab2693eb82a752a407ca37d7d51698106"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gab2693eb82a752a407ca37d7d51698106">odp_atomic_cas_u128</a> (<a class="el" href="group__odp__atomic.html#gac9a0fd8401af4bca4204d89033fbce5e">odp_atomic_u128_t</a> *atom, <a class="el" href="group__odp__std.html#ga97ecc7754869729d40ef5dd8659e0ce8">odp_u128_t</a> *old_val, <a class="el" href="group__odp__std.html#ga97ecc7754869729d40ef5dd8659e0ce8">odp_u128_t</a> new_val)</td></tr>
<tr class="memdesc:gab2693eb82a752a407ca37d7d51698106"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compare and swap atomic odp_u128_t variable. <a href="group__odp__atomic.html#gab2693eb82a752a407ca37d7d51698106">More...</a><br /></td></tr>
<tr class="separator:gab2693eb82a752a407ca37d7d51698106"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8004b5dd78f809deff4670cd32cb20cf"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga8004b5dd78f809deff4670cd32cb20cf">odp_atomic_load_acq_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom)</td></tr>
<tr class="memdesc:ga8004b5dd78f809deff4670cd32cb20cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load value of atomic uint32 variable using ACQUIRE memory ordering. <a href="group__odp__atomic.html#ga8004b5dd78f809deff4670cd32cb20cf">More...</a><br /></td></tr>
<tr class="separator:ga8004b5dd78f809deff4670cd32cb20cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafe98c0b4481c9ecdb57834113dbde02c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gafe98c0b4481c9ecdb57834113dbde02c">odp_atomic_store_rel_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom, uint32_t val)</td></tr>
<tr class="memdesc:gafe98c0b4481c9ecdb57834113dbde02c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Store value to atomic uint32 variable using RELEASE memory ordering. <a href="group__odp__atomic.html#gafe98c0b4481c9ecdb57834113dbde02c">More...</a><br /></td></tr>
<tr class="separator:gafe98c0b4481c9ecdb57834113dbde02c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9700cac3e1dbefc7b47a04fd5d385c30"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga9700cac3e1dbefc7b47a04fd5d385c30">odp_atomic_add_rel_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom, uint32_t val)</td></tr>
<tr class="memdesc:ga9700cac3e1dbefc7b47a04fd5d385c30"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add to atomic uint32 variable using RELEASE memory ordering. <a href="group__odp__atomic.html#ga9700cac3e1dbefc7b47a04fd5d385c30">More...</a><br /></td></tr>
<tr class="separator:ga9700cac3e1dbefc7b47a04fd5d385c30"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabbb1a8a1123cfcb06dffbb6fe9958735"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gabbb1a8a1123cfcb06dffbb6fe9958735">odp_atomic_sub_rel_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom, uint32_t val)</td></tr>
<tr class="memdesc:gabbb1a8a1123cfcb06dffbb6fe9958735"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subtract from atomic uint32 variable using RELEASE memory ordering. <a href="group__odp__atomic.html#gabbb1a8a1123cfcb06dffbb6fe9958735">More...</a><br /></td></tr>
<tr class="separator:gabbb1a8a1123cfcb06dffbb6fe9958735"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga184470f1dfa556075b3232dff69d6fc6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga184470f1dfa556075b3232dff69d6fc6">odp_atomic_cas_acq_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom, uint32_t *old_val, uint32_t new_val)</td></tr>
<tr class="memdesc:ga184470f1dfa556075b3232dff69d6fc6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compare and swap atomic uint32 variable using ACQUIRE memory ordering. <a href="group__odp__atomic.html#ga184470f1dfa556075b3232dff69d6fc6">More...</a><br /></td></tr>
<tr class="separator:ga184470f1dfa556075b3232dff69d6fc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9cf83c08ac5e59208b9408d7fbbee6f2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga9cf83c08ac5e59208b9408d7fbbee6f2">odp_atomic_cas_rel_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom, uint32_t *old_val, uint32_t new_val)</td></tr>
<tr class="memdesc:ga9cf83c08ac5e59208b9408d7fbbee6f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compare and swap atomic uint32 variable using RELEASE memory ordering. <a href="group__odp__atomic.html#ga9cf83c08ac5e59208b9408d7fbbee6f2">More...</a><br /></td></tr>
<tr class="separator:ga9cf83c08ac5e59208b9408d7fbbee6f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gada7a055c1aa66a0d6008a0950cce1bbf"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gada7a055c1aa66a0d6008a0950cce1bbf">odp_atomic_cas_acq_rel_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom, uint32_t *old_val, uint32_t new_val)</td></tr>
<tr class="memdesc:gada7a055c1aa66a0d6008a0950cce1bbf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compare and swap atomic uint32 variable using ACQUIRE-and-RELEASE memory ordering. <a href="group__odp__atomic.html#gada7a055c1aa66a0d6008a0950cce1bbf">More...</a><br /></td></tr>
<tr class="separator:gada7a055c1aa66a0d6008a0950cce1bbf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9d72b99ca4396dee52a848cc17f08aab"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga9d72b99ca4396dee52a848cc17f08aab">odp_atomic_bit_set_rel_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom, uint32_t bits)</td></tr>
<tr class="memdesc:ga9d72b99ca4396dee52a848cc17f08aab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set bits in atomic uint32 variable using RELEASE memory ordering. <a href="group__odp__atomic.html#ga9d72b99ca4396dee52a848cc17f08aab">More...</a><br /></td></tr>
<tr class="separator:ga9d72b99ca4396dee52a848cc17f08aab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf81686b3b8d1d9985a90796041f37f23"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gaf81686b3b8d1d9985a90796041f37f23">odp_atomic_bit_clr_rel_u32</a> (<a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *atom, uint32_t bits)</td></tr>
<tr class="memdesc:gaf81686b3b8d1d9985a90796041f37f23"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear bits in atomic uint32 variable using RELEASE memory ordering. <a href="group__odp__atomic.html#gaf81686b3b8d1d9985a90796041f37f23">More...</a><br /></td></tr>
<tr class="separator:gaf81686b3b8d1d9985a90796041f37f23"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3989a8670e7d4cf8792bc66b7a35067a"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga3989a8670e7d4cf8792bc66b7a35067a">odp_atomic_load_acq_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom)</td></tr>
<tr class="memdesc:ga3989a8670e7d4cf8792bc66b7a35067a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load value of atomic uint64 variable using ACQUIRE memory ordering. <a href="group__odp__atomic.html#ga3989a8670e7d4cf8792bc66b7a35067a">More...</a><br /></td></tr>
<tr class="separator:ga3989a8670e7d4cf8792bc66b7a35067a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga048eaef4215c07cb7fd140011fd0ee36"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga048eaef4215c07cb7fd140011fd0ee36">odp_atomic_store_rel_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom, uint64_t val)</td></tr>
<tr class="memdesc:ga048eaef4215c07cb7fd140011fd0ee36"><td class="mdescLeft">&#160;</td><td class="mdescRight">Store value to atomic uint64 variable using RELEASE memory ordering. <a href="group__odp__atomic.html#ga048eaef4215c07cb7fd140011fd0ee36">More...</a><br /></td></tr>
<tr class="separator:ga048eaef4215c07cb7fd140011fd0ee36"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae209fae9198e26e675f5898e381c2f79"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gae209fae9198e26e675f5898e381c2f79">odp_atomic_add_rel_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom, uint64_t val)</td></tr>
<tr class="memdesc:gae209fae9198e26e675f5898e381c2f79"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add to atomic uint64 variable using RELEASE memory ordering. <a href="group__odp__atomic.html#gae209fae9198e26e675f5898e381c2f79">More...</a><br /></td></tr>
<tr class="separator:gae209fae9198e26e675f5898e381c2f79"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf138a13895a3a8738544ab2d7c12fead"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gaf138a13895a3a8738544ab2d7c12fead">odp_atomic_sub_rel_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom, uint64_t val)</td></tr>
<tr class="memdesc:gaf138a13895a3a8738544ab2d7c12fead"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subtract from atomic uint64 variable using RELEASE memory ordering. <a href="group__odp__atomic.html#gaf138a13895a3a8738544ab2d7c12fead">More...</a><br /></td></tr>
<tr class="separator:gaf138a13895a3a8738544ab2d7c12fead"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaefdaee5b4b0b35a3736d72c3b8ce0665"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gaefdaee5b4b0b35a3736d72c3b8ce0665">odp_atomic_cas_acq_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom, uint64_t *old_val, uint64_t new_val)</td></tr>
<tr class="memdesc:gaefdaee5b4b0b35a3736d72c3b8ce0665"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compare and swap atomic uint64 variable using ACQUIRE memory ordering. <a href="group__odp__atomic.html#gaefdaee5b4b0b35a3736d72c3b8ce0665">More...</a><br /></td></tr>
<tr class="separator:gaefdaee5b4b0b35a3736d72c3b8ce0665"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga13e70b35bd1757901c3f0d2afdac91b6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga13e70b35bd1757901c3f0d2afdac91b6">odp_atomic_cas_rel_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom, uint64_t *old_val, uint64_t new_val)</td></tr>
<tr class="memdesc:ga13e70b35bd1757901c3f0d2afdac91b6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compare and swap atomic uint64 variable using RELEASE memory ordering. <a href="group__odp__atomic.html#ga13e70b35bd1757901c3f0d2afdac91b6">More...</a><br /></td></tr>
<tr class="separator:ga13e70b35bd1757901c3f0d2afdac91b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga18771dece179231e4be80d9947da21de"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga18771dece179231e4be80d9947da21de">odp_atomic_cas_acq_rel_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom, uint64_t *old_val, uint64_t new_val)</td></tr>
<tr class="memdesc:ga18771dece179231e4be80d9947da21de"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compare and swap atomic uint64 variable using ACQUIRE-and-RELEASE memory ordering. <a href="group__odp__atomic.html#ga18771dece179231e4be80d9947da21de">More...</a><br /></td></tr>
<tr class="separator:ga18771dece179231e4be80d9947da21de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8a08d0ebf3b31fc8ff63fb8232db18cd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga8a08d0ebf3b31fc8ff63fb8232db18cd">odp_atomic_bit_set_rel_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom, uint64_t bits)</td></tr>
<tr class="memdesc:ga8a08d0ebf3b31fc8ff63fb8232db18cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set bits in atomic uint64 variable using RELEASE memory ordering. <a href="group__odp__atomic.html#ga8a08d0ebf3b31fc8ff63fb8232db18cd">More...</a><br /></td></tr>
<tr class="separator:ga8a08d0ebf3b31fc8ff63fb8232db18cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2feced8395fa3059f4b7df3ee48d6191"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga2feced8395fa3059f4b7df3ee48d6191">odp_atomic_bit_clr_rel_u64</a> (<a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *atom, uint64_t bits)</td></tr>
<tr class="memdesc:ga2feced8395fa3059f4b7df3ee48d6191"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear bits in atomic uint64 variable using RELEASE memory ordering. <a href="group__odp__atomic.html#ga2feced8395fa3059f4b7df3ee48d6191">More...</a><br /></td></tr>
<tr class="separator:ga2feced8395fa3059f4b7df3ee48d6191"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4e23601c8e4122ddc8500f8855cd498d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga4e23601c8e4122ddc8500f8855cd498d">odp_atomic_lock_free_u64</a> (<a class="el" href="unionodp__atomic__op__t.html">odp_atomic_op_t</a> *atomic_op)</td></tr>
<tr class="memdesc:ga4e23601c8e4122ddc8500f8855cd498d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query which atomic uint64 operations are lock-free. <a href="group__odp__atomic.html#ga4e23601c8e4122ddc8500f8855cd498d">More...</a><br /></td></tr>
<tr class="separator:ga4e23601c8e4122ddc8500f8855cd498d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9f4a9023bc846a6b7a96af3e9178ca4c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga9f4a9023bc846a6b7a96af3e9178ca4c">odp_atomic_cas_acq_u128</a> (<a class="el" href="group__odp__atomic.html#gac9a0fd8401af4bca4204d89033fbce5e">odp_atomic_u128_t</a> *atom, <a class="el" href="group__odp__std.html#ga97ecc7754869729d40ef5dd8659e0ce8">odp_u128_t</a> *old_val, <a class="el" href="group__odp__std.html#ga97ecc7754869729d40ef5dd8659e0ce8">odp_u128_t</a> new_val)</td></tr>
<tr class="memdesc:ga9f4a9023bc846a6b7a96af3e9178ca4c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compare and swap atomic odp_u128_t variable using ACQUIRE memory ordering. <a href="group__odp__atomic.html#ga9f4a9023bc846a6b7a96af3e9178ca4c">More...</a><br /></td></tr>
<tr class="separator:ga9f4a9023bc846a6b7a96af3e9178ca4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab631ba9c8fe75d077ec2c76443cdd464"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gab631ba9c8fe75d077ec2c76443cdd464">odp_atomic_cas_rel_u128</a> (<a class="el" href="group__odp__atomic.html#gac9a0fd8401af4bca4204d89033fbce5e">odp_atomic_u128_t</a> *atom, <a class="el" href="group__odp__std.html#ga97ecc7754869729d40ef5dd8659e0ce8">odp_u128_t</a> *old_val, <a class="el" href="group__odp__std.html#ga97ecc7754869729d40ef5dd8659e0ce8">odp_u128_t</a> new_val)</td></tr>
<tr class="memdesc:gab631ba9c8fe75d077ec2c76443cdd464"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compare and swap atomic odp_u128_t variable using RELEASE memory ordering. <a href="group__odp__atomic.html#gab631ba9c8fe75d077ec2c76443cdd464">More...</a><br /></td></tr>
<tr class="separator:gab631ba9c8fe75d077ec2c76443cdd464"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga38f430cd4c746ab16d4312d2d7fabc3f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#ga38f430cd4c746ab16d4312d2d7fabc3f">odp_atomic_cas_acq_rel_u128</a> (<a class="el" href="group__odp__atomic.html#gac9a0fd8401af4bca4204d89033fbce5e">odp_atomic_u128_t</a> *atom, <a class="el" href="group__odp__std.html#ga97ecc7754869729d40ef5dd8659e0ce8">odp_u128_t</a> *old_val, <a class="el" href="group__odp__std.html#ga97ecc7754869729d40ef5dd8659e0ce8">odp_u128_t</a> new_val)</td></tr>
<tr class="memdesc:ga38f430cd4c746ab16d4312d2d7fabc3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compare and swap atomic odp_u128_t variable using ACQUIRE-and-RELEASE memory ordering. <a href="group__odp__atomic.html#ga38f430cd4c746ab16d4312d2d7fabc3f">More...</a><br /></td></tr>
<tr class="separator:ga38f430cd4c746ab16d4312d2d7fabc3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gababfe2ac33e5110790e47f0ebd3d8c5a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__odp__atomic.html#gababfe2ac33e5110790e47f0ebd3d8c5a">odp_atomic_lock_free_u128</a> (<a class="el" href="unionodp__atomic__op__t.html">odp_atomic_op_t</a> *atomic_op)</td></tr>
<tr class="memdesc:gababfe2ac33e5110790e47f0ebd3d8c5a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query which atomic odp_atomic_u128_t operations are lock-free. <a href="group__odp__atomic.html#gababfe2ac33e5110790e47f0ebd3d8c5a">More...</a><br /></td></tr>
<tr class="separator:gababfe2ac33e5110790e47f0ebd3d8c5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Typedef Documentation</h2>
<a id="ga2a5bd4b0ca5d1521fe2e0f300bc1144d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2a5bd4b0ca5d1521fe2e0f300bc1144d">&#9670;&nbsp;</a></span>odp_atomic_op_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef union <a class="el" href="unionodp__atomic__op__t.html">odp_atomic_op_t</a> <a class="el" href="unionodp__atomic__op__t.html">odp_atomic_op_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Atomic operations. </p>
<p>Atomic operations listed in a bit field structure. </p>
</div>
</div>
<a id="gac9a0fd8401af4bca4204d89033fbce5e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac9a0fd8401af4bca4204d89033fbce5e">&#9670;&nbsp;</a></span>odp_atomic_u128_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__odp__atomic.html#gac9a0fd8401af4bca4204d89033fbce5e">odp_atomic_u128_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Atomic 128-bit unsigned integer. </p>
<p>Atomic 128-bit unsigned integer </p>
</div>
</div>
<a id="ga4a182dc814319291a26bfa173ac2ae74"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4a182dc814319291a26bfa173ac2ae74">&#9670;&nbsp;</a></span>odp_atomic_u64_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Atomic 64-bit unsigned integer. </p>
<p>Atomic 64-bit unsigned integer </p>
</div>
</div>
<a id="ga0b52bd24dbcebefacecc664f3f0e2001"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0b52bd24dbcebefacecc664f3f0e2001">&#9670;&nbsp;</a></span>odp_atomic_u32_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Atomic 32-bit unsigned integer. </p>
<p>Atomic 32-bit unsigned integer </p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="ga0029015adacaadb06ee94ea67d00eece"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0029015adacaadb06ee94ea67d00eece">&#9670;&nbsp;</a></span>odp_atomic_init_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_init_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize atomic uint32 variable. </p>
<p>Initializes the atomic variable with 'val'. This operation is not atomic. Application must ensure that there's no race condition while initializing the variable.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">val</td><td>Value to initialize the variable with </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga1ebc0fa6d690c24bd2bcc38bcb9a2276"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1ebc0fa6d690c24bd2bcc38bcb9a2276">&#9670;&nbsp;</a></span>odp_atomic_load_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t odp_atomic_load_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Load value of atomic uint32 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Value of the variable </dd></dl>
</div>
</div>
<a id="gaa6d2d16a9ef9897b1442d77e41f7101e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa6d2d16a9ef9897b1442d77e41f7101e">&#9670;&nbsp;</a></span>odp_atomic_store_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_store_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Store value to atomic uint32 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">val</td><td>Value to store in the variable </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga71a1eeba2eeafb1a0d09728f79a6a4c4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga71a1eeba2eeafb1a0d09728f79a6a4c4">&#9670;&nbsp;</a></span>odp_atomic_fetch_add_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t odp_atomic_fetch_add_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Fetch and add to atomic uint32 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">val</td><td>Value to be added to the variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Value of the variable before the addition </dd></dl>
</div>
</div>
<a id="ga1d19f934c326b163f94196e72503969b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1d19f934c326b163f94196e72503969b">&#9670;&nbsp;</a></span>odp_atomic_add_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_add_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add to atomic uint32 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">val</td><td>Value to be added to the variable </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga359036d8823a9b2a0aceb6d7df3009c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga359036d8823a9b2a0aceb6d7df3009c3">&#9670;&nbsp;</a></span>odp_atomic_fetch_sub_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t odp_atomic_fetch_sub_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Fetch and subtract from atomic uint32 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">val</td><td>Value to be subtracted from the variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Value of the variable before the subtraction </dd></dl>
</div>
</div>
<a id="gaeebfa33e021f63f52a4b0d49d454cfc4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaeebfa33e021f63f52a4b0d49d454cfc4">&#9670;&nbsp;</a></span>odp_atomic_sub_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_sub_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Subtract from atomic uint32 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">val</td><td>Value to be subtracted from the variable </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga6c3e834a2aed06d9d641465a327fb2b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6c3e834a2aed06d9d641465a327fb2b5">&#9670;&nbsp;</a></span>odp_atomic_fetch_inc_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t odp_atomic_fetch_inc_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Fetch and increment atomic uint32 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Value of the variable before the increment </dd></dl>
</div>
</div>
<a id="ga20dd8163395000df923f3f5112626a2e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga20dd8163395000df923f3f5112626a2e">&#9670;&nbsp;</a></span>odp_atomic_inc_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_inc_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Increment atomic uint32 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gac84cb77c8a0d6ab0a073d0b9ebc99e9f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac84cb77c8a0d6ab0a073d0b9ebc99e9f">&#9670;&nbsp;</a></span>odp_atomic_fetch_dec_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t odp_atomic_fetch_dec_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Fetch and decrement atomic uint32 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Value of the variable before the subtraction </dd></dl>
</div>
</div>
<a id="ga54195916c9a67724da041679e9ab72fa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga54195916c9a67724da041679e9ab72fa">&#9670;&nbsp;</a></span>odp_atomic_dec_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_dec_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Decrement atomic uint32 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga3302f80d627806b50b4f413024c86c17"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3302f80d627806b50b4f413024c86c17">&#9670;&nbsp;</a></span>odp_atomic_max_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_max_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>new_max</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Update maximum value of atomic uint32 variable. </p>
<p>Compares value of atomic variable to the new maximum value. If the new value is greater than the current value, writes the new value into the variable.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">new_max</td><td>New maximum value to be written into the atomic variable </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga13f748e6cdd7bc9d75cd9f96cef11f8f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga13f748e6cdd7bc9d75cd9f96cef11f8f">&#9670;&nbsp;</a></span>odp_atomic_fetch_max_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t odp_atomic_fetch_max_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>new_max</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Fetch and update maximum value of atomic uint32 variable. </p>
<p>Compares value of atomic variable to the new maximum value. If the new value is greater than the current value, writes the new value into the variable. Always returns the original value of the atomic variable.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">new_max</td><td>New maximum value to be written into the atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Original value of the atomic variable </dd></dl>
</div>
</div>
<a id="ga59db49aabd06fd8393c73defb648959b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga59db49aabd06fd8393c73defb648959b">&#9670;&nbsp;</a></span>odp_atomic_min_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_min_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>new_min</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Update minimum value of atomic uint32 variable. </p>
<p>Compares value of atomic variable to the new minimum value. If the new value is less than the current value, writes the new value into the variable.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">new_min</td><td>New minimum value to be written into the atomic variable </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga53bd0e5691dcdbd72986d4f1e608ebfe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga53bd0e5691dcdbd72986d4f1e608ebfe">&#9670;&nbsp;</a></span>odp_atomic_fetch_min_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t odp_atomic_fetch_min_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>new_min</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Fetch and update minimum value of atomic uint32 variable. </p>
<p>Compares value of atomic variable to the new minimum value. If the new value is less than the current value, writes the new value into the variable. Always returns the original value of the atomic variable.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">new_min</td><td>New minimum value to be written into the atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Original value of the atomic variable </dd></dl>
</div>
</div>
<a id="ga9568820afe533a23dbdd8982ca6420cf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9568820afe533a23dbdd8982ca6420cf">&#9670;&nbsp;</a></span>odp_atomic_cas_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int odp_atomic_cas_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t *&#160;</td>
<td class="paramname"><em>old_val</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>new_val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Compare and swap atomic uint32 variable. </p>
<p>Compares value of atomic variable to the value pointed by 'old_val'. If the values are equal, the operation writes 'new_val' into the atomic variable and returns success. The operation returns failure only when the values are not equal (strong CAS operation). The current value of atomic variable is written into 'old_val' on failure.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">old_val</td><td>Pointer to the old value of the atomic variable. Operation updates this value on failure. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">new_val</td><td>New value to be written into the atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on failure, !0 on success </dd></dl>
</div>
</div>
<a id="gaea9d16228f8266b7cb16060a077c7f21"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaea9d16228f8266b7cb16060a077c7f21">&#9670;&nbsp;</a></span>odp_atomic_xchg_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t odp_atomic_xchg_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>new_val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Exchange value of atomic uint32 variable. </p>
<p>Atomically replaces the value of atomic variable with the new value. Returns the old value.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">new_val</td><td>New value of the atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Value of the variable before the operation </dd></dl>
</div>
</div>
<a id="ga1692bc0087632952de4efc16c04db43f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1692bc0087632952de4efc16c04db43f">&#9670;&nbsp;</a></span>odp_atomic_bit_set_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_bit_set_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>bits</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set bits in atomic uint32 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">bits</td><td>Bits to set </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga86c68307f6290dcef1ee830c3245bc84"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga86c68307f6290dcef1ee830c3245bc84">&#9670;&nbsp;</a></span>odp_atomic_bit_fetch_set_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t odp_atomic_bit_fetch_set_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>bits</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Fetch value and set bits in atomic uint32 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">bits</td><td>Bits to set</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Value of the variable before modification </dd></dl>
</div>
</div>
<a id="ga9eaa604a2d5e147a456c4c129314c9ee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9eaa604a2d5e147a456c4c129314c9ee">&#9670;&nbsp;</a></span>odp_atomic_bit_clr_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_bit_clr_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>bits</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Clear bits in atomic uint32 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">bits</td><td>Bits to clear </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gac038b3dc881210eb30e090d19ba72482"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac038b3dc881210eb30e090d19ba72482">&#9670;&nbsp;</a></span>odp_atomic_bit_fetch_clr_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t odp_atomic_bit_fetch_clr_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>bits</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Fetch value and clear bits in atomic uint32 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">bits</td><td>Bits to clear</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Value of the variable before modification </dd></dl>
</div>
</div>
<a id="ga325f41ac9f4b2220d0562e91dbaafc86"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga325f41ac9f4b2220d0562e91dbaafc86">&#9670;&nbsp;</a></span>odp_atomic_init_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_init_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize atomic uint64 variable. </p>
<p>Initializes the atomic variable with 'val'. This operation is not atomic. Application must ensure that there's no race condition while initializing the variable.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">val</td><td>Value to initialize the variable with </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gafe63805cc280307e31478439280537e2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafe63805cc280307e31478439280537e2">&#9670;&nbsp;</a></span>odp_atomic_load_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint64_t odp_atomic_load_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Load value of atomic uint64 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Value of the variable </dd></dl>
</div>
</div>
<a id="gacc6b59f6d2088a655185657caa007b7b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gacc6b59f6d2088a655185657caa007b7b">&#9670;&nbsp;</a></span>odp_atomic_store_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_store_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Store value to atomic uint64 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">val</td><td>Value to store in the variable </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gaf95f1275cd1cba7b0544f4a98b90d474"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf95f1275cd1cba7b0544f4a98b90d474">&#9670;&nbsp;</a></span>odp_atomic_fetch_add_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint64_t odp_atomic_fetch_add_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Fetch and add to atomic uint64 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">val</td><td>Value to be added to the variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Value of the variable before the addition </dd></dl>
</div>
</div>
<a id="gad8d0b05d2773ce8df05b60c5dee9d54f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad8d0b05d2773ce8df05b60c5dee9d54f">&#9670;&nbsp;</a></span>odp_atomic_add_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_add_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add to atomic uint64 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">val</td><td>Value to be added to the variable </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gab01086bdbac2b9ec4df776ce3902fa2d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab01086bdbac2b9ec4df776ce3902fa2d">&#9670;&nbsp;</a></span>odp_atomic_fetch_sub_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint64_t odp_atomic_fetch_sub_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Fetch and subtract from atomic uint64 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">val</td><td>Value to be subtracted from the variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Value of the variable before the subtraction </dd></dl>
</div>
</div>
<a id="gac13af1aae3162fdd17e8eaa5e44692c8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac13af1aae3162fdd17e8eaa5e44692c8">&#9670;&nbsp;</a></span>odp_atomic_sub_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_sub_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Subtract from atomic uint64 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">val</td><td>Value to be subtracted from the variable </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gae61c8a6fb13018976c2821370a7710a0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae61c8a6fb13018976c2821370a7710a0">&#9670;&nbsp;</a></span>odp_atomic_fetch_inc_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint64_t odp_atomic_fetch_inc_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Fetch and increment atomic uint64 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Value of the variable before the increment </dd></dl>
</div>
</div>
<a id="gaa55026c7f953f826ec1d5337388e3600"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa55026c7f953f826ec1d5337388e3600">&#9670;&nbsp;</a></span>odp_atomic_inc_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_inc_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Increment atomic uint64 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga8ba0ce6252d55dc932641261083bfd0b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8ba0ce6252d55dc932641261083bfd0b">&#9670;&nbsp;</a></span>odp_atomic_fetch_dec_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint64_t odp_atomic_fetch_dec_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Fetch and decrement atomic uint64 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Value of the variable before the decrement </dd></dl>
</div>
</div>
<a id="ga21f2627ca0d9d877e2344c979c541af4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga21f2627ca0d9d877e2344c979c541af4">&#9670;&nbsp;</a></span>odp_atomic_dec_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_dec_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Decrement atomic uint64 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga14e459e29e344a7cba00e13b3004744e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga14e459e29e344a7cba00e13b3004744e">&#9670;&nbsp;</a></span>odp_atomic_max_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_max_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>new_max</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Update maximum value of atomic uint64 variable. </p>
<p>Compares value of atomic variable to the new maximum value. If the new value is greater than the current value, writes the new value into the variable.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">new_max</td><td>New maximum value to be written into the atomic variable </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga35ee593c39894d4925c818eec5b763df"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga35ee593c39894d4925c818eec5b763df">&#9670;&nbsp;</a></span>odp_atomic_fetch_max_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint64_t odp_atomic_fetch_max_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>new_max</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Fetch and update maximum value of atomic uint64 variable. </p>
<p>Compares value of atomic variable to the new maximum value. If the new value is greater than the current value, writes the new value into the variable. Always returns the original value of the atomic variable.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">new_max</td><td>New maximum value to be written into the atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Original value of the atomic variable </dd></dl>
</div>
</div>
<a id="gaec59e03c30a8f25bbac7ccde8bd9e8a3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaec59e03c30a8f25bbac7ccde8bd9e8a3">&#9670;&nbsp;</a></span>odp_atomic_min_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_min_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>new_min</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Update minimum value of atomic uint64 variable. </p>
<p>Compares value of atomic variable to the new minimum value. If the new value is less than the current value, writes the new value into the variable.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">new_min</td><td>New minimum value to be written into the atomic variable </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga4f226d197a1bd35628f887ee5049d816"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4f226d197a1bd35628f887ee5049d816">&#9670;&nbsp;</a></span>odp_atomic_fetch_min_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint64_t odp_atomic_fetch_min_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>new_min</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Fetch and update minimum value of atomic uint64_t variable. </p>
<p>Compares value of atomic variable to the new minimum value. If the new value is less than the current value, writes the new value into the variable. Always returns the original value of the atomic variable.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">new_min</td><td>New minimum value to be written into the atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Original value of the atomic variable </dd></dl>
</div>
</div>
<a id="gade746ba2cfa6952007f0454fade46acf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gade746ba2cfa6952007f0454fade46acf">&#9670;&nbsp;</a></span>odp_atomic_cas_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int odp_atomic_cas_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t *&#160;</td>
<td class="paramname"><em>old_val</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>new_val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Compare and swap atomic uint64 variable. </p>
<p>Compares value of atomic variable to the value pointed by 'old_val'. If the values are equal, the operation writes 'new_val' into the atomic variable and returns success. The operation returns failure only when the values are not equal (strong CAS operation). The current value of atomic variable is written into 'old_val' on failure.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">old_val</td><td>Pointer to the old value of the atomic variable. Operation updates this value on failure. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">new_val</td><td>New value to be written into the atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on failure, !0 on success </dd></dl>
</div>
</div>
<a id="ga4d50872ccea51867df3f27b202a2de03"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4d50872ccea51867df3f27b202a2de03">&#9670;&nbsp;</a></span>odp_atomic_xchg_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint64_t odp_atomic_xchg_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>new_val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Exchange value of atomic uint64 variable. </p>
<p>Atomically replaces the value of atomic variable with the new value. Returns the old value.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">new_val</td><td>New value of the atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Value of the variable before the operation </dd></dl>
</div>
</div>
<a id="ga2be63f3ac34e7180ac583f028885ac2d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2be63f3ac34e7180ac583f028885ac2d">&#9670;&nbsp;</a></span>odp_atomic_bit_set_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_bit_set_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>bits</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set bits in atomic uint64 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">bits</td><td>Bits to set </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gaebc2c92069e8f3b05b22da53a0928ee4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaebc2c92069e8f3b05b22da53a0928ee4">&#9670;&nbsp;</a></span>odp_atomic_bit_fetch_set_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint64_t odp_atomic_bit_fetch_set_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>bits</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Fetch value and set bits in atomic uint64 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">bits</td><td>Bits to set</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Value of the variable before modification </dd></dl>
</div>
</div>
<a id="gaf594f40b544486c5e33a77e3b1f403d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf594f40b544486c5e33a77e3b1f403d8">&#9670;&nbsp;</a></span>odp_atomic_bit_clr_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_bit_clr_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>bits</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Clear bits in atomic uint64 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">bits</td><td>Bits to clear </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga7989c9a9e45d2ba10d9193f1f15d5932"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7989c9a9e45d2ba10d9193f1f15d5932">&#9670;&nbsp;</a></span>odp_atomic_bit_fetch_clr_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint64_t odp_atomic_bit_fetch_clr_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>bits</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Fetch value and clear bits in atomic uint64 variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">bits</td><td>Bits to clear</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Value of the variable before modification </dd></dl>
</div>
</div>
<a id="gaf03347dd42f46f77b5ad0029e59c3f4d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf03347dd42f46f77b5ad0029e59c3f4d">&#9670;&nbsp;</a></span>odp_atomic_init_u128()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_init_u128 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#gac9a0fd8401af4bca4204d89033fbce5e">odp_atomic_u128_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__odp__std.html#ga97ecc7754869729d40ef5dd8659e0ce8">odp_u128_t</a>&#160;</td>
<td class="paramname"><em>val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize atomic odp_u128_t variable. </p>
<p>Initializes the atomic variable with 'val'. This operation is not atomic. Application must ensure that there's no race condition while initializing the variable.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">val</td><td>Value to initialize the variable with </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gac4c8046b0635028ab140d583cc0bc84c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac4c8046b0635028ab140d583cc0bc84c">&#9670;&nbsp;</a></span>odp_atomic_load_u128()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__odp__std.html#ga97ecc7754869729d40ef5dd8659e0ce8">odp_u128_t</a> odp_atomic_load_u128 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#gac9a0fd8401af4bca4204d89033fbce5e">odp_atomic_u128_t</a> *&#160;</td>
<td class="paramname"><em>atom</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Load value of atomic odp_u128_t variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Value of the variable </dd></dl>
</div>
</div>
<a id="gaf239184c450e89e4ffe8c48f2c133591"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf239184c450e89e4ffe8c48f2c133591">&#9670;&nbsp;</a></span>odp_atomic_store_u128()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_store_u128 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#gac9a0fd8401af4bca4204d89033fbce5e">odp_atomic_u128_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__odp__std.html#ga97ecc7754869729d40ef5dd8659e0ce8">odp_u128_t</a>&#160;</td>
<td class="paramname"><em>val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Store value to atomic odp_u128_t variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">val</td><td>Value to store in the variable </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gab2693eb82a752a407ca37d7d51698106"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab2693eb82a752a407ca37d7d51698106">&#9670;&nbsp;</a></span>odp_atomic_cas_u128()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int odp_atomic_cas_u128 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#gac9a0fd8401af4bca4204d89033fbce5e">odp_atomic_u128_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__odp__std.html#ga97ecc7754869729d40ef5dd8659e0ce8">odp_u128_t</a> *&#160;</td>
<td class="paramname"><em>old_val</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__odp__std.html#ga97ecc7754869729d40ef5dd8659e0ce8">odp_u128_t</a>&#160;</td>
<td class="paramname"><em>new_val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Compare and swap atomic odp_u128_t variable. </p>
<p>Compares value of atomic variable to the value pointed by 'old_val'. If the values are equal, the operation writes 'new_val' into the atomic variable and returns success. The operation returns failure only when the values are not equal (strong CAS operation). The current value of atomic variable is written into 'old_val' on failure.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">old_val</td><td>Pointer to the old value of the atomic variable. Operation updates this value on failure. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">new_val</td><td>New value to be written into the atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on failure, !0 on success </dd></dl>
</div>
</div>
<a id="ga8004b5dd78f809deff4670cd32cb20cf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8004b5dd78f809deff4670cd32cb20cf">&#9670;&nbsp;</a></span>odp_atomic_load_acq_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t odp_atomic_load_acq_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Load value of atomic uint32 variable using ACQUIRE memory ordering. </p>
<p>Otherwise identical to <a class="el" href="group__odp__atomic.html#ga1ebc0fa6d690c24bd2bcc38bcb9a2276" title="Load value of atomic uint32 variable.">odp_atomic_load_u32()</a> but ensures ACQUIRE memory ordering.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Value of the variable </dd></dl>
</div>
</div>
<a id="gafe98c0b4481c9ecdb57834113dbde02c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafe98c0b4481c9ecdb57834113dbde02c">&#9670;&nbsp;</a></span>odp_atomic_store_rel_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_store_rel_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Store value to atomic uint32 variable using RELEASE memory ordering. </p>
<p>Otherwise identical to <a class="el" href="group__odp__atomic.html#gaa6d2d16a9ef9897b1442d77e41f7101e" title="Store value to atomic uint32 variable.">odp_atomic_store_u32()</a> but ensures RELEASE memory ordering.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">val</td><td>Value to store in the variable </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga9700cac3e1dbefc7b47a04fd5d385c30"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9700cac3e1dbefc7b47a04fd5d385c30">&#9670;&nbsp;</a></span>odp_atomic_add_rel_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_add_rel_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add to atomic uint32 variable using RELEASE memory ordering. </p>
<p>Otherwise identical to <a class="el" href="group__odp__atomic.html#ga1d19f934c326b163f94196e72503969b" title="Add to atomic uint32 variable.">odp_atomic_add_u32()</a> but ensures RELEASE memory ordering.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">val</td><td>Value to be added to the variable </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gabbb1a8a1123cfcb06dffbb6fe9958735"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabbb1a8a1123cfcb06dffbb6fe9958735">&#9670;&nbsp;</a></span>odp_atomic_sub_rel_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_sub_rel_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Subtract from atomic uint32 variable using RELEASE memory ordering. </p>
<p>Otherwise identical to <a class="el" href="group__odp__atomic.html#gaeebfa33e021f63f52a4b0d49d454cfc4" title="Subtract from atomic uint32 variable.">odp_atomic_sub_u32()</a> but ensures RELEASE memory ordering.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">val</td><td>Value to be subtracted from the variable </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga184470f1dfa556075b3232dff69d6fc6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga184470f1dfa556075b3232dff69d6fc6">&#9670;&nbsp;</a></span>odp_atomic_cas_acq_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int odp_atomic_cas_acq_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t *&#160;</td>
<td class="paramname"><em>old_val</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>new_val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Compare and swap atomic uint32 variable using ACQUIRE memory ordering. </p>
<p>Otherwise identical to <a class="el" href="group__odp__atomic.html#ga9568820afe533a23dbdd8982ca6420cf" title="Compare and swap atomic uint32 variable.">odp_atomic_cas_u32()</a> but ensures ACQUIRE memory ordering on success. Memory ordering is RELAXED on failure.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">old_val</td><td>Pointer to the old value of the atomic variable. Operation updates this value on failure. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">new_val</td><td>New value to be written into the atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on failure, !0 on success </dd></dl>
</div>
</div>
<a id="ga9cf83c08ac5e59208b9408d7fbbee6f2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9cf83c08ac5e59208b9408d7fbbee6f2">&#9670;&nbsp;</a></span>odp_atomic_cas_rel_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int odp_atomic_cas_rel_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t *&#160;</td>
<td class="paramname"><em>old_val</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>new_val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Compare and swap atomic uint32 variable using RELEASE memory ordering. </p>
<p>Otherwise identical to <a class="el" href="group__odp__atomic.html#ga9568820afe533a23dbdd8982ca6420cf" title="Compare and swap atomic uint32 variable.">odp_atomic_cas_u32()</a> but ensures RELEASE memory ordering on success. Memory ordering is RELAXED on failure.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">old_val</td><td>Pointer to the old value of the atomic variable. Operation updates this value on failure. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">new_val</td><td>New value to be written into the atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on failure, !0 on success </dd></dl>
</div>
</div>
<a id="gada7a055c1aa66a0d6008a0950cce1bbf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gada7a055c1aa66a0d6008a0950cce1bbf">&#9670;&nbsp;</a></span>odp_atomic_cas_acq_rel_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int odp_atomic_cas_acq_rel_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t *&#160;</td>
<td class="paramname"><em>old_val</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>new_val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Compare and swap atomic uint32 variable using ACQUIRE-and-RELEASE memory ordering. </p>
<p>Otherwise identical to <a class="el" href="group__odp__atomic.html#ga9568820afe533a23dbdd8982ca6420cf" title="Compare and swap atomic uint32 variable.">odp_atomic_cas_u32()</a> but ensures ACQUIRE-and-RELEASE memory ordering on success. Memory ordering is RELAXED on failure.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">old_val</td><td>Pointer to the old value of the atomic variable. Operation updates this value on failure. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">new_val</td><td>New value to be written into the atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on failure, !0 on success </dd></dl>
</div>
</div>
<a id="ga9d72b99ca4396dee52a848cc17f08aab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9d72b99ca4396dee52a848cc17f08aab">&#9670;&nbsp;</a></span>odp_atomic_bit_set_rel_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_bit_set_rel_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>bits</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set bits in atomic uint32 variable using RELEASE memory ordering. </p>
<p>Otherwise identical to <a class="el" href="group__odp__atomic.html#ga1692bc0087632952de4efc16c04db43f" title="Set bits in atomic uint32 variable.">odp_atomic_bit_set_u32()</a> but ensures RELEASE memory ordering.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">bits</td><td>Bits to set </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gaf81686b3b8d1d9985a90796041f37f23"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf81686b3b8d1d9985a90796041f37f23">&#9670;&nbsp;</a></span>odp_atomic_bit_clr_rel_u32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_bit_clr_rel_u32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga0b52bd24dbcebefacecc664f3f0e2001">odp_atomic_u32_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>bits</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Clear bits in atomic uint32 variable using RELEASE memory ordering. </p>
<p>Otherwise identical to <a class="el" href="group__odp__atomic.html#ga9eaa604a2d5e147a456c4c129314c9ee" title="Clear bits in atomic uint32 variable.">odp_atomic_bit_clr_u32()</a> but ensures RELEASE memory ordering.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">bits</td><td>Bits to clear </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga3989a8670e7d4cf8792bc66b7a35067a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3989a8670e7d4cf8792bc66b7a35067a">&#9670;&nbsp;</a></span>odp_atomic_load_acq_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint64_t odp_atomic_load_acq_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Load value of atomic uint64 variable using ACQUIRE memory ordering. </p>
<p>Otherwise identical to <a class="el" href="group__odp__atomic.html#gafe63805cc280307e31478439280537e2" title="Load value of atomic uint64 variable.">odp_atomic_load_u64()</a> but ensures ACQUIRE memory ordering.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Value of the variable </dd></dl>
</div>
</div>
<a id="ga048eaef4215c07cb7fd140011fd0ee36"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga048eaef4215c07cb7fd140011fd0ee36">&#9670;&nbsp;</a></span>odp_atomic_store_rel_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_store_rel_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Store value to atomic uint64 variable using RELEASE memory ordering. </p>
<p>Otherwise identical to <a class="el" href="group__odp__atomic.html#gacc6b59f6d2088a655185657caa007b7b" title="Store value to atomic uint64 variable.">odp_atomic_store_u64()</a> but ensures RELEASE memory ordering.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">val</td><td>Value to store in the variable </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gae209fae9198e26e675f5898e381c2f79"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae209fae9198e26e675f5898e381c2f79">&#9670;&nbsp;</a></span>odp_atomic_add_rel_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_add_rel_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add to atomic uint64 variable using RELEASE memory ordering. </p>
<p>Otherwise identical to <a class="el" href="group__odp__atomic.html#gad8d0b05d2773ce8df05b60c5dee9d54f" title="Add to atomic uint64 variable.">odp_atomic_add_u64()</a> but ensures RELEASE memory ordering.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">val</td><td>Value to be added to the variable </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gaf138a13895a3a8738544ab2d7c12fead"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf138a13895a3a8738544ab2d7c12fead">&#9670;&nbsp;</a></span>odp_atomic_sub_rel_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_sub_rel_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Subtract from atomic uint64 variable using RELEASE memory ordering. </p>
<p>Otherwise identical to <a class="el" href="group__odp__atomic.html#gac13af1aae3162fdd17e8eaa5e44692c8" title="Subtract from atomic uint64 variable.">odp_atomic_sub_u64()</a> but ensures RELEASE memory ordering.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">val</td><td>Value to be subtracted from the variable </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gaefdaee5b4b0b35a3736d72c3b8ce0665"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaefdaee5b4b0b35a3736d72c3b8ce0665">&#9670;&nbsp;</a></span>odp_atomic_cas_acq_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int odp_atomic_cas_acq_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t *&#160;</td>
<td class="paramname"><em>old_val</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>new_val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Compare and swap atomic uint64 variable using ACQUIRE memory ordering. </p>
<p>Otherwise identical to <a class="el" href="group__odp__atomic.html#gade746ba2cfa6952007f0454fade46acf" title="Compare and swap atomic uint64 variable.">odp_atomic_cas_u64()</a> but ensures ACQUIRE memory ordering on success. Memory ordering is RELAXED on failure.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">old_val</td><td>Pointer to the old value of the atomic variable. Operation updates this value on failure. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">new_val</td><td>New value to be written into the atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on failure, !0 on success </dd></dl>
</div>
</div>
<a id="ga13e70b35bd1757901c3f0d2afdac91b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga13e70b35bd1757901c3f0d2afdac91b6">&#9670;&nbsp;</a></span>odp_atomic_cas_rel_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int odp_atomic_cas_rel_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t *&#160;</td>
<td class="paramname"><em>old_val</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>new_val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Compare and swap atomic uint64 variable using RELEASE memory ordering. </p>
<p>Otherwise identical to <a class="el" href="group__odp__atomic.html#gade746ba2cfa6952007f0454fade46acf" title="Compare and swap atomic uint64 variable.">odp_atomic_cas_u64()</a> but ensures RELEASE memory ordering on success. Memory ordering is RELAXED on failure.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">old_val</td><td>Pointer to the old value of the atomic variable. Operation updates this value on failure. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">new_val</td><td>New value to be written into the atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on failure, !0 on success </dd></dl>
</div>
</div>
<a id="ga18771dece179231e4be80d9947da21de"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga18771dece179231e4be80d9947da21de">&#9670;&nbsp;</a></span>odp_atomic_cas_acq_rel_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int odp_atomic_cas_acq_rel_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t *&#160;</td>
<td class="paramname"><em>old_val</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>new_val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Compare and swap atomic uint64 variable using ACQUIRE-and-RELEASE memory ordering. </p>
<p>Otherwise identical to <a class="el" href="group__odp__atomic.html#gade746ba2cfa6952007f0454fade46acf" title="Compare and swap atomic uint64 variable.">odp_atomic_cas_u64()</a> but ensures ACQUIRE-and-RELEASE memory ordering on success. Memory ordering is RELAXED on failure.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">old_val</td><td>Pointer to the old value of the atomic variable. Operation updates this value on failure. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">new_val</td><td>New value to be written into the atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on failure, !0 on success </dd></dl>
</div>
</div>
<a id="ga8a08d0ebf3b31fc8ff63fb8232db18cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8a08d0ebf3b31fc8ff63fb8232db18cd">&#9670;&nbsp;</a></span>odp_atomic_bit_set_rel_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_bit_set_rel_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>bits</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set bits in atomic uint64 variable using RELEASE memory ordering. </p>
<p>Otherwise identical to <a class="el" href="group__odp__atomic.html#ga2be63f3ac34e7180ac583f028885ac2d" title="Set bits in atomic uint64 variable.">odp_atomic_bit_set_u64()</a> but ensures RELEASE memory ordering.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">bits</td><td>Bits to set </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga2feced8395fa3059f4b7df3ee48d6191"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2feced8395fa3059f4b7df3ee48d6191">&#9670;&nbsp;</a></span>odp_atomic_bit_clr_rel_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void odp_atomic_bit_clr_rel_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#ga4a182dc814319291a26bfa173ac2ae74">odp_atomic_u64_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>bits</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Clear bits in atomic uint64 variable using RELEASE memory ordering. </p>
<p>Otherwise identical to <a class="el" href="group__odp__atomic.html#gaf594f40b544486c5e33a77e3b1f403d8" title="Clear bits in atomic uint64 variable.">odp_atomic_bit_clr_u64()</a> but ensures RELEASE memory ordering.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramname">bits</td><td>Bits to clear </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga4e23601c8e4122ddc8500f8855cd498d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4e23601c8e4122ddc8500f8855cd498d">&#9670;&nbsp;</a></span>odp_atomic_lock_free_u64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int odp_atomic_lock_free_u64 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="unionodp__atomic__op__t.html">odp_atomic_op_t</a> *&#160;</td>
<td class="paramname"><em>atomic_op</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Query which atomic uint64 operations are lock-free. </p>
<p>Lock-free implementations have higher performance and scale better than implementations using locks. User can decide to use e.g. uint32 atomic variables instead of uint64 to optimize performance on platforms that implement a performance critical operation using locks.</p>
<p>Init operations (e.g. <a class="el" href="group__odp__atomic.html#ga325f41ac9f4b2220d0562e91dbaafc86" title="Initialize atomic uint64 variable.">odp_atomic_init_u64()</a>) are not atomic. This function clears the op.init bit but will never set it to one.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atomic_op</td><td>Pointer to atomic operation structure for storing operation flags. All bits are initialized to zero during the operation. The parameter is ignored when NULL. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">0</td><td>None of the operations are lock-free </td></tr>
<tr><td class="paramname">1</td><td>Some of the operations are lock-free </td></tr>
<tr><td class="paramname">2</td><td>All operations are lock-free </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga9f4a9023bc846a6b7a96af3e9178ca4c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9f4a9023bc846a6b7a96af3e9178ca4c">&#9670;&nbsp;</a></span>odp_atomic_cas_acq_u128()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int odp_atomic_cas_acq_u128 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#gac9a0fd8401af4bca4204d89033fbce5e">odp_atomic_u128_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__odp__std.html#ga97ecc7754869729d40ef5dd8659e0ce8">odp_u128_t</a> *&#160;</td>
<td class="paramname"><em>old_val</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__odp__std.html#ga97ecc7754869729d40ef5dd8659e0ce8">odp_u128_t</a>&#160;</td>
<td class="paramname"><em>new_val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Compare and swap atomic odp_u128_t variable using ACQUIRE memory ordering. </p>
<p>Otherwise identical to <a class="el" href="group__odp__atomic.html#gab2693eb82a752a407ca37d7d51698106" title="Compare and swap atomic odp_u128_t variable.">odp_atomic_cas_u128()</a> but ensures ACQUIRE memory ordering on success. Memory ordering is RELAXED on failure.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">old_val</td><td>Pointer to the old value of the atomic variable. Operation updates this value on failure. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">new_val</td><td>New value to be written into the atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on failure, !0 on success </dd></dl>
</div>
</div>
<a id="gab631ba9c8fe75d077ec2c76443cdd464"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab631ba9c8fe75d077ec2c76443cdd464">&#9670;&nbsp;</a></span>odp_atomic_cas_rel_u128()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int odp_atomic_cas_rel_u128 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#gac9a0fd8401af4bca4204d89033fbce5e">odp_atomic_u128_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__odp__std.html#ga97ecc7754869729d40ef5dd8659e0ce8">odp_u128_t</a> *&#160;</td>
<td class="paramname"><em>old_val</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__odp__std.html#ga97ecc7754869729d40ef5dd8659e0ce8">odp_u128_t</a>&#160;</td>
<td class="paramname"><em>new_val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Compare and swap atomic odp_u128_t variable using RELEASE memory ordering. </p>
<p>Otherwise identical to <a class="el" href="group__odp__atomic.html#gab2693eb82a752a407ca37d7d51698106" title="Compare and swap atomic odp_u128_t variable.">odp_atomic_cas_u128()</a> but ensures RELEASE memory ordering on success. Memory ordering is RELAXED on failure.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">old_val</td><td>Pointer to the old value of the atomic variable. Operation updates this value on failure. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">new_val</td><td>New value to be written into the atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on failure, !0 on success </dd></dl>
</div>
</div>
<a id="ga38f430cd4c746ab16d4312d2d7fabc3f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga38f430cd4c746ab16d4312d2d7fabc3f">&#9670;&nbsp;</a></span>odp_atomic_cas_acq_rel_u128()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int odp_atomic_cas_acq_rel_u128 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__odp__atomic.html#gac9a0fd8401af4bca4204d89033fbce5e">odp_atomic_u128_t</a> *&#160;</td>
<td class="paramname"><em>atom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__odp__std.html#ga97ecc7754869729d40ef5dd8659e0ce8">odp_u128_t</a> *&#160;</td>
<td class="paramname"><em>old_val</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__odp__std.html#ga97ecc7754869729d40ef5dd8659e0ce8">odp_u128_t</a>&#160;</td>
<td class="paramname"><em>new_val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Compare and swap atomic odp_u128_t variable using ACQUIRE-and-RELEASE memory ordering. </p>
<p>Otherwise identical to <a class="el" href="group__odp__atomic.html#gab2693eb82a752a407ca37d7d51698106" title="Compare and swap atomic odp_u128_t variable.">odp_atomic_cas_u128()</a> but ensures ACQUIRE-and-RELEASE memory ordering on success. Memory ordering is RELAXED on failure.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">atom</td><td>Pointer to atomic variable </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">old_val</td><td>Pointer to the old value of the atomic variable. Operation updates this value on failure. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">new_val</td><td>New value to be written into the atomic variable</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on failure, !0 on success </dd></dl>
</div>
</div>
<a id="gababfe2ac33e5110790e47f0ebd3d8c5a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gababfe2ac33e5110790e47f0ebd3d8c5a">&#9670;&nbsp;</a></span>odp_atomic_lock_free_u128()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int odp_atomic_lock_free_u128 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="unionodp__atomic__op__t.html">odp_atomic_op_t</a> *&#160;</td>
<td class="paramname"><em>atomic_op</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Query which atomic odp_atomic_u128_t operations are lock-free. </p>
<p>Lock-free implementations have higher performance and scale better than implementations using locks.</p>
<p>Init operations (e.g. <a class="el" href="group__odp__atomic.html#gaf03347dd42f46f77b5ad0029e59c3f4d" title="Initialize atomic odp_u128_t variable.">odp_atomic_init_u128()</a>) are not atomic. This function clears the op.init bit but will never set it to one.</p>
<p>Note: 128-bit atomic API includes only init, load, store and CAS operations.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">atomic_op</td><td>Pointer to atomic operation structure for storing operation flags. All bits are initialized to zero during the operation. The parameter is ignored when NULL. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">0</td><td>None of the 128-bit atomic operations are lock-free </td></tr>
<tr><td class="paramname">1</td><td>Some of the 128-bit atomic operations are lock-free </td></tr>
<tr><td class="paramname">2</td><td>All 128-bit atomic operations are lock-free </td></tr>
</table>
</dd>
</dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
</ul>
</div>
</body>
</html>