]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
deploy: ffb3f9908e441c39186a8b9abb33742067f246f0
authordrakenclimber <drakenclimber@users.noreply.github.com>
Fri, 17 Dec 2021 22:35:50 +0000 (22:35 +0000)
committerdrakenclimber <drakenclimber@users.noreply.github.com>
Fri, 17 Dec 2021 22:35:50 +0000 (22:35 +0000)
194 files changed:
annotated.html [new file with mode: 0644]
bc_s.png [new file with mode: 0644]
bdwn.png [new file with mode: 0644]
cgrulesengd_8h_source.html [new file with mode: 0644]
classes.html [new file with mode: 0644]
closed.png [new file with mode: 0644]
config_8h_source.html [new file with mode: 0644]
dir_1563a38af0d3a5e4a6330d6d45e9792a.html [new file with mode: 0644]
dir_2d094300ae4f2c55dd459b9ec7dd0ad3.html [new file with mode: 0644]
dir_501cbd49daf77f17c121ad0979f93200.html [new file with mode: 0644]
dir_66a7763e2a9b96033a682558820d533e.html [new file with mode: 0644]
dir_68267d1309a1af8e8297ef4c3efbcdba.html [new file with mode: 0644]
dir_bab0433f19b0a5661c5e0a15547f54b2.html [new file with mode: 0644]
dir_d44c64559bbebec7f509842c48db8b23.html [new file with mode: 0644]
dir_ea91a2a72b7cbbf988d2bd2cd1d23e49.html [new file with mode: 0644]
doc.png [new file with mode: 0644]
doxygen.css [new file with mode: 0644]
doxygen.svg [new file with mode: 0644]
dynsections.js [new file with mode: 0644]
error_8h_source.html [new file with mode: 0644]
files.html [new file with mode: 0644]
folderclosed.png [new file with mode: 0644]
folderopen.png [new file with mode: 0644]
functions.html [new file with mode: 0644]
functions_vars.html [new file with mode: 0644]
group__group__config.html [new file with mode: 0644]
group__group__errors.html [new file with mode: 0644]
group__group__groups.html [new file with mode: 0644]
group__group__init.html [new file with mode: 0644]
group__group__iterators.html [new file with mode: 0644]
group__group__log.html [new file with mode: 0644]
group__group__tasks.html [new file with mode: 0644]
groups_8h_source.html [new file with mode: 0644]
index.html [new file with mode: 0644]
init_8h_source.html [new file with mode: 0644]
iterators_8h_source.html [new file with mode: 0644]
jquery.js [new file with mode: 0644]
libcgroup-internal_8h_source.html [new file with mode: 0644]
libcgroup_8h_source.html [new file with mode: 0644]
log_8h_source.html [new file with mode: 0644]
md_CONTRIBUTING.html [new file with mode: 0644]
md_README.html [new file with mode: 0644]
menu.js [new file with mode: 0644]
menudata.js [new file with mode: 0644]
modules.html [new file with mode: 0644]
nav_f.png [new file with mode: 0644]
nav_g.png [new file with mode: 0644]
nav_h.png [new file with mode: 0644]
open.png [new file with mode: 0644]
pages.html [new file with mode: 0644]
search/all_0.html [new file with mode: 0644]
search/all_0.js [new file with mode: 0644]
search/all_1.html [new file with mode: 0644]
search/all_1.js [new file with mode: 0644]
search/all_10.html [new file with mode: 0644]
search/all_10.js [new file with mode: 0644]
search/all_11.html [new file with mode: 0644]
search/all_11.js [new file with mode: 0644]
search/all_12.html [new file with mode: 0644]
search/all_12.js [new file with mode: 0644]
search/all_13.html [new file with mode: 0644]
search/all_13.js [new file with mode: 0644]
search/all_14.html [new file with mode: 0644]
search/all_14.js [new file with mode: 0644]
search/all_2.html [new file with mode: 0644]
search/all_2.js [new file with mode: 0644]
search/all_3.html [new file with mode: 0644]
search/all_3.js [new file with mode: 0644]
search/all_4.html [new file with mode: 0644]
search/all_4.js [new file with mode: 0644]
search/all_5.html [new file with mode: 0644]
search/all_5.js [new file with mode: 0644]
search/all_6.html [new file with mode: 0644]
search/all_6.js [new file with mode: 0644]
search/all_7.html [new file with mode: 0644]
search/all_7.js [new file with mode: 0644]
search/all_8.html [new file with mode: 0644]
search/all_8.js [new file with mode: 0644]
search/all_9.html [new file with mode: 0644]
search/all_9.js [new file with mode: 0644]
search/all_a.html [new file with mode: 0644]
search/all_a.js [new file with mode: 0644]
search/all_b.html [new file with mode: 0644]
search/all_b.js [new file with mode: 0644]
search/all_c.html [new file with mode: 0644]
search/all_c.js [new file with mode: 0644]
search/all_d.html [new file with mode: 0644]
search/all_d.js [new file with mode: 0644]
search/all_e.html [new file with mode: 0644]
search/all_e.js [new file with mode: 0644]
search/all_f.html [new file with mode: 0644]
search/all_f.js [new file with mode: 0644]
search/classes_0.html [new file with mode: 0644]
search/classes_0.js [new file with mode: 0644]
search/classes_1.html [new file with mode: 0644]
search/classes_1.js [new file with mode: 0644]
search/classes_2.html [new file with mode: 0644]
search/classes_2.js [new file with mode: 0644]
search/classes_3.html [new file with mode: 0644]
search/classes_3.js [new file with mode: 0644]
search/classes_4.html [new file with mode: 0644]
search/classes_4.js [new file with mode: 0644]
search/classes_5.html [new file with mode: 0644]
search/classes_5.js [new file with mode: 0644]
search/close.svg [new file with mode: 0644]
search/enums_0.html [new file with mode: 0644]
search/enums_0.js [new file with mode: 0644]
search/enumvalues_0.html [new file with mode: 0644]
search/enumvalues_0.js [new file with mode: 0644]
search/enumvalues_1.html [new file with mode: 0644]
search/enumvalues_1.js [new file with mode: 0644]
search/functions_0.html [new file with mode: 0644]
search/functions_0.js [new file with mode: 0644]
search/groups_0.html [new file with mode: 0644]
search/groups_0.js [new file with mode: 0644]
search/groups_1.html [new file with mode: 0644]
search/groups_1.js [new file with mode: 0644]
search/groups_2.html [new file with mode: 0644]
search/groups_2.js [new file with mode: 0644]
search/groups_3.html [new file with mode: 0644]
search/groups_3.js [new file with mode: 0644]
search/groups_4.html [new file with mode: 0644]
search/groups_4.js [new file with mode: 0644]
search/groups_5.html [new file with mode: 0644]
search/groups_5.js [new file with mode: 0644]
search/groups_6.html [new file with mode: 0644]
search/groups_6.js [new file with mode: 0644]
search/mag_sel.svg [new file with mode: 0644]
search/nomatches.html [new file with mode: 0644]
search/pages_0.html [new file with mode: 0644]
search/pages_0.js [new file with mode: 0644]
search/pages_1.html [new file with mode: 0644]
search/pages_1.js [new file with mode: 0644]
search/pages_2.html [new file with mode: 0644]
search/pages_2.js [new file with mode: 0644]
search/pages_3.html [new file with mode: 0644]
search/pages_3.js [new file with mode: 0644]
search/search.css [new file with mode: 0644]
search/search.js [new file with mode: 0644]
search/search_l.png [new file with mode: 0644]
search/search_m.png [new file with mode: 0644]
search/search_r.png [new file with mode: 0644]
search/searchdata.js [new file with mode: 0644]
search/variables_0.html [new file with mode: 0644]
search/variables_0.js [new file with mode: 0644]
search/variables_1.html [new file with mode: 0644]
search/variables_1.js [new file with mode: 0644]
search/variables_2.html [new file with mode: 0644]
search/variables_2.js [new file with mode: 0644]
search/variables_3.html [new file with mode: 0644]
search/variables_3.js [new file with mode: 0644]
search/variables_4.html [new file with mode: 0644]
search/variables_4.js [new file with mode: 0644]
search/variables_5.html [new file with mode: 0644]
search/variables_5.js [new file with mode: 0644]
search/variables_6.html [new file with mode: 0644]
search/variables_6.js [new file with mode: 0644]
search/variables_7.html [new file with mode: 0644]
search/variables_7.js [new file with mode: 0644]
splitbar.png [new file with mode: 0644]
structarray__parent__info.html [new file with mode: 0644]
structarray__unchanged.html [new file with mode: 0644]
structblack__list__type.html [new file with mode: 0644]
structcg__mount__point.html [new file with mode: 0644]
structcg__mount__table__s.html [new file with mode: 0644]
structcgroup.html [new file with mode: 0644]
structcgroup__controller.html [new file with mode: 0644]
structcgroup__dictionary.html [new file with mode: 0644]
structcgroup__dictionary__item.html [new file with mode: 0644]
structcgroup__dictionary__iterator.html [new file with mode: 0644]
structcgroup__file__info.html [new file with mode: 0644]
structcgroup__group__spec.html [new file with mode: 0644]
structcgroup__mount__point.html [new file with mode: 0644]
structcgroup__rule.html [new file with mode: 0644]
structcgroup__rule__list.html [new file with mode: 0644]
structcgroup__rules__data.html [new file with mode: 0644]
structcgroup__stat.html [new file with mode: 0644]
structcgroup__string__list.html [new file with mode: 0644]
structcgroup__tree__handle.html [new file with mode: 0644]
structcontrol__value.html [new file with mode: 0644]
structcontroller__data.html [new file with mode: 0644]
structext__cgroup__record.html [new file with mode: 0644]
structparent__info.html [new file with mode: 0644]
structunchanged__pid.html [new file with mode: 0644]
sync_off.png [new file with mode: 0644]
sync_on.png [new file with mode: 0644]
tab_a.png [new file with mode: 0644]
tab_b.png [new file with mode: 0644]
tab_h.png [new file with mode: 0644]
tab_s.png [new file with mode: 0644]
tabs.css [new file with mode: 0644]
tasks_8h_source.html [new file with mode: 0644]
todo.html [new file with mode: 0644]
tools-common_8h_source.html [new file with mode: 0644]

diff --git a/annotated.html b/annotated.html
new file mode 100644 (file)
index 0000000..3a1dfcf
--- /dev/null
@@ -0,0 +1,102 @@
+<!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>libcgroup: Data Structures</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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 -->
+<!-- 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="headertitle">
+<div class="title">Data Structures</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here are the data structures with brief descriptions:</div><div class="directory">
+<table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structarray__parent__info.html" target="_self">array_parent_info</a></td><td class="desc"></td></tr>
+<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structarray__unchanged.html" target="_self">array_unchanged</a></td><td class="desc"></td></tr>
+<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structblack__list__type.html" target="_self">black_list_type</a></td><td class="desc"></td></tr>
+<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcg__mount__point.html" target="_self">cg_mount_point</a></td><td class="desc"></td></tr>
+<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcg__mount__table__s.html" target="_self">cg_mount_table_s</a></td><td class="desc"></td></tr>
+<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcgroup.html" target="_self">cgroup</a></td><td class="desc"></td></tr>
+<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcgroup__controller.html" target="_self">cgroup_controller</a></td><td class="desc"></td></tr>
+<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcgroup__dictionary.html" target="_self">cgroup_dictionary</a></td><td class="desc"></td></tr>
+<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcgroup__dictionary__item.html" target="_self">cgroup_dictionary_item</a></td><td class="desc"></td></tr>
+<tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcgroup__dictionary__iterator.html" target="_self">cgroup_dictionary_iterator</a></td><td class="desc"></td></tr>
+<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcgroup__file__info.html" target="_self">cgroup_file_info</a></td><td class="desc"></td></tr>
+<tr id="row_11_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcgroup__group__spec.html" target="_self">cgroup_group_spec</a></td><td class="desc"></td></tr>
+<tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcgroup__mount__point.html" target="_self">cgroup_mount_point</a></td><td class="desc"></td></tr>
+<tr id="row_13_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcgroup__rule.html" target="_self">cgroup_rule</a></td><td class="desc"></td></tr>
+<tr id="row_14_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcgroup__rule__list.html" target="_self">cgroup_rule_list</a></td><td class="desc"></td></tr>
+<tr id="row_15_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcgroup__rules__data.html" target="_self">cgroup_rules_data</a></td><td class="desc"></td></tr>
+<tr id="row_16_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcgroup__stat.html" target="_self">cgroup_stat</a></td><td class="desc"></td></tr>
+<tr id="row_17_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcgroup__string__list.html" target="_self">cgroup_string_list</a></td><td class="desc"></td></tr>
+<tr id="row_18_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcgroup__tree__handle.html" target="_self">cgroup_tree_handle</a></td><td class="desc"></td></tr>
+<tr id="row_19_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcontrol__value.html" target="_self">control_value</a></td><td class="desc"></td></tr>
+<tr id="row_20_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcontroller__data.html" target="_self">controller_data</a></td><td class="desc"></td></tr>
+<tr id="row_21_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structext__cgroup__record.html" target="_self">ext_cgroup_record</a></td><td class="desc"></td></tr>
+<tr id="row_22_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structparent__info.html" target="_self">parent_info</a></td><td class="desc"></td></tr>
+<tr id="row_23_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structunchanged__pid.html" target="_self">unchanged_pid</a></td><td class="desc"></td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/bc_s.png b/bc_s.png
new file mode 100644 (file)
index 0000000..224b29a
Binary files /dev/null and b/bc_s.png differ
diff --git a/bdwn.png b/bdwn.png
new file mode 100644 (file)
index 0000000..940a0b9
Binary files /dev/null and b/bdwn.png differ
diff --git a/cgrulesengd_8h_source.html b/cgrulesengd_8h_source.html
new file mode 100644 (file)
index 0000000..ec150f6
--- /dev/null
@@ -0,0 +1,152 @@
+<!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>libcgroup: src/daemon/cgrulesengd.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_2d094300ae4f2c55dd459b9ec7dd0ad3.html">daemon</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">cgrulesengd.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Copyright Red Hat Inc. 2008</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * Author:      Steve Olivieri &lt;sjo@redhat.com&gt;</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify it</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * under the terms of version 2.1 of the GNU Lesser General Public License</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * as published by the Free Software Foundation.</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> * This program is distributed in the hope that it would be useful, but</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160; </div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="preprocessor">#ifndef _CGRULESENGD_H</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#define _CGRULESENGD_H</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160; </div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;features.h&gt;</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160; </div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160; </div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &quot;config.h&quot;</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &quot;libcgroup.h&quot;</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;linux/connector.h&gt;</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;linux/cn_proc.h&gt;</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160; </div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#ifndef _GNU_SOURCE</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#define _GNU_SOURCE</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160; </div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#ifndef __USE_GNU</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#define __USE_GNU</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160; </div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment">/* The following ten macros are all for the Netlink code. */</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#define SEND_MESSAGE_LEN (NLMSG_LENGTH(sizeof(struct cn_msg) + \</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">    sizeof(enum proc_cn_mcast_op)))</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#define RECV_MESSAGE_LEN (NLMSG_LENGTH(sizeof(struct cn_msg) + \</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">    sizeof(struct proc_event)))</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160; </div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#define SEND_MESSAGE_SIZE (NLMSG_SPACE(SEND_MESSAGE_LEN))</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#define RECV_MESSAGE_SIZE (NLMSG_SPACE(RECV_MESSAGE_LEN))</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160; </div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">#define BUFF_SIZE (max(max(SEND_MESSAGE_SIZE, RECV_MESSAGE_SIZE), 1024))</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#define MIN_RECV_SIZE (min(SEND_MESSAGE_SIZE, RECV_MESSAGE_SIZE))</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160; </div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#define PROC_CN_MCAST_LISTEN (1)</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#define PROC_CN_MCAST_IGNORE (2)</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160; </div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="keywordtype">void</span> cgre_usage(FILE *fd, <span class="keyword">const</span> <span class="keywordtype">char</span> *msg, ...);</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160; </div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="keywordtype">void</span> flog(<span class="keywordtype">int</span> level, <span class="keyword">const</span> <span class="keywordtype">char</span> *msg, ...);</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160; </div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="keywordtype">int</span> cgre_process_event(<span class="keyword">const</span> <span class="keyword">struct</span> proc_event *ev, <span class="keyword">const</span> <span class="keywordtype">int</span> type);</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160; </div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;<span class="keywordtype">int</span> cgre_handle_message(<span class="keyword">struct</span> cn_msg *cn_hdr);</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160; </div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;<span class="keywordtype">int</span> cgre_start_daemon(<span class="keyword">const</span> <span class="keywordtype">char</span> *logp, <span class="keyword">const</span> <span class="keywordtype">int</span> logf,</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;            <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> daemon, <span class="keyword">const</span> <span class="keywordtype">int</span> logv);</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160; </div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;<span class="keywordtype">void</span> cgre_flash_rules(<span class="keywordtype">int</span> signum);</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160; </div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;<span class="keywordtype">void</span> cgre_flash_templates(<span class="keywordtype">int</span> signum);</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160; </div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;<span class="keywordtype">void</span> cgre_catch_term(<span class="keywordtype">int</span> signum);</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160; </div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;} <span class="comment">/* extern &quot;C&quot; */</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160; </div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* _CGRULESENGD_H */</span><span class="preprocessor"></span></div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160; </div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/classes.html b/classes.html
new file mode 100644 (file)
index 0000000..20885cd
--- /dev/null
@@ -0,0 +1,95 @@
+<!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>libcgroup: Data Structure Index</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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 -->
+<!-- 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="headertitle">
+<div class="title">Data Structure Index</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="qindex"><a class="qindex" href="#letter_A">A</a>&#160;|&#160;<a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_C">C</a>&#160;|&#160;<a class="qindex" href="#letter_E">E</a>&#160;|&#160;<a class="qindex" href="#letter_P">P</a>&#160;|&#160;<a class="qindex" href="#letter_U">U</a></div>
+<div class="classindex">
+<dl class="classindex even">
+<dt class="alphachar"><a name="letter_A">A</a></dt>
+<dd><a class="el" href="structarray__parent__info.html">array_parent_info</a></dd><dd><a class="el" href="structarray__unchanged.html">array_unchanged</a></dd></dl>
+<dl class="classindex odd">
+<dt class="alphachar"><a name="letter_B">B</a></dt>
+<dd><a class="el" href="structblack__list__type.html">black_list_type</a></dd></dl>
+<dl class="classindex even">
+<dt class="alphachar"><a name="letter_C">C</a></dt>
+<dd><a class="el" href="structcg__mount__point.html">cg_mount_point</a></dd><dd><a class="el" href="structcg__mount__table__s.html">cg_mount_table_s</a></dd><dd><a class="el" href="structcgroup.html">cgroup</a></dd><dd><a class="el" href="structcgroup__controller.html">cgroup_controller</a></dd><dd><a class="el" href="structcgroup__dictionary.html">cgroup_dictionary</a></dd><dd><a class="el" href="structcgroup__dictionary__item.html">cgroup_dictionary_item</a></dd><dd><a class="el" href="structcgroup__dictionary__iterator.html">cgroup_dictionary_iterator</a></dd><dd><a class="el" href="structcgroup__file__info.html">cgroup_file_info</a></dd><dd><a class="el" href="structcgroup__group__spec.html">cgroup_group_spec</a></dd><dd><a class="el" href="structcgroup__mount__point.html">cgroup_mount_point</a></dd><dd><a class="el" href="structcgroup__rule.html">cgroup_rule</a></dd><dd><a class="el" href="structcgroup__rule__list.html">cgroup_rule_list</a></dd><dd><a class="el" href="structcgroup__rules__data.html">cgroup_rules_data</a></dd><dd><a class="el" href="structcgroup__stat.html">cgroup_stat</a></dd><dd><a class="el" href="structcgroup__string__list.html">cgroup_string_list</a></dd><dd><a class="el" href="structcgroup__tree__handle.html">cgroup_tree_handle</a></dd><dd><a class="el" href="structcontrol__value.html">control_value</a></dd><dd><a class="el" href="structcontroller__data.html">controller_data</a></dd></dl>
+<dl class="classindex odd">
+<dt class="alphachar"><a name="letter_E">E</a></dt>
+<dd><a class="el" href="structext__cgroup__record.html">ext_cgroup_record</a></dd></dl>
+<dl class="classindex even">
+<dt class="alphachar"><a name="letter_P">P</a></dt>
+<dd><a class="el" href="structparent__info.html">parent_info</a></dd></dl>
+<dl class="classindex odd">
+<dt class="alphachar"><a name="letter_U">U</a></dt>
+<dd><a class="el" href="structunchanged__pid.html">unchanged_pid</a></dd></dl>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/closed.png b/closed.png
new file mode 100644 (file)
index 0000000..98cc2c9
Binary files /dev/null and b/closed.png differ
diff --git a/config_8h_source.html b/config_8h_source.html
new file mode 100644 (file)
index 0000000..4c821c8
--- /dev/null
@@ -0,0 +1,131 @@
+<!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>libcgroup: include/libcgroup/config.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_66a7763e2a9b96033a682558820d533e.html">libcgroup</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">config.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#ifndef _LIBCGROUP_CONFIG_H</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#define _LIBCGROUP_CONFIG_H</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160; </div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="preprocessor">#ifndef _LIBCGROUP_H_INSIDE</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="preprocessor">#error &quot;Only &lt;libcgroup.h&gt; should be included directly.&quot;</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160; </div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#ifndef SWIG</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &lt;features.h&gt;</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160; </div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160; </div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__config.html#ga8adfaca013333acf922a167f55b84140">cgroup_config_load_config</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *pathname);</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160; </div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__config.html#ga85b285712354faca495193075035938d">cgroup_unload_cgroups</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160; </div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__config.html#gaff77affa0b80ccf507b4b46cc0a8c085">cgroup_config_unload_config</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *pathname, <span class="keywordtype">int</span> flags);</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160; </div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__config.html#ga2d3a252b2c0c61c8f64cb1fc41e370ea">cgroup_config_set_default</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> *new_default);</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160; </div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__config.html#ga6f8c41bb920565e674787fe6dabaef00">cgroup_init_templates_cache</a>(<span class="keywordtype">char</span> *pathname);</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160; </div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__config.html#ga89fe0d7943b29cc10d57b07abcdfa7b5">cgroup_reload_cached_templates</a>(<span class="keywordtype">char</span> *pathname);</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160; </div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__config.html#ga924860998c37da53cababe24163fc89b">cgroup_load_templates_cache_from_files</a>(<span class="keywordtype">int</span> *file_index);</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160; </div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;<span class="keyword">struct </span><a class="code" href="structcgroup__string__list.html">cgroup_string_list</a>;</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__group__config.html#gacb09024dc469a1a1ff8cdebd8d0ab422">cgroup_templates_cache_set_source_files</a>(</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <span class="keyword">struct</span> <a class="code" href="structcgroup__string__list.html">cgroup_string_list</a> *tmpl_files);</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160; </div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__config.html#ga72066260cd31ceed7ecc1a648eba37f2">cgroup_config_create_template_group</a>(</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    <span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> *<a class="code" href="structcgroup.html">cgroup</a>, <span class="keywordtype">char</span> *template_name,</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <span class="keywordtype">int</span> flags);</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160; </div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;} <span class="comment">/* extern &quot;C&quot; */</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160; </div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/*_LIBCGROUP_CONFIG_H*/</span><span class="preprocessor"></span></div>
+<div class="ttc" id="agroup__group__config_html_ga2d3a252b2c0c61c8f64cb1fc41e370ea"><div class="ttname"><a href="group__group__config.html#ga2d3a252b2c0c61c8f64cb1fc41e370ea">cgroup_config_set_default</a></div><div class="ttdeci">int cgroup_config_set_default(struct cgroup *new_default)</div><div class="ttdef"><b>Definition:</b> config.c:1470</div></div>
+<div class="ttc" id="agroup__group__config_html_ga6f8c41bb920565e674787fe6dabaef00"><div class="ttname"><a href="group__group__config.html#ga6f8c41bb920565e674787fe6dabaef00">cgroup_init_templates_cache</a></div><div class="ttdeci">int cgroup_init_templates_cache(char *pathname)</div><div class="ttdef"><b>Definition:</b> config.c:1557</div></div>
+<div class="ttc" id="agroup__group__config_html_ga72066260cd31ceed7ecc1a648eba37f2"><div class="ttname"><a href="group__group__config.html#ga72066260cd31ceed7ecc1a648eba37f2">cgroup_config_create_template_group</a></div><div class="ttdeci">int cgroup_config_create_template_group(struct cgroup *cgroup, char *template_name, int flags)</div><div class="ttdef"><b>Definition:</b> config.c:1778</div></div>
+<div class="ttc" id="agroup__group__config_html_ga85b285712354faca495193075035938d"><div class="ttname"><a href="group__group__config.html#ga85b285712354faca495193075035938d">cgroup_unload_cgroups</a></div><div class="ttdeci">int cgroup_unload_cgroups(void)</div><div class="ttdef"><b>Definition:</b> config.c:1382</div></div>
+<div class="ttc" id="agroup__group__config_html_ga89fe0d7943b29cc10d57b07abcdfa7b5"><div class="ttname"><a href="group__group__config.html#ga89fe0d7943b29cc10d57b07abcdfa7b5">cgroup_reload_cached_templates</a></div><div class="ttdeci">int cgroup_reload_cached_templates(char *pathname)</div><div class="ttdef"><b>Definition:</b> config.c:1493</div></div>
+<div class="ttc" id="agroup__group__config_html_ga8adfaca013333acf922a167f55b84140"><div class="ttname"><a href="group__group__config.html#ga8adfaca013333acf922a167f55b84140">cgroup_config_load_config</a></div><div class="ttdeci">int cgroup_config_load_config(const char *pathname)</div><div class="ttdef"><b>Definition:</b> config.c:1121</div></div>
+<div class="ttc" id="agroup__group__config_html_ga924860998c37da53cababe24163fc89b"><div class="ttname"><a href="group__group__config.html#ga924860998c37da53cababe24163fc89b">cgroup_load_templates_cache_from_files</a></div><div class="ttdeci">int cgroup_load_templates_cache_from_files(int *file_index)</div><div class="ttdef"><b>Definition:</b> config.c:1697</div></div>
+<div class="ttc" id="agroup__group__config_html_gacb09024dc469a1a1ff8cdebd8d0ab422"><div class="ttname"><a href="group__group__config.html#gacb09024dc469a1a1ff8cdebd8d0ab422">cgroup_templates_cache_set_source_files</a></div><div class="ttdeci">void cgroup_templates_cache_set_source_files(struct cgroup_string_list *tmpl_files)</div><div class="ttdef"><b>Definition:</b> config.c:1624</div></div>
+<div class="ttc" id="agroup__group__config_html_gaff77affa0b80ccf507b4b46cc0a8c085"><div class="ttname"><a href="group__group__config.html#gaff77affa0b80ccf507b4b46cc0a8c085">cgroup_config_unload_config</a></div><div class="ttdeci">int cgroup_config_unload_config(const char *pathname, int flags)</div><div class="ttdef"><b>Definition:</b> config.c:1256</div></div>
+<div class="ttc" id="astructcgroup__string__list_html"><div class="ttname"><a href="structcgroup__string__list.html">cgroup_string_list</a></div><div class="ttdef"><b>Definition:</b> tools-common.h:45</div></div>
+<div class="ttc" id="astructcgroup_html"><div class="ttname"><a href="structcgroup.html">cgroup</a></div><div class="ttdef"><b>Definition:</b> libcgroup-internal.h:106</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/dir_1563a38af0d3a5e4a6330d6d45e9792a.html b/dir_1563a38af0d3a5e4a6330d6d45e9792a.html
new file mode 100644 (file)
index 0000000..f464e92
--- /dev/null
@@ -0,0 +1,78 @@
+<!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>libcgroup: src/tools Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_1563a38af0d3a5e4a6330d6d45e9792a.html">tools</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tools Directory Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/dir_2d094300ae4f2c55dd459b9ec7dd0ad3.html b/dir_2d094300ae4f2c55dd459b9ec7dd0ad3.html
new file mode 100644 (file)
index 0000000..b7a5d73
--- /dev/null
@@ -0,0 +1,78 @@
+<!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>libcgroup: src/daemon Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_2d094300ae4f2c55dd459b9ec7dd0ad3.html">daemon</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">daemon Directory Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/dir_501cbd49daf77f17c121ad0979f93200.html b/dir_501cbd49daf77f17c121ad0979f93200.html
new file mode 100644 (file)
index 0000000..5a11dce
--- /dev/null
@@ -0,0 +1,78 @@
+<!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>libcgroup: src/pam Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_501cbd49daf77f17c121ad0979f93200.html">pam</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">pam Directory Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/dir_66a7763e2a9b96033a682558820d533e.html b/dir_66a7763e2a9b96033a682558820d533e.html
new file mode 100644 (file)
index 0000000..c551cac
--- /dev/null
@@ -0,0 +1,78 @@
+<!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>libcgroup: include/libcgroup Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_66a7763e2a9b96033a682558820d533e.html">libcgroup</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">libcgroup Directory Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/dir_68267d1309a1af8e8297ef4c3efbcdba.html
new file mode 100644 (file)
index 0000000..09d611c
--- /dev/null
@@ -0,0 +1,84 @@
+<!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>libcgroup: src Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">src Directory Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
+Directories</h2></td></tr>
+<tr class="memitem:dir_ea91a2a72b7cbbf988d2bd2cd1d23e49"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_ea91a2a72b7cbbf988d2bd2cd1d23e49.html">bindings</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/dir_bab0433f19b0a5661c5e0a15547f54b2.html b/dir_bab0433f19b0a5661c5e0a15547f54b2.html
new file mode 100644 (file)
index 0000000..f47ddbc
--- /dev/null
@@ -0,0 +1,78 @@
+<!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>libcgroup: src/bindings/tests Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_ea91a2a72b7cbbf988d2bd2cd1d23e49.html">bindings</a></li><li class="navelem"><a class="el" href="dir_bab0433f19b0a5661c5e0a15547f54b2.html">tests</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tests Directory Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/dir_d44c64559bbebec7f509842c48db8b23.html b/dir_d44c64559bbebec7f509842c48db8b23.html
new file mode 100644 (file)
index 0000000..0e91588
--- /dev/null
@@ -0,0 +1,82 @@
+<!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>libcgroup: include Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">include Directory Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
+Directories</h2></td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/dir_ea91a2a72b7cbbf988d2bd2cd1d23e49.html b/dir_ea91a2a72b7cbbf988d2bd2cd1d23e49.html
new file mode 100644 (file)
index 0000000..e1c5c3c
--- /dev/null
@@ -0,0 +1,82 @@
+<!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>libcgroup: src/bindings Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_ea91a2a72b7cbbf988d2bd2cd1d23e49.html">bindings</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">bindings Directory Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
+Directories</h2></td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc.png b/doc.png
new file mode 100644 (file)
index 0000000..17edabf
Binary files /dev/null and b/doc.png differ
diff --git a/doxygen.css b/doxygen.css
new file mode 100644 (file)
index 0000000..ffbff02
--- /dev/null
@@ -0,0 +1,1793 @@
+/* The standard CSS for doxygen 1.9.1 */
+
+body, table, div, p, dl {
+       font: 400 14px/22px Roboto,sans-serif;
+}
+
+p.reference, p.definition {
+       font: 400 14px/22px Roboto,sans-serif;
+}
+
+/* @group Heading Levels */
+
+h1.groupheader {
+       font-size: 150%;
+}
+
+.title {
+       font: 400 14px/28px Roboto,sans-serif;
+       font-size: 150%;
+       font-weight: bold;
+       margin: 10px 2px;
+}
+
+h2.groupheader {
+       border-bottom: 1px solid #879ECB;
+       color: #354C7B;
+       font-size: 150%;
+       font-weight: normal;
+       margin-top: 1.75em;
+       padding-top: 8px;
+       padding-bottom: 4px;
+       width: 100%;
+}
+
+h3.groupheader {
+       font-size: 100%;
+}
+
+h1, h2, h3, h4, h5, h6 {
+       -webkit-transition: text-shadow 0.5s linear;
+       -moz-transition: text-shadow 0.5s linear;
+       -ms-transition: text-shadow 0.5s linear;
+       -o-transition: text-shadow 0.5s linear;
+       transition: text-shadow 0.5s linear;
+       margin-right: 15px;
+}
+
+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
+       text-shadow: 0 0 15px cyan;
+}
+
+dt {
+       font-weight: bold;
+}
+
+ul.multicol {
+       -moz-column-gap: 1em;
+       -webkit-column-gap: 1em;
+       column-gap: 1em;
+       -moz-column-count: 3;
+       -webkit-column-count: 3;
+       column-count: 3;
+}
+
+p.startli, p.startdd {
+       margin-top: 2px;
+}
+
+th p.starttd, th p.intertd, th p.endtd {
+        font-size: 100%;
+        font-weight: 700;
+}
+
+p.starttd {
+       margin-top: 0px;
+}
+
+p.endli {
+       margin-bottom: 0px;
+}
+
+p.enddd {
+       margin-bottom: 4px;
+}
+
+p.endtd {
+       margin-bottom: 2px;
+}
+
+p.interli {
+}
+
+p.interdd {
+}
+
+p.intertd {
+}
+
+/* @end */
+
+caption {
+       font-weight: bold;
+}
+
+span.legend {
+       font-size: 70%;
+       text-align: center;
+}
+
+h3.version {
+       font-size: 90%;
+       text-align: center;
+}
+
+div.navtab {
+       border-right: 1px solid #A3B4D7;
+       padding-right: 15px;
+       text-align: right;
+       line-height: 110%;
+}
+
+div.navtab table {
+       border-spacing: 0;
+}
+
+td.navtab {
+       padding-right: 6px;
+       padding-left: 6px;
+}
+td.navtabHL {
+       background-image: url('tab_a.png');
+       background-repeat:repeat-x;
+       padding-right: 6px;
+       padding-left: 6px;
+}
+
+td.navtabHL a, td.navtabHL a:visited {
+       color: #fff;
+       text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+}
+
+a.navtab {
+       font-weight: bold;
+}
+
+div.qindex{
+       text-align: center;
+       width: 100%;
+       line-height: 140%;
+       font-size: 130%;
+       color: #A0A0A0;
+}
+
+dt.alphachar{
+       font-size: 180%;
+       font-weight: bold;
+}
+
+.alphachar a{
+       color: black;
+}
+
+.alphachar a:hover, .alphachar a:visited{
+       text-decoration: none;
+}
+
+.classindex dl {
+       padding: 25px;
+       column-count:1
+}
+
+.classindex dd {
+       display:inline-block;
+       margin-left: 50px;
+       width: 90%;
+       line-height: 1.15em;
+}
+
+.classindex dl.odd {
+       background-color: #F8F9FC;
+}
+
+@media(min-width: 1120px) {
+       .classindex dl {
+               column-count:2
+       }
+}
+
+@media(min-width: 1320px) {
+       .classindex dl {
+               column-count:3
+       }
+}
+
+
+/* @group Link Styling */
+
+a {
+       color: #3D578C;
+       font-weight: normal;
+       text-decoration: none;
+}
+
+.contents a:visited {
+       color: #4665A2;
+}
+
+a:hover {
+       text-decoration: underline;
+}
+
+.contents a.qindexHL:visited {
+        color: #FFFFFF;
+}
+
+a.el {
+       font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code, a.code:visited, a.line, a.line:visited {
+       color: #4665A2; 
+}
+
+a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
+       color: #4665A2; 
+}
+
+/* @end */
+
+dl.el {
+       margin-left: -1cm;
+}
+
+ul {
+  overflow: hidden; /*Fixed: list item bullets overlap floating elements*/
+}
+
+#side-nav ul {
+  overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */
+}
+
+#main-nav ul {
+  overflow: visible; /* reset ul rule for the navigation bar drop down lists */
+}
+
+.fragment {
+  text-align: left;
+  direction: ltr;
+  overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/
+  overflow-y: hidden;
+}
+
+pre.fragment {
+        border: 1px solid #C4CFE5;
+        background-color: #FBFCFD;
+        padding: 4px 6px;
+        margin: 4px 8px 4px 2px;
+        overflow: auto;
+        word-wrap: break-word;
+        font-size:  9pt;
+        line-height: 125%;
+        font-family: monospace, fixed;
+        font-size: 105%;
+}
+
+div.fragment {
+  padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/
+  margin: 4px 8px 4px 2px;
+       background-color: #FBFCFD;
+       border: 1px solid #C4CFE5;
+}
+
+div.line {
+       font-family: monospace, fixed;
+        font-size: 13px;
+       min-height: 13px;
+       line-height: 1.0;
+       text-wrap: unrestricted;
+       white-space: -moz-pre-wrap; /* Moz */
+       white-space: -pre-wrap;     /* Opera 4-6 */
+       white-space: -o-pre-wrap;   /* Opera 7 */
+       white-space: pre-wrap;      /* CSS3  */
+       word-wrap: break-word;      /* IE 5.5+ */
+       text-indent: -53px;
+       padding-left: 53px;
+       padding-bottom: 0px;
+       margin: 0px;
+       -webkit-transition-property: background-color, box-shadow;
+       -webkit-transition-duration: 0.5s;
+       -moz-transition-property: background-color, box-shadow;
+       -moz-transition-duration: 0.5s;
+       -ms-transition-property: background-color, box-shadow;
+       -ms-transition-duration: 0.5s;
+       -o-transition-property: background-color, box-shadow;
+       -o-transition-duration: 0.5s;
+       transition-property: background-color, box-shadow;
+       transition-duration: 0.5s;
+}
+
+div.line:after {
+    content:"\000A";
+    white-space: pre;
+}
+
+div.line.glow {
+       background-color: cyan;
+       box-shadow: 0 0 10px cyan;
+}
+
+
+span.lineno {
+       padding-right: 4px;
+       text-align: right;
+       border-right: 2px solid #0F0;
+       background-color: #E8E8E8;
+        white-space: pre;
+}
+span.lineno a {
+       background-color: #D8D8D8;
+}
+
+span.lineno a:hover {
+       background-color: #C8C8C8;
+}
+
+.lineno {
+       -webkit-touch-callout: none;
+       -webkit-user-select: none;
+       -khtml-user-select: none;
+       -moz-user-select: none;
+       -ms-user-select: none;
+       user-select: none;
+}
+
+div.ah, span.ah {
+       background-color: black;
+       font-weight: bold;
+       color: #FFFFFF;
+       margin-bottom: 3px;
+       margin-top: 3px;
+       padding: 0.2em;
+       border: solid thin #333;
+       border-radius: 0.5em;
+       -webkit-border-radius: .5em;
+       -moz-border-radius: .5em;
+       box-shadow: 2px 2px 3px #999;
+       -webkit-box-shadow: 2px 2px 3px #999;
+       -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+       background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%);
+}
+
+div.classindex ul {
+        list-style: none;
+        padding-left: 0;
+}
+
+div.classindex span.ai {
+        display: inline-block;
+}
+
+div.groupHeader {
+       margin-left: 16px;
+       margin-top: 12px;
+       font-weight: bold;
+}
+
+div.groupText {
+       margin-left: 16px;
+       font-style: italic;
+}
+
+body {
+       background-color: white;
+       color: black;
+        margin: 0;
+}
+
+div.contents {
+       margin-top: 10px;
+       margin-left: 12px;
+       margin-right: 8px;
+}
+
+td.indexkey {
+       background-color: #EBEFF6;
+       font-weight: bold;
+       border: 1px solid #C4CFE5;
+       margin: 2px 0px 2px 0;
+       padding: 2px 10px;
+        white-space: nowrap;
+        vertical-align: top;
+}
+
+td.indexvalue {
+       background-color: #EBEFF6;
+       border: 1px solid #C4CFE5;
+       padding: 2px 10px;
+       margin: 2px 0px;
+}
+
+tr.memlist {
+       background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+       text-align: center;
+}
+
+img.formulaDsp {
+       
+}
+
+img.formulaInl, img.inline {
+       vertical-align: middle;
+}
+
+div.center {
+       text-align: center;
+        margin-top: 0px;
+        margin-bottom: 0px;
+        padding: 0px;
+}
+
+div.center img {
+       border: 0px;
+}
+
+address.footer {
+       text-align: right;
+       padding-right: 12px;
+}
+
+img.footer {
+       border: 0px;
+       vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+       color: #008000
+}
+
+span.keywordtype {
+       color: #604020
+}
+
+span.keywordflow {
+       color: #e08000
+}
+
+span.comment {
+       color: #800000
+}
+
+span.preprocessor {
+       color: #806020
+}
+
+span.stringliteral {
+       color: #002080
+}
+
+span.charliteral {
+       color: #008080
+}
+
+span.vhdldigit { 
+       color: #ff00ff 
+}
+
+span.vhdlchar { 
+       color: #000000 
+}
+
+span.vhdlkeyword { 
+       color: #700070 
+}
+
+span.vhdllogic { 
+       color: #ff0000 
+}
+
+blockquote {
+        background-color: #F7F8FB;
+        border-left: 2px solid #9CAFD4;
+        margin: 0 24px 0 4px;
+        padding: 0 12px 0 16px;
+}
+
+blockquote.DocNodeRTL {
+   border-left: 0;
+   border-right: 2px solid #9CAFD4;
+   margin: 0 4px 0 24px;
+   padding: 0 16px 0 12px;
+}
+
+/* @end */
+
+/*
+.search {
+       color: #003399;
+       font-weight: bold;
+}
+
+form.search {
+       margin-bottom: 0px;
+       margin-top: 0px;
+}
+
+input.search {
+       font-size: 75%;
+       color: #000080;
+       font-weight: normal;
+       background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+       font-size: 75%;
+}
+
+.dirtab {
+       padding: 4px;
+       border-collapse: collapse;
+       border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+       background: #EBEFF6;
+       font-weight: bold;
+}
+
+hr {
+       height: 0px;
+       border: none;
+       border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+       height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+       border-spacing: 0px;
+       padding: 0px;
+}
+
+.memberdecls td, .fieldtable tr {
+       -webkit-transition-property: background-color, box-shadow;
+       -webkit-transition-duration: 0.5s;
+       -moz-transition-property: background-color, box-shadow;
+       -moz-transition-duration: 0.5s;
+       -ms-transition-property: background-color, box-shadow;
+       -ms-transition-duration: 0.5s;
+       -o-transition-property: background-color, box-shadow;
+       -o-transition-duration: 0.5s;
+       transition-property: background-color, box-shadow;
+       transition-duration: 0.5s;
+}
+
+.memberdecls td.glow, .fieldtable tr.glow {
+       background-color: cyan;
+       box-shadow: 0 0 15px cyan;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+       background-color: #F9FAFC;
+       border: none;
+       margin: 4px;
+       padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+       padding: 0px 8px 4px 8px;
+       color: #555;
+}
+
+.memSeparator {
+        border-bottom: 1px solid #DEE4F0;
+        line-height: 1px;
+        margin: 0px;
+        padding: 0px;
+}
+
+.memItemLeft, .memTemplItemLeft {
+        white-space: nowrap;
+}
+
+.memItemRight, .memTemplItemRight {
+       width: 100%;
+}
+
+.memTemplParams {
+       color: #4665A2;
+        white-space: nowrap;
+       font-size: 80%;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtitle {
+       padding: 8px;
+       border-top: 1px solid #A8B8D9;
+       border-left: 1px solid #A8B8D9;
+       border-right: 1px solid #A8B8D9;
+       border-top-right-radius: 4px;
+       border-top-left-radius: 4px;
+       margin-bottom: -1px;
+       background-image: url('nav_f.png');
+       background-repeat: repeat-x;
+       background-color: #E2E8F2;
+       line-height: 1.25;
+       font-weight: 300;
+       float:left;
+}
+
+.permalink
+{
+        font-size: 65%;
+        display: inline-block;
+        vertical-align: middle;
+}
+
+.memtemplate {
+       font-size: 80%;
+       color: #4665A2;
+       font-weight: normal;
+       margin-left: 9px;
+}
+
+.memnav {
+       background-color: #EBEFF6;
+       border: 1px solid #A3B4D7;
+       text-align: center;
+       margin: 2px;
+       margin-right: 15px;
+       padding: 2px;
+}
+
+.mempage {
+       width: 100%;
+}
+
+.memitem {
+       padding: 0;
+       margin-bottom: 10px;
+       margin-right: 5px;
+        -webkit-transition: box-shadow 0.5s linear;
+        -moz-transition: box-shadow 0.5s linear;
+        -ms-transition: box-shadow 0.5s linear;
+        -o-transition: box-shadow 0.5s linear;
+        transition: box-shadow 0.5s linear;
+        display: table !important;
+        width: 100%;
+}
+
+.memitem.glow {
+         box-shadow: 0 0 15px cyan;
+}
+
+.memname {
+        font-weight: 400;
+        margin-left: 6px;
+}
+
+.memname td {
+       vertical-align: bottom;
+}
+
+.memproto, dl.reflist dt {
+        border-top: 1px solid #A8B8D9;
+        border-left: 1px solid #A8B8D9;
+        border-right: 1px solid #A8B8D9;
+        padding: 6px 0px 6px 0px;
+        color: #253555;
+        font-weight: bold;
+        text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+        background-color: #DFE5F1;
+        /* opera specific markup */
+        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        border-top-right-radius: 4px;
+        /* firefox specific markup */
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        -moz-border-radius-topright: 4px;
+        /* webkit specific markup */
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        -webkit-border-top-right-radius: 4px;
+
+}
+
+.overload {
+        font-family: "courier new",courier,monospace;
+       font-size: 65%;
+}
+
+.memdoc, dl.reflist dd {
+        border-bottom: 1px solid #A8B8D9;      
+        border-left: 1px solid #A8B8D9;      
+        border-right: 1px solid #A8B8D9; 
+        padding: 6px 10px 2px 10px;
+        background-color: #FBFCFD;
+        border-top-width: 0;
+        background-image:url('nav_g.png');
+        background-repeat:repeat-x;
+        background-color: #FFFFFF;
+        /* opera specific markup */
+        border-bottom-left-radius: 4px;
+        border-bottom-right-radius: 4px;
+        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        /* firefox specific markup */
+        -moz-border-radius-bottomleft: 4px;
+        -moz-border-radius-bottomright: 4px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        /* webkit specific markup */
+        -webkit-border-bottom-left-radius: 4px;
+        -webkit-border-bottom-right-radius: 4px;
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+dl.reflist dt {
+        padding: 5px;
+}
+
+dl.reflist dd {
+        margin: 0px 0px 10px 0px;
+        padding: 5px;
+}
+
+.paramkey {
+       text-align: right;
+}
+
+.paramtype {
+       white-space: nowrap;
+}
+
+.paramname {
+       color: #602020;
+       white-space: nowrap;
+}
+.paramname em {
+       font-style: normal;
+}
+.paramname code {
+        line-height: 14px;
+}
+
+.params, .retval, .exception, .tparams {
+        margin-left: 0px;
+        padding-left: 0px;
+}       
+
+.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname {
+        font-weight: bold;
+        vertical-align: top;
+}
+        
+.params .paramtype, .tparams .paramtype {
+        font-style: italic;
+        vertical-align: top;
+}       
+        
+.params .paramdir, .tparams .paramdir {
+        font-family: "courier new",courier,monospace;
+        vertical-align: top;
+}
+
+table.mlabels {
+       border-spacing: 0px;
+}
+
+td.mlabels-left {
+       width: 100%;
+       padding: 0px;
+}
+
+td.mlabels-right {
+       vertical-align: bottom;
+       padding: 0px;
+       white-space: nowrap;
+}
+
+span.mlabels {
+        margin-left: 8px;
+}
+
+span.mlabel {
+        background-color: #728DC1;
+        border-top:1px solid #5373B4;
+        border-left:1px solid #5373B4;
+        border-right:1px solid #C4CFE5;
+        border-bottom:1px solid #C4CFE5;
+       text-shadow: none;
+       color: white;
+       margin-right: 4px;
+       padding: 2px 3px;
+       border-radius: 3px;
+       font-size: 7pt;
+       white-space: nowrap;
+       vertical-align: middle;
+}
+
+
+
+/* @end */
+
+/* these are for tree view inside a (index) page */
+
+div.directory {
+        margin: 10px 0px;
+        border-top: 1px solid #9CAFD4;
+        border-bottom: 1px solid #9CAFD4;
+        width: 100%;
+}
+
+.directory table {
+        border-collapse:collapse;
+}
+
+.directory td {
+        margin: 0px;
+        padding: 0px;
+       vertical-align: top;
+}
+
+.directory td.entry {
+        white-space: nowrap;
+        padding-right: 6px;
+       padding-top: 3px;
+}
+
+.directory td.entry a {
+        outline:none;
+}
+
+.directory td.entry a img {
+        border: none;
+}
+
+.directory td.desc {
+        width: 100%;
+        padding-left: 6px;
+       padding-right: 6px;
+       padding-top: 3px;
+       border-left: 1px solid rgba(0,0,0,0.05);
+}
+
+.directory tr.even {
+       padding-left: 6px;
+       background-color: #F7F8FB;
+}
+
+.directory img {
+       vertical-align: -30%;
+}
+
+.directory .levels {
+        white-space: nowrap;
+        width: 100%;
+        text-align: right;
+        font-size: 9pt;
+}
+
+.directory .levels span {
+        cursor: pointer;
+        padding-left: 2px;
+        padding-right: 2px;
+       color: #3D578C;
+}
+
+.arrow {
+    color: #9CAFD4;
+    -webkit-user-select: none;
+    -khtml-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+    cursor: pointer;
+    font-size: 80%;
+    display: inline-block;
+    width: 16px;
+    height: 22px;
+}
+
+.icon {
+    font-family: Arial, Helvetica;
+    font-weight: bold;
+    font-size: 12px;
+    height: 14px;
+    width: 16px;
+    display: inline-block;
+    background-color: #728DC1;
+    color: white;
+    text-align: center;
+    border-radius: 4px;
+    margin-left: 2px;
+    margin-right: 2px;
+}
+
+.icona {
+    width: 24px;
+    height: 22px;
+    display: inline-block;
+}
+
+.iconfopen {
+    width: 24px;
+    height: 18px;
+    margin-bottom: 4px;
+    background-image:url('folderopen.png');
+    background-position: 0px -4px;
+    background-repeat: repeat-y;
+    vertical-align:top;
+    display: inline-block;
+}
+
+.iconfclosed {
+    width: 24px;
+    height: 18px;
+    margin-bottom: 4px;
+    background-image:url('folderclosed.png');
+    background-position: 0px -4px;
+    background-repeat: repeat-y;
+    vertical-align:top;
+    display: inline-block;
+}
+
+.icondoc {
+    width: 24px;
+    height: 18px;
+    margin-bottom: 4px;
+    background-image:url('doc.png');
+    background-position: 0px -4px;
+    background-repeat: repeat-y;
+    vertical-align:top;
+    display: inline-block;
+}
+
+table.directory {
+    font: 400 14px Roboto,sans-serif;
+}
+
+/* @end */
+
+div.dynheader {
+        margin-top: 8px;
+       -webkit-touch-callout: none;
+       -webkit-user-select: none;
+       -khtml-user-select: none;
+       -moz-user-select: none;
+       -ms-user-select: none;
+       user-select: none;
+}
+
+address {
+       font-style: normal;
+       color: #2A3D61;
+}
+
+table.doxtable caption {
+       caption-side: top;
+}
+
+table.doxtable {
+       border-collapse:collapse;
+        margin-top: 4px;
+        margin-bottom: 4px;
+}
+
+table.doxtable td, table.doxtable th {
+       border: 1px solid #2D4068;
+       padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+       background-color: #374F7F;
+       color: #FFFFFF;
+       font-size: 110%;
+       padding-bottom: 4px;
+       padding-top: 5px;
+}
+
+table.fieldtable {
+        /*width: 100%;*/
+        margin-bottom: 10px;
+        border: 1px solid #A8B8D9;
+        border-spacing: 0px;
+        -moz-border-radius: 4px;
+        -webkit-border-radius: 4px;
+        border-radius: 4px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+        -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+        box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+        padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+        white-space: nowrap;
+        border-right: 1px solid #A8B8D9;
+        border-bottom: 1px solid #A8B8D9;
+        vertical-align: top;
+}
+
+.fieldtable td.fieldname {
+        padding-top: 3px;
+}
+
+.fieldtable td.fielddoc {
+        border-bottom: 1px solid #A8B8D9;
+        /*width: 100%;*/
+}
+
+.fieldtable td.fielddoc p:first-child {
+        margin-top: 0px;
+}       
+        
+.fieldtable td.fielddoc p:last-child {
+        margin-bottom: 2px;
+}
+
+.fieldtable tr:last-child td {
+        border-bottom: none;
+}
+
+.fieldtable th {
+        background-image:url('nav_f.png');
+        background-repeat:repeat-x;
+        background-color: #E2E8F2;
+        font-size: 90%;
+        color: #253555;
+        padding-bottom: 4px;
+        padding-top: 5px;
+        text-align:left;
+        font-weight: 400;
+        -moz-border-radius-topleft: 4px;
+        -moz-border-radius-topright: 4px;
+        -webkit-border-top-left-radius: 4px;
+        -webkit-border-top-right-radius: 4px;
+        border-top-left-radius: 4px;
+        border-top-right-radius: 4px;
+        border-bottom: 1px solid #A8B8D9;
+}
+
+
+.tabsearch {
+       top: 0px;
+       left: 10px;
+       height: 36px;
+       background-image: url('tab_b.png');
+       z-index: 101;
+       overflow: hidden;
+       font-size: 13px;
+}
+
+.navpath ul
+{
+       font-size: 11px;
+       background-image:url('tab_b.png');
+       background-repeat:repeat-x;
+       background-position: 0 -5px;
+       height:30px;
+       line-height:30px;
+       color:#8AA0CC;
+       border:solid 1px #C2CDE4;
+       overflow:hidden;
+       margin:0px;
+       padding:0px;
+}
+
+.navpath li
+{
+       list-style-type:none;
+       float:left;
+       padding-left:10px;
+       padding-right:15px;
+       background-image:url('bc_s.png');
+       background-repeat:no-repeat;
+       background-position:right;
+       color:#364D7C;
+}
+
+.navpath li.navelem a
+{
+       height:32px;
+       display:block;
+       text-decoration: none;
+       outline: none;
+       color: #283A5D;
+       font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+       text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+       text-decoration: none;        
+}
+
+.navpath li.navelem a:hover
+{
+       color:#6884BD;
+}
+
+.navpath li.footer
+{
+        list-style-type:none;
+        float:right;
+        padding-left:10px;
+        padding-right:15px;
+        background-image:none;
+        background-repeat:no-repeat;
+        background-position:right;
+        color:#364D7C;
+        font-size: 8pt;
+}
+
+
+div.summary
+{
+       float: right;
+       font-size: 8pt;
+       padding-right: 5px;
+       width: 50%;
+       text-align: right;
+}       
+
+div.summary a
+{
+       white-space: nowrap;
+}
+
+table.classindex
+{
+        margin: 10px;
+        white-space: nowrap;
+        margin-left: 3%;
+        margin-right: 3%;
+        width: 94%;
+        border: 0;
+        border-spacing: 0; 
+        padding: 0;
+}
+
+div.ingroups
+{
+       font-size: 8pt;
+       width: 50%;
+       text-align: left;
+}
+
+div.ingroups a
+{
+       white-space: nowrap;
+}
+
+div.header
+{
+        background-image:url('nav_h.png');
+        background-repeat:repeat-x;
+       background-color: #F9FAFC;
+       margin:  0px;
+       border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+       padding: 5px 5px 5px 10px;
+}
+
+.PageDocRTL-title div.headertitle {
+  text-align: right;
+  direction: rtl;
+}
+
+dl {
+        padding: 0 0 0 0;
+}
+
+/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */
+dl.section {
+       margin-left: 0px;
+       padding-left: 0px;
+}
+
+dl.section.DocNodeRTL {
+  margin-right: 0px;
+  padding-right: 0px;
+}
+
+dl.note {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #D0C000;
+}
+
+dl.note.DocNodeRTL {
+  margin-left: 0;
+  padding-left: 0;
+  border-left: 0;
+  margin-right: -7px;
+  padding-right: 3px;
+  border-right: 4px solid;
+  border-color: #D0C000;
+}
+
+dl.warning, dl.attention {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #FF0000;
+}
+
+dl.warning.DocNodeRTL, dl.attention.DocNodeRTL {
+  margin-left: 0;
+  padding-left: 0;
+  border-left: 0;
+  margin-right: -7px;
+  padding-right: 3px;
+  border-right: 4px solid;
+  border-color: #FF0000;
+}
+
+dl.pre, dl.post, dl.invariant {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #00D000;
+}
+
+dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL {
+  margin-left: 0;
+  padding-left: 0;
+  border-left: 0;
+  margin-right: -7px;
+  padding-right: 3px;
+  border-right: 4px solid;
+  border-color: #00D000;
+}
+
+dl.deprecated {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #505050;
+}
+
+dl.deprecated.DocNodeRTL {
+  margin-left: 0;
+  padding-left: 0;
+  border-left: 0;
+  margin-right: -7px;
+  padding-right: 3px;
+  border-right: 4px solid;
+  border-color: #505050;
+}
+
+dl.todo {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #00C0E0;
+}
+
+dl.todo.DocNodeRTL {
+  margin-left: 0;
+  padding-left: 0;
+  border-left: 0;
+  margin-right: -7px;
+  padding-right: 3px;
+  border-right: 4px solid;
+  border-color: #00C0E0;
+}
+
+dl.test {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #3030E0;
+}
+
+dl.test.DocNodeRTL {
+  margin-left: 0;
+  padding-left: 0;
+  border-left: 0;
+  margin-right: -7px;
+  padding-right: 3px;
+  border-right: 4px solid;
+  border-color: #3030E0;
+}
+
+dl.bug {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #C08050;
+}
+
+dl.bug.DocNodeRTL {
+  margin-left: 0;
+  padding-left: 0;
+  border-left: 0;
+  margin-right: -7px;
+  padding-right: 3px;
+  border-right: 4px solid;
+  border-color: #C08050;
+}
+
+dl.section dd {
+       margin-bottom: 6px;
+}
+
+
+#projectlogo
+{
+       text-align: center;
+       vertical-align: bottom;
+       border-collapse: separate;
+}
+#projectlogo img
+{ 
+       border: 0px none;
+}
+#projectalign
+{
+        vertical-align: middle;
+}
+
+#projectname
+{
+       font: 300% Tahoma, Arial,sans-serif;
+       margin: 0px;
+       padding: 2px 0px;
+}
+    
+#projectbrief
+{
+       font: 120% Tahoma, Arial,sans-serif;
+       margin: 0px;
+       padding: 0px;
+}
+
+#projectnumber
+{
+       font: 50% Tahoma, Arial,sans-serif;
+       margin: 0px;
+       padding: 0px;
+}
+
+#titlearea
+{
+       padding: 0px;
+       margin: 0px;
+       width: 100%;
+       border-bottom: 1px solid #5373B4;
+}
+
+.image
+{
+        text-align: center;
+}
+
+.dotgraph
+{
+        text-align: center;
+}
+
+.mscgraph
+{
+        text-align: center;
+}
+
+.plantumlgraph
+{
+        text-align: center;
+}
+
+.diagraph
+{
+        text-align: center;
+}
+
+.caption
+{
+       font-weight: bold;
+}
+
+div.zoom
+{
+       border: 1px solid #90A5CE;
+}
+
+dl.citelist {
+        margin-bottom:50px;
+}
+
+dl.citelist dt {
+        color:#334975;
+        float:left;
+        font-weight:bold;
+        margin-right:10px;
+        padding:5px;
+        text-align:right;
+        width:52px;
+}
+
+dl.citelist dd {
+        margin:2px 0 2px 72px;
+        padding:5px 0;
+}
+
+div.toc {
+        padding: 14px 25px;
+        background-color: #F4F6FA;
+        border: 1px solid #D8DFEE;
+        border-radius: 7px 7px 7px 7px;
+        float: right;
+        height: auto;
+        margin: 0 8px 10px 10px;
+        width: 200px;
+}
+
+.PageDocRTL-title div.toc {
+  float: left !important;
+  text-align: right;
+}
+
+div.toc li {
+        background: url("bdwn.png") no-repeat scroll 0 5px transparent;
+        font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
+        margin-top: 5px;
+        padding-left: 10px;
+        padding-top: 2px;
+}
+
+.PageDocRTL-title div.toc li {
+  background-position-x: right !important;
+  padding-left: 0 !important;
+  padding-right: 10px;
+}
+
+div.toc h3 {
+        font: bold 12px/1.2 Arial,FreeSans,sans-serif;
+       color: #4665A2;
+        border-bottom: 0 none;
+        margin: 0;
+}
+
+div.toc ul {
+        list-style: none outside none;
+        border: medium none;
+        padding: 0px;
+}       
+
+div.toc li.level1 {
+        margin-left: 0px;
+}
+
+div.toc li.level2 {
+        margin-left: 15px;
+}
+
+div.toc li.level3 {
+        margin-left: 30px;
+}
+
+div.toc li.level4 {
+        margin-left: 45px;
+}
+
+span.emoji {
+        /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html
+         * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort;
+         */
+}
+
+.PageDocRTL-title div.toc li.level1 {
+  margin-left: 0 !important;
+  margin-right: 0;
+}
+
+.PageDocRTL-title div.toc li.level2 {
+  margin-left: 0 !important;
+  margin-right: 15px;
+}
+
+.PageDocRTL-title div.toc li.level3 {
+  margin-left: 0 !important;
+  margin-right: 30px;
+}
+
+.PageDocRTL-title div.toc li.level4 {
+  margin-left: 0 !important;
+  margin-right: 45px;
+}
+
+.inherit_header {
+        font-weight: bold;
+        color: gray;
+        cursor: pointer;
+       -webkit-touch-callout: none;
+       -webkit-user-select: none;
+       -khtml-user-select: none;
+       -moz-user-select: none;
+       -ms-user-select: none;
+       user-select: none;
+}
+
+.inherit_header td {
+        padding: 6px 0px 2px 5px;
+}
+
+.inherit {
+        display: none;
+}
+
+tr.heading h2 {
+        margin-top: 12px;
+        margin-bottom: 4px;
+}
+
+/* tooltip related style info */
+
+.ttc {
+        position: absolute;
+        display: none;
+}
+
+#powerTip {
+       cursor: default;
+       white-space: nowrap;
+       background-color: white;
+       border: 1px solid gray;
+       border-radius: 4px 4px 4px 4px;
+       box-shadow: 1px 1px 7px gray;
+       display: none;
+       font-size: smaller;
+       max-width: 80%;
+       opacity: 0.9;
+       padding: 1ex 1em 1em;
+       position: absolute;
+       z-index: 2147483647;
+}
+
+#powerTip div.ttdoc {
+        color: grey;
+       font-style: italic;
+}
+
+#powerTip div.ttname a {
+        font-weight: bold;
+}
+
+#powerTip div.ttname {
+        font-weight: bold;
+}
+
+#powerTip div.ttdeci {
+        color: #006318;
+}
+
+#powerTip div {
+        margin: 0px;
+        padding: 0px;
+        font: 12px/16px Roboto,sans-serif;
+}
+
+#powerTip:before, #powerTip:after {
+       content: "";
+       position: absolute;
+       margin: 0px;
+}
+
+#powerTip.n:after,  #powerTip.n:before,
+#powerTip.s:after,  #powerTip.s:before,
+#powerTip.w:after,  #powerTip.w:before,
+#powerTip.e:after,  #powerTip.e:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.nw:after, #powerTip.nw:before,
+#powerTip.sw:after, #powerTip.sw:before {
+       border: solid transparent;
+       content: " ";
+       height: 0;
+       width: 0;
+       position: absolute;
+}
+
+#powerTip.n:after,  #powerTip.s:after,
+#powerTip.w:after,  #powerTip.e:after,
+#powerTip.nw:after, #powerTip.ne:after,
+#powerTip.sw:after, #powerTip.se:after {
+       border-color: rgba(255, 255, 255, 0);
+}
+
+#powerTip.n:before,  #powerTip.s:before,
+#powerTip.w:before,  #powerTip.e:before,
+#powerTip.nw:before, #powerTip.ne:before,
+#powerTip.sw:before, #powerTip.se:before {
+       border-color: rgba(128, 128, 128, 0);
+}
+
+#powerTip.n:after,  #powerTip.n:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.nw:after, #powerTip.nw:before {
+       top: 100%;
+}
+
+#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
+       border-top-color: #FFFFFF;
+       border-width: 10px;
+       margin: 0px -10px;
+}
+#powerTip.n:before {
+       border-top-color: #808080;
+       border-width: 11px;
+       margin: 0px -11px;
+}
+#powerTip.n:after, #powerTip.n:before {
+       left: 50%;
+}
+
+#powerTip.nw:after, #powerTip.nw:before {
+       right: 14px;
+}
+
+#powerTip.ne:after, #powerTip.ne:before {
+       left: 14px;
+}
+
+#powerTip.s:after,  #powerTip.s:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.sw:after, #powerTip.sw:before {
+       bottom: 100%;
+}
+
+#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
+       border-bottom-color: #FFFFFF;
+       border-width: 10px;
+       margin: 0px -10px;
+}
+
+#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
+       border-bottom-color: #808080;
+       border-width: 11px;
+       margin: 0px -11px;
+}
+
+#powerTip.s:after, #powerTip.s:before {
+       left: 50%;
+}
+
+#powerTip.sw:after, #powerTip.sw:before {
+       right: 14px;
+}
+
+#powerTip.se:after, #powerTip.se:before {
+       left: 14px;
+}
+
+#powerTip.e:after, #powerTip.e:before {
+       left: 100%;
+}
+#powerTip.e:after {
+       border-left-color: #FFFFFF;
+       border-width: 10px;
+       top: 50%;
+       margin-top: -10px;
+}
+#powerTip.e:before {
+       border-left-color: #808080;
+       border-width: 11px;
+       top: 50%;
+       margin-top: -11px;
+}
+
+#powerTip.w:after, #powerTip.w:before {
+       right: 100%;
+}
+#powerTip.w:after {
+       border-right-color: #FFFFFF;
+       border-width: 10px;
+       top: 50%;
+       margin-top: -10px;
+}
+#powerTip.w:before {
+       border-right-color: #808080;
+       border-width: 11px;
+       top: 50%;
+       margin-top: -11px;
+}
+
+@media print
+{
+  #top { display: none; }
+  #side-nav { display: none; }
+  #nav-path { display: none; }
+  body { overflow:visible; }
+  h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+  .summary { display: none; }
+  .memitem { page-break-inside: avoid; }
+  #doc-content
+  {
+    margin-left:0 !important;
+    height:auto !important;
+    width:auto !important;
+    overflow:inherit;
+    display:inline;
+  }
+}
+
+/* @group Markdown */
+
+table.markdownTable {
+       border-collapse:collapse;
+        margin-top: 4px;
+        margin-bottom: 4px;
+}
+
+table.markdownTable td, table.markdownTable th {
+       border: 1px solid #2D4068;
+       padding: 3px 7px 2px;
+}
+
+table.markdownTable tr {
+}
+
+th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {
+       background-color: #374F7F;
+       color: #FFFFFF;
+       font-size: 110%;
+       padding-bottom: 4px;
+       padding-top: 5px;
+}
+
+th.markdownTableHeadLeft, td.markdownTableBodyLeft {
+       text-align: left
+}
+
+th.markdownTableHeadRight, td.markdownTableBodyRight {
+       text-align: right
+}
+
+th.markdownTableHeadCenter, td.markdownTableBodyCenter {
+       text-align: center
+}
+
+.DocNodeRTL {
+  text-align: right;
+  direction: rtl;
+}
+
+.DocNodeLTR {
+  text-align: left;
+  direction: ltr;
+}
+
+table.DocNodeRTL {
+   width: auto;
+   margin-right: 0;
+   margin-left: auto;
+}
+
+table.DocNodeLTR {
+   width: auto;
+   margin-right: auto;
+   margin-left: 0;
+}
+
+tt, code, kbd, samp
+{
+  display: inline-block;
+  direction:ltr; 
+}
+/* @end */
+
+u {
+       text-decoration: underline;
+}
+
diff --git a/doxygen.svg b/doxygen.svg
new file mode 100644 (file)
index 0000000..d42dad5
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg version="1.1" viewBox="0 0 104 31" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+  <linearGradient id="a">
+   <stop stop-color="#5373B4" offset="0"/>
+   <stop stop-color="#7C95C6" offset="1"/>
+  </linearGradient>
+  <linearGradient id="d" x1="31.474" x2="31.474" y1="24.821" y2="26.773" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
+  <linearGradient id="c" x1="31.474" x2="31.474" y1="24.821" y2="26.773" gradientTransform="matrix(.6816 0 0 1.0248 72.391 -.91809)" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
+  <linearGradient id="b" x1="56.295" x2="56.295" y1="24.622" y2="26.574" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
+  <linearGradient id="e" x1="49.067" x2="48.956" y1="19.719" y2="9.5227" gradientTransform="matrix(.97968 0 0 1.0207 -.25579 -.25579)" gradientUnits="userSpaceOnUse">
+   <stop stop-color="#C0CCE3" offset="0"/>
+   <stop stop-color="#EEF1F7" offset="1"/>
+  </linearGradient>
+  <filter id="f" x="-.010676" y="-.045304" width="1.0214" height="1.0906" color-interpolation-filters="sRGB">
+   <feGaussianBlur stdDeviation="0.45293203"/>
+  </filter>
+ </defs>
+ <g>
+  <path transform="translate(-2.5759 -27.848)" d="m13.609 32.203v6.8633h-0.05078c-0.40533-0.66867-0.96254-1.1715-1.6719-1.5059-0.69244-0.35193-1.4282-0.52734-2.2051-0.52734-0.96267 0-1.807 0.2027-2.5332 0.60742-0.72622 0.38713-1.3344 0.90556-1.8242 1.5566-0.47289 0.65108-0.83456 1.4092-1.0879 2.2715-0.23644 0.84464-0.35547 1.7236-0.35547 2.6387 0 0.95022 0.11902 1.8643 0.35547 2.7441 0.25333 0.87983 0.615 1.6633 1.0879 2.3496 0.48978 0.66867 1.1065 1.2066 1.8496 1.6113 0.74311 0.38713 1.6044 0.58008 2.584 0.58008 0.86133 0 1.6311-0.15787 2.3066-0.47461 0.69244-0.33434 1.2497-0.87227 1.6719-1.6113h0.05078v1.7422h3.4199v-18.846zm12.875 4.8301c-1.0302 0-1.9596 0.17541-2.7871 0.52734-0.82756 0.33434-1.5358 0.81965-2.127 1.4531-0.59111 0.61588-1.0483 1.3721-1.3691 2.2695-0.32089 0.87983-0.48047 1.866-0.48047 2.957s0.15958 2.0752 0.48047 2.9551c0.32089 0.87983 0.77803 1.6361 1.3691 2.2695 0.59111 0.61588 1.2994 1.0914 2.127 1.4258 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.0302 0 1.9596-0.16762 2.7871-0.50195 0.84444-0.33434 1.5612-0.8099 2.1523-1.4258 0.59111-0.63348 1.0483-1.3897 1.3691-2.2695 0.32089-0.87983 0.48047-1.8641 0.48047-2.9551s-0.15958-2.0772-0.48047-2.957c-0.32089-0.89743-0.77803-1.6536-1.3691-2.2695-0.59111-0.63348-1.3079-1.1188-2.1523-1.4531-0.82756-0.35193-1.7569-0.52734-2.7871-0.52734zm41.715 0c-0.912 0-1.7223 0.18516-2.4316 0.55469-0.69244 0.36953-1.2752 0.87043-1.748 1.5039-0.47289 0.61588-0.83651 1.337-1.0898 2.1641-0.23645 0.80944-0.35352 1.6553-0.35352 2.5352 0 0.93262 0.10007 1.8214 0.30273 2.666 0.21956 0.82704 0.55767 1.556 1.0137 2.1895 0.456 0.61588 1.0387 1.109 1.748 1.4785 0.70933 0.35193 1.5536 0.5293 2.5332 0.5293 0.79378 0 1.5446-0.16762 2.2539-0.50195 0.72622-0.35193 1.2834-0.88986 1.6719-1.6113h0.05078v1.7949c0.01689 0.96782-0.21071 1.7689-0.68359 2.4023-0.456 0.63348-1.1898 0.95117-2.2031 0.95117-0.64178 0-1.2075-0.14228-1.6973-0.42383-0.48978-0.26395-0.81939-0.74731-0.98828-1.4512h-3.5723c0.05067 0.77425 0.25276 1.435 0.60742 1.9805 0.37156 0.56309 0.8287 1.0192 1.3691 1.3711 0.55733 0.35193 1.1656 0.60726 1.8242 0.76562 0.67556 0.17597 1.3328 0.26562 1.9746 0.26562 1.5031 0 2.7025-0.21245 3.5977-0.63477 0.89511-0.42232 1.5798-0.94076 2.0527-1.5566 0.47289-0.59829 0.777-1.2493 0.91211-1.9531 0.152-0.70386 0.22656-1.3295 0.22656-1.875v-12.775h-3.4199v1.8223h-0.05078c-0.43911-0.79185-0.98782-1.3551-1.6465-1.6895-0.64178-0.33434-1.3926-0.50195-2.2539-0.50195zm16.523 0c-0.99644 0-1.9088 0.18516-2.7363 0.55469-0.81067 0.36953-1.5124 0.88018-2.1035 1.5312-0.59111 0.63348-1.0463 1.3897-1.3672 2.2695s-0.48047 1.831-0.48047 2.8516c0 1.0558 0.15108 2.0225 0.45508 2.9023 0.32089 0.87983 0.76758 1.6361 1.3418 2.2695 0.57422 0.63348 1.276 1.1266 2.1035 1.4785 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.4862 0 2.7517-0.35277 3.7988-1.0566 1.0471-0.70387 1.8254-1.8733 2.332-3.5098h-3.168c-0.11822 0.42232-0.43934 0.82772-0.96289 1.2148-0.52355 0.36953-1.1468 0.55274-1.873 0.55273-1.0133 0-1.7916-0.27286-2.332-0.81836-0.54044-0.5455-0.83605-1.4245-0.88672-2.6387h9.4492c0.06756-1.0558-0.01551-2.0673-0.25195-3.0352-0.23644-0.96782-0.62557-1.8293-1.166-2.5859-0.52356-0.75666-1.1998-1.355-2.0273-1.7949-0.82756-0.45751-1.7974-0.6875-2.9121-0.6875zm16.189 0c-0.76 0-1.5023 0.18516-2.2285 0.55469-0.72622 0.35193-1.3174 0.92299-1.7734 1.7148h-0.07617v-1.9004h-3.4199v13.646h3.5977v-7.1523c0-1.3901 0.21909-2.3841 0.6582-2.9824 0.43911-0.61588 1.1494-0.92383 2.1289-0.92383 0.86133 0 1.4611 0.28066 1.7988 0.84375 0.33777 0.5455 0.50586 1.3816 0.50586 2.5078v7.707h3.5976v-8.3926c0-0.84464-0.0765-1.6106-0.22851-2.2969-0.13511-0.70387-0.37971-1.2925-0.73438-1.7676-0.35466-0.49271-0.84386-0.87277-1.4688-1.1367-0.608-0.28155-1.3948-0.42188-2.3574-0.42188zm-66.063 0.36914 4.3066 6.4668-4.7129 7.1797h4.0293l2.7363-4.3027 2.7344 4.3027h4.1055l-4.8398-7.2578 4.3066-6.3887h-3.9766l-2.2793 3.5645-2.3066-3.5645zm13.275 0 4.584 12.803c0.10133 0.26395 0.15234 0.54461 0.15234 0.84375 0 0.40472-0.11707 0.77504-0.35352 1.1094-0.21956 0.33434-0.56617 0.52729-1.0391 0.58008-0.35467 0.0176-0.70979 0.0098-1.0645-0.02539-0.35467-0.03519-0.70128-0.07028-1.0391-0.10547v3.0879c0.37156 0.03519 0.73518 0.06051 1.0898 0.07813 0.37156 0.03519 0.74368 0.05273 1.1152 0.05273 1.2329 0 2.1943-0.23778 2.8867-0.71289 0.69244-0.47511 1.2326-1.2664 1.6211-2.375l5.4727-15.336h-3.7246l-2.8613 9.3438h-0.05078l-2.9648-9.3438zm-37.48 2.4551c0.59111 0 1.0823 0.12279 1.4707 0.36914 0.38844 0.24635 0.6991 0.57184 0.93555 0.97656 0.25333 0.38713 0.43187 0.84515 0.5332 1.373 0.10133 0.5103 0.15234 1.0482 0.15234 1.6113 0 0.56309-0.05101 1.1069-0.15234 1.6348-0.10133 0.5279-0.27137 1.0035-0.50781 1.4258-0.23644 0.40472-0.5556 0.73021-0.96094 0.97656-0.38844 0.24635-0.87959 0.36914-1.4707 0.36914-0.55733 0-1.038-0.12279-1.4434-0.36914-0.38844-0.26395-0.71806-0.59723-0.98828-1.002-0.25333-0.42232-0.43842-0.89788-0.55664-1.4258s-0.17773-1.0561-0.17773-1.584c-1e-7 -0.56309 0.05101-1.0991 0.15234-1.6094 0.11822-0.5279 0.29481-0.99567 0.53125-1.4004 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.24635 0.90303-0.36914 1.4941-0.36914zm15.84 0c0.608 0 1.1142 0.13253 1.5195 0.39648 0.42222 0.24635 0.75184 0.57184 0.98828 0.97656 0.25333 0.40472 0.42992 0.87054 0.53125 1.3984 0.10133 0.5279 0.15234 1.0658 0.15234 1.6113 0 0.5455-0.05101 1.0815-0.15234 1.6094-0.10134 0.5103-0.27792 0.97612-0.53125 1.3984-0.23644 0.40472-0.56606 0.73021-0.98828 0.97656-0.40533 0.24635-0.91153 0.36914-1.5195 0.36914-0.608 0-1.1142-0.12279-1.5195-0.36914s-0.73495-0.57184-0.98828-0.97656c-0.23644-0.42232-0.40648-0.88814-0.50781-1.3984-0.10133-0.5279-0.15234-1.0639-0.15234-1.6094 0-0.5455 0.05101-1.0834 0.15234-1.6113 0.10133-0.5279 0.27137-0.99371 0.50781-1.3984 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.26395 0.91153-0.39648 1.5195-0.39648zm42.602 0c0.59111 0 1.0803 0.11499 1.4688 0.34375 0.38844 0.22876 0.70105 0.5367 0.9375 0.92383 0.23644 0.38713 0.40648 0.8354 0.50781 1.3457 0.10133 0.49271 0.15039 1.0209 0.15039 1.584 0 0.4927-0.06606 0.96827-0.20117 1.4258-0.11822 0.43992-0.30526 0.83557-0.55859 1.1875-0.25333 0.35193-0.57445 0.63259-0.96289 0.84375-0.38844 0.21116-0.83513 0.31836-1.3418 0.31836-0.55733 0-1.021-0.12474-1.3926-0.37109-0.37156-0.24635-0.67566-0.56209-0.91211-0.94922-0.21956-0.38713-0.38109-0.81786-0.48242-1.293-0.08444-0.49271-0.12695-0.98581-0.12695-1.4785 0-0.5103 0.05101-0.99366 0.15234-1.4512 0.11822-0.47511 0.29676-0.89025 0.5332-1.2422 0.25333-0.36953 0.55744-0.65993 0.91211-0.87109 0.37156-0.21116 0.80974-0.31641 1.3164-0.31641zm15.535 0c0.87822 0 1.529 0.24753 1.9512 0.74023 0.43911 0.49271 0.74322 1.2138 0.91211 2.1641h-5.8535c0.01689-0.26395 0.0679-0.5641 0.15234-0.89844 0.10133-0.33434 0.26287-0.65008 0.48242-0.94922 0.23644-0.29914 0.54055-0.54667 0.91211-0.74023 0.38845-0.21116 0.86914-0.31641 1.4434-0.31641z" filter="url(#f)" opacity=".3" stroke="#969696" xlink:href="#path141"/>
+  <path d="m0.97202 24.161 43.605-0.0019 0.0508 3.3061-43.6 0.04174z" fill="url(#d)" stroke="#000" stroke-width=".5"/>
+  <path d="m10.283 3.5547v6.8633h-0.05078c-0.40533-0.66867-0.96254-1.1715-1.6719-1.5059-0.69244-0.35193-1.4282-0.52734-2.2051-0.52734-0.96267 0-1.807 0.2027-2.5332 0.60742-0.72622 0.38713-1.3344 0.90556-1.8242 1.5566-0.47289 0.65108-0.83456 1.4092-1.0879 2.2715-0.23644 0.84464-0.35547 1.7236-0.35547 2.6387 0 0.95022 0.11902 1.8643 0.35547 2.7441 0.25333 0.87983 0.615 1.6633 1.0879 2.3496 0.48978 0.66867 1.1065 1.2066 1.8496 1.6113 0.74311 0.38713 1.6044 0.58008 2.584 0.58008 0.86133 0 1.6311-0.15787 2.3066-0.47461 0.69244-0.33434 1.2497-0.87227 1.6719-1.6113h0.05078v1.7422h3.4199v-18.846zm12.875 4.8301c-1.0302 0-1.9596 0.17541-2.7871 0.52734-0.82756 0.33434-1.5358 0.81965-2.127 1.4531-0.59111 0.61588-1.0483 1.3721-1.3691 2.2695-0.32089 0.87983-0.48047 1.866-0.48047 2.957s0.15958 2.0752 0.48047 2.9551c0.32089 0.87983 0.77803 1.6361 1.3691 2.2695 0.59111 0.61588 1.2994 1.0914 2.127 1.4258 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.0302 0 1.9596-0.16762 2.7871-0.50195 0.84444-0.33434 1.5612-0.8099 2.1523-1.4258 0.59111-0.63348 1.0483-1.3897 1.3691-2.2695 0.32089-0.87983 0.48047-1.8641 0.48047-2.9551s-0.15958-2.0772-0.48047-2.957c-0.32089-0.89743-0.77803-1.6536-1.3691-2.2695-0.59111-0.63348-1.3079-1.1188-2.1523-1.4531-0.82756-0.35193-1.7569-0.52734-2.7871-0.52734zm41.715 0c-0.912 0-1.7223 0.18516-2.4316 0.55469-0.69244 0.36953-1.2752 0.87043-1.748 1.5039-0.47289 0.61588-0.83651 1.337-1.0898 2.1641-0.23644 0.80944-0.35352 1.6553-0.35352 2.5352 0 0.93262 0.10007 1.8214 0.30273 2.666 0.21956 0.82704 0.55767 1.556 1.0137 2.1895 0.456 0.61588 1.0387 1.109 1.748 1.4785 0.70933 0.35193 1.5536 0.5293 2.5332 0.5293 0.79378 0 1.5446-0.16762 2.2539-0.50195 0.72622-0.35193 1.2834-0.88986 1.6719-1.6113h0.05078v1.7949c0.01689 0.96782-0.21071 1.7689-0.68359 2.4023-0.456 0.63348-1.1898 0.95117-2.2031 0.95117-0.64178 0-1.2075-0.14228-1.6973-0.42383-0.48978-0.26395-0.81939-0.74731-0.98828-1.4512h-3.5723c0.05067 0.77425 0.25276 1.435 0.60742 1.9805 0.37156 0.56309 0.8287 1.0192 1.3691 1.3711 0.55733 0.35193 1.1656 0.60726 1.8242 0.76562 0.67556 0.17597 1.3328 0.26562 1.9746 0.26562 1.5031 0 2.7025-0.21245 3.5977-0.63477 0.89511-0.42232 1.5798-0.94076 2.0527-1.5566 0.47289-0.59829 0.777-1.2493 0.91211-1.9531 0.152-0.70386 0.22656-1.3295 0.22656-1.875v-12.775h-3.4199v1.8223h-0.05078c-0.43911-0.79185-0.98782-1.3551-1.6465-1.6895-0.64178-0.33434-1.3926-0.50195-2.2539-0.50195zm16.523 0c-0.99644 0-1.9088 0.18516-2.7363 0.55469-0.81067 0.36953-1.5124 0.88017-2.1035 1.5312-0.59111 0.63348-1.0463 1.3897-1.3672 2.2695s-0.48047 1.831-0.48047 2.8516c0 1.0558 0.15108 2.0225 0.45508 2.9023 0.32089 0.87983 0.76758 1.6361 1.3418 2.2695 0.57422 0.63348 1.276 1.1266 2.1035 1.4785 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.4862 0 2.7517-0.35278 3.7988-1.0566 1.0471-0.70386 1.8254-1.8733 2.332-3.5098h-3.168c-0.11822 0.42232-0.43934 0.82772-0.96289 1.2148-0.52355 0.36953-1.1468 0.55274-1.873 0.55273-1.0133 0-1.7916-0.27286-2.332-0.81836-0.54044-0.5455-0.83605-1.4245-0.88672-2.6387h9.4492c0.06756-1.0558-0.01551-2.0673-0.25195-3.0352-0.23644-0.96782-0.62557-1.8293-1.166-2.5859-0.52356-0.75666-1.1998-1.355-2.0273-1.7949-0.82756-0.45751-1.7974-0.6875-2.9121-0.6875zm16.189 0c-0.76 0-1.5023 0.18516-2.2285 0.55469-0.72622 0.35193-1.3174 0.923-1.7734 1.7148h-0.07617v-1.9004h-3.4199v13.646h3.5977v-7.1523c0-1.3901 0.21909-2.3841 0.6582-2.9824 0.43911-0.61588 1.1494-0.92383 2.1289-0.92383 0.86133 0 1.461 0.28066 1.7988 0.84375 0.33778 0.5455 0.50586 1.3816 0.50586 2.5078v7.707h3.5977v-8.3926c0-0.84464-0.0765-1.6106-0.22852-2.2969-0.13511-0.70387-0.3797-1.2925-0.73437-1.7676-0.35466-0.49271-0.84386-0.87277-1.4688-1.1367-0.608-0.28155-1.3948-0.42188-2.3574-0.42188zm-66.062 0.36914 4.3066 6.4668-4.7129 7.1797h4.0293l2.7363-4.3027 2.7344 4.3027h4.1055l-4.8398-7.2578 4.3066-6.3887h-3.9766l-2.2793 3.5645-2.3066-3.5645zm13.275 0 4.584 12.803c0.10133 0.26395 0.15234 0.54461 0.15234 0.84375 0 0.40472-0.11707 0.77504-0.35352 1.1094-0.21956 0.33434-0.56617 0.52729-1.0391 0.58008-0.35467 0.0176-0.70979 0.0098-1.0645-0.02539-0.35467-0.03519-0.70128-0.07027-1.0391-0.10547v3.0879c0.37156 0.03519 0.73518 0.06052 1.0898 0.07813 0.37156 0.03519 0.74368 0.05273 1.1152 0.05273 1.2329 0 2.1943-0.23778 2.8867-0.71289 0.69244-0.47511 1.2326-1.2664 1.6211-2.375l5.4727-15.336h-3.7246l-2.8613 9.3437h-0.05078l-2.9648-9.3437zm-37.48 2.4551c0.59111 0 1.0823 0.12279 1.4707 0.36914s0.6991 0.57184 0.93555 0.97656c0.25333 0.38713 0.43187 0.84515 0.5332 1.373 0.10133 0.5103 0.15234 1.0482 0.15234 1.6113 0 0.56309-0.05101 1.1069-0.15234 1.6348-0.10133 0.5279-0.27137 1.0035-0.50781 1.4258-0.23644 0.40472-0.5556 0.73021-0.96094 0.97656-0.38844 0.24635-0.87959 0.36914-1.4707 0.36914-0.55733 0-1.038-0.12279-1.4434-0.36914-0.38844-0.26395-0.71806-0.59723-0.98828-1.002-0.25333-0.42232-0.43842-0.89788-0.55664-1.4258s-0.17773-1.0561-0.17773-1.584c-1e-7 -0.56309 0.05101-1.0991 0.15234-1.6094 0.11822-0.5279 0.29481-0.99567 0.53125-1.4004 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.24635 0.90303-0.36914 1.4941-0.36914zm15.84 0c0.608 0 1.1142 0.13254 1.5195 0.39648 0.42222 0.24635 0.75184 0.57184 0.98828 0.97656 0.25333 0.40472 0.42992 0.87054 0.53125 1.3984 0.10133 0.5279 0.15234 1.0658 0.15234 1.6113 0 0.5455-0.05101 1.0815-0.15234 1.6094-0.10133 0.5103-0.27792 0.97612-0.53125 1.3984-0.23644 0.40472-0.56606 0.73021-0.98828 0.97656-0.40533 0.24635-0.91153 0.36914-1.5195 0.36914-0.608 0-1.1142-0.12279-1.5195-0.36914s-0.73495-0.57184-0.98828-0.97656c-0.23644-0.42232-0.40648-0.88813-0.50781-1.3984-0.10133-0.5279-0.15234-1.0639-0.15234-1.6094 0-0.5455 0.05101-1.0834 0.15234-1.6113 0.10133-0.5279 0.27137-0.99371 0.50781-1.3984 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.26395 0.91153-0.39648 1.5195-0.39648zm42.602 0c0.59111 0 1.0803 0.11499 1.4688 0.34375 0.38844 0.22876 0.70106 0.5367 0.9375 0.92383 0.23644 0.38713 0.40648 0.8354 0.50781 1.3457 0.10133 0.49271 0.15039 1.0209 0.15039 1.584 0 0.49271-0.06606 0.96827-0.20117 1.4258-0.11822 0.43992-0.30526 0.83557-0.55859 1.1875-0.25333 0.35193-0.57445 0.63259-0.96289 0.84375-0.38844 0.21116-0.83513 0.31836-1.3418 0.31836-0.55733 0-1.021-0.12474-1.3926-0.37109-0.37156-0.24635-0.67566-0.56209-0.91211-0.94922-0.21956-0.38713-0.38109-0.81786-0.48242-1.293-0.08444-0.49271-0.12695-0.98581-0.12695-1.4785 0-0.5103 0.05101-0.99366 0.15234-1.4512 0.11822-0.47511 0.29676-0.89026 0.5332-1.2422 0.25333-0.36953 0.55744-0.65993 0.91211-0.87109 0.37156-0.21116 0.80974-0.31641 1.3164-0.31641zm15.535 0c0.87822 0 1.529 0.24753 1.9512 0.74024 0.43911 0.49271 0.74322 1.2138 0.91211 2.1641h-5.8535c0.01689-0.26395 0.0679-0.5641 0.15234-0.89844 0.10133-0.33434 0.26287-0.65008 0.48242-0.94922 0.23644-0.29914 0.54055-0.54667 0.91211-0.74023 0.38845-0.21116 0.86914-0.31641 1.4434-0.31641z" fill="url(#e)" stroke="#4665A2" stroke-width=".7"/>
+  <path d="m52.988 27.291c0.99602-1.0359 1.3944-1.8725 1.7928-3.1076l3.8247-0.03984c0.3113 1.6096 0.82413 2.5137 1.6335 3.1474z" fill="url(#b)" stroke="#000" stroke-width=".5"/>
+  <path d="m73.89 24.04 28.885-0.2011-0.12476 3.3879-31.033 0.16229c1.2621-1.0234 1.9665-2.2859 2.2724-3.3491z" fill="url(#c)" stroke="#000" stroke-width=".41788"/>
+ </g>
+</svg>
diff --git a/dynsections.js b/dynsections.js
new file mode 100644 (file)
index 0000000..3174bd7
--- /dev/null
@@ -0,0 +1,121 @@
+/*
+ @licstart  The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend  The above is the entire license notice for the JavaScript code in this file
+ */
+function toggleVisibility(linkObj)
+{
+ var base = $(linkObj).attr('id');
+ var summary = $('#'+base+'-summary');
+ var content = $('#'+base+'-content');
+ var trigger = $('#'+base+'-trigger');
+ var src=$(trigger).attr('src');
+ if (content.is(':visible')===true) {
+   content.hide();
+   summary.show();
+   $(linkObj).addClass('closed').removeClass('opened');
+   $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+   content.show();
+   summary.hide();
+   $(linkObj).removeClass('closed').addClass('opened');
+   $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
+ }
+ return false;
+}
+
+function updateStripes()
+{
+  $('table.directory tr').
+       removeClass('even').filter(':visible:even').addClass('even');
+}
+
+function toggleLevel(level)
+{
+  $('table.directory tr').each(function() {
+    var l = this.id.split('_').length-1;
+    var i = $('#img'+this.id.substring(3));
+    var a = $('#arr'+this.id.substring(3));
+    if (l<level+1) {
+      i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
+      a.html('&#9660;');
+      $(this).show();
+    } else if (l==level+1) {
+      i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
+      a.html('&#9658;');
+      $(this).show();
+    } else {
+      $(this).hide();
+    }
+  });
+  updateStripes();
+}
+
+function toggleFolder(id)
+{
+  // the clicked row
+  var currentRow = $('#row_'+id);
+
+  // all rows after the clicked row
+  var rows = currentRow.nextAll("tr");
+
+  var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
+
+  // only match elements AFTER this one (can't hide elements before)
+  var childRows = rows.filter(function() { return this.id.match(re); });
+
+  // first row is visible we are HIDING
+  if (childRows.filter(':first').is(':visible')===true) {
+    // replace down arrow by right arrow for current row
+    var currentRowSpans = currentRow.find("span");
+    currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
+    currentRowSpans.filter(".arrow").html('&#9658;');
+    rows.filter("[id^=row_"+id+"]").hide(); // hide all children
+  } else { // we are SHOWING
+    // replace right arrow by down arrow for current row
+    var currentRowSpans = currentRow.find("span");
+    currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
+    currentRowSpans.filter(".arrow").html('&#9660;');
+    // replace down arrows by right arrows for child rows
+    var childRowsSpans = childRows.find("span");
+    childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
+    childRowsSpans.filter(".arrow").html('&#9658;');
+    childRows.show(); //show all children
+  }
+  updateStripes();
+}
+
+
+function toggleInherit(id)
+{
+  var rows = $('tr.inherit.'+id);
+  var img = $('tr.inherit_header.'+id+' img');
+  var src = $(img).attr('src');
+  if (rows.filter(':first').is(':visible')===true) {
+    rows.css('display','none');
+    $(img).attr('src',src.substring(0,src.length-8)+'closed.png');
+  } else {
+    rows.css('display','table-row'); // using show() causes jump in firefox
+    $(img).attr('src',src.substring(0,src.length-10)+'open.png');
+  }
+}
+/* @license-end */
diff --git a/error_8h_source.html b/error_8h_source.html
new file mode 100644 (file)
index 0000000..12071ef
--- /dev/null
@@ -0,0 +1,147 @@
+<!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>libcgroup: include/libcgroup/error.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_66a7763e2a9b96033a682558820d533e.html">libcgroup</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">error.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#ifndef _LIBCGROUP_ERROR_H</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#define _LIBCGROUP_ERROR_H</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160; </div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="preprocessor">#ifndef _LIBCGROUP_H_INSIDE</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="preprocessor">#error &quot;Only &lt;libcgroup.h&gt; should be included directly.&quot;</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160; </div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#ifndef SWIG</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &lt;features.h&gt;</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160; </div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160; </div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="keyword">enum</span> {</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;    ECGROUPNOTCOMPILED = 50000,</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    ECGROUPNOTMOUNTED,</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;    ECGROUPNOTEXIST,</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;    ECGROUPNOTCREATED,</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;    ECGROUPSUBSYSNOTMOUNTED,</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;    ECGROUPNOTOWNER,</div>
+<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba24a6584dd4238475a4e247bdf6956def">   39</a></span>&#160;    <a class="code" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba24a6584dd4238475a4e247bdf6956def">ECGROUPMULTIMOUNTED</a>,</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;    <span class="comment">/* This is the stock error. Default error. @todo really? */</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;    ECGROUPNOTALLOWED,</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;    ECGMAXVALUESEXCEEDED,</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;    ECGCONTROLLEREXISTS,</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;    ECGVALUEEXISTS,</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    ECGINVAL,</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    ECGCONTROLLERCREATEFAILED,</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    ECGFAIL,</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    ECGROUPNOTINITIALIZED,</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    ECGROUPVALUENOTEXIST,</div>
+<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba88111f9ca2e967cbf7565724444c0193">   55</a></span>&#160;    <a class="code" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba88111f9ca2e967cbf7565724444c0193">ECGOTHER</a>,</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    ECGROUPNOTEQUAL,</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    ECGCONTROLLERNOTEQUAL,</div>
+<div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55bac62bda67f3029c39ef456100008b1f39">   59</a></span>&#160;    <a class="code" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55bac62bda67f3029c39ef456100008b1f39">ECGROUPPARSEFAIL</a>,</div>
+<div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba7c23c1a7cbfb7e8e9c66dd96b5c66d21">   61</a></span>&#160;    <a class="code" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba7c23c1a7cbfb7e8e9c66dd96b5c66d21">ECGROUPNORULES</a>,</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    ECGMOUNTFAIL,</div>
+<div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba2724c2f0af0d3e3cea66027f6bf2e436">   67</a></span>&#160;    <a class="code" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba2724c2f0af0d3e3cea66027f6bf2e436">ECGEOF</a> = 50023,</div>
+<div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55baf808b0e31be4bfbe8a21f800f913f9c0">   69</a></span>&#160;    <a class="code" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55baf808b0e31be4bfbe8a21f800f913f9c0">ECGCONFIGPARSEFAIL</a>,</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    ECGNAMESPACEPATHS,</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    ECGNAMESPACECONTROLLER,</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    ECGMOUNTNAMESPACE,</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;    ECGROUPUNSUPP,</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    ECGCANTSETVALUE,</div>
+<div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba94dbe90328ef8a212633ec464b9b9b11">   76</a></span>&#160;    <a class="code" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba94dbe90328ef8a212633ec464b9b9b11">ECGNONEMPTY</a>,</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;};</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160; </div>
+<div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="group__group__errors.html#ga515eba7218b187ffe263b7d9ecb3ac1b">   82</a></span>&#160;<span class="preprocessor">#define ECGRULESPARSEFAIL   ECGROUPPARSEFAIL</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160; </div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="group__group__errors.html#gaeae1d51db8528c89d84501c745020e6b">cgroup_strerror</a>(<span class="keywordtype">int</span> code);</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160; </div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__errors.html#ga29057c4aec05bef2b6bf2855ae5d5d46">cgroup_get_last_errno</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160; </div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;} <span class="comment">/* extern &quot;C&quot; */</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160; </div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* _LIBCGROUP_INIT_H */</span><span class="preprocessor"></span></div>
+<div class="ttc" id="agroup__group__errors_html_ga29057c4aec05bef2b6bf2855ae5d5d46"><div class="ttname"><a href="group__group__errors.html#ga29057c4aec05bef2b6bf2855ae5d5d46">cgroup_get_last_errno</a></div><div class="ttdeci">int cgroup_get_last_errno(void)</div><div class="ttdef"><b>Definition:</b> api.c:4389</div></div>
+<div class="ttc" id="agroup__group__errors_html_gaeae1d51db8528c89d84501c745020e6b"><div class="ttname"><a href="group__group__errors.html#gaeae1d51db8528c89d84501c745020e6b">cgroup_strerror</a></div><div class="ttdeci">const char * cgroup_strerror(int code)</div><div class="ttdef"><b>Definition:</b> api.c:4378</div></div>
+<div class="ttc" id="agroup__group__errors_html_gga06fc87d81c62e9abb8790b6e5713c55ba24a6584dd4238475a4e247bdf6956def"><div class="ttname"><a href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba24a6584dd4238475a4e247bdf6956def">ECGROUPMULTIMOUNTED</a></div><div class="ttdeci">@ ECGROUPMULTIMOUNTED</div><div class="ttdef"><b>Definition:</b> error.h:39</div></div>
+<div class="ttc" id="agroup__group__errors_html_gga06fc87d81c62e9abb8790b6e5713c55ba2724c2f0af0d3e3cea66027f6bf2e436"><div class="ttname"><a href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba2724c2f0af0d3e3cea66027f6bf2e436">ECGEOF</a></div><div class="ttdeci">@ ECGEOF</div><div class="ttdef"><b>Definition:</b> error.h:67</div></div>
+<div class="ttc" id="agroup__group__errors_html_gga06fc87d81c62e9abb8790b6e5713c55ba7c23c1a7cbfb7e8e9c66dd96b5c66d21"><div class="ttname"><a href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba7c23c1a7cbfb7e8e9c66dd96b5c66d21">ECGROUPNORULES</a></div><div class="ttdeci">@ ECGROUPNORULES</div><div class="ttdef"><b>Definition:</b> error.h:61</div></div>
+<div class="ttc" id="agroup__group__errors_html_gga06fc87d81c62e9abb8790b6e5713c55ba88111f9ca2e967cbf7565724444c0193"><div class="ttname"><a href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba88111f9ca2e967cbf7565724444c0193">ECGOTHER</a></div><div class="ttdeci">@ ECGOTHER</div><div class="ttdef"><b>Definition:</b> error.h:55</div></div>
+<div class="ttc" id="agroup__group__errors_html_gga06fc87d81c62e9abb8790b6e5713c55ba94dbe90328ef8a212633ec464b9b9b11"><div class="ttname"><a href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba94dbe90328ef8a212633ec464b9b9b11">ECGNONEMPTY</a></div><div class="ttdeci">@ ECGNONEMPTY</div><div class="ttdef"><b>Definition:</b> error.h:76</div></div>
+<div class="ttc" id="agroup__group__errors_html_gga06fc87d81c62e9abb8790b6e5713c55bac62bda67f3029c39ef456100008b1f39"><div class="ttname"><a href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55bac62bda67f3029c39ef456100008b1f39">ECGROUPPARSEFAIL</a></div><div class="ttdeci">@ ECGROUPPARSEFAIL</div><div class="ttdef"><b>Definition:</b> error.h:59</div></div>
+<div class="ttc" id="agroup__group__errors_html_gga06fc87d81c62e9abb8790b6e5713c55baf808b0e31be4bfbe8a21f800f913f9c0"><div class="ttname"><a href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55baf808b0e31be4bfbe8a21f800f913f9c0">ECGCONFIGPARSEFAIL</a></div><div class="ttdeci">@ ECGCONFIGPARSEFAIL</div><div class="ttdef"><b>Definition:</b> error.h:69</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/files.html b/files.html
new file mode 100644 (file)
index 0000000..d33daad
--- /dev/null
@@ -0,0 +1,94 @@
+<!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>libcgroup: File List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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 -->
+<!-- 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="headertitle">
+<div class="title">File List</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all documented files with brief descriptions:</div><div class="directory">
+<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span id="img_0_" class="iconfopen" onclick="toggleFolder('0_')">&#160;</span><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html" target="_self">include</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="toggleFolder('0_0_')">&#9660;</span><span id="img_0_0_" class="iconfopen" onclick="toggleFolder('0_0_')">&#160;</span><a class="el" href="dir_66a7763e2a9b96033a682558820d533e.html" target="_self">libcgroup</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="config_8h_source.html"><span class="icondoc"></span></a><b>config.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="error_8h_source.html"><span class="icondoc"></span></a><b>error.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="groups_8h_source.html"><span class="icondoc"></span></a><b>groups.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_3_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="init_8h_source.html"><span class="icondoc"></span></a><b>init.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_4_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="iterators_8h_source.html"><span class="icondoc"></span></a><b>iterators.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_5_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="log_8h_source.html"><span class="icondoc"></span></a><b>log.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_6_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="tasks_8h_source.html"><span class="icondoc"></span></a><b>tasks.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="libcgroup_8h_source.html"><span class="icondoc"></span></a><b>libcgroup.h</b></td><td class="desc"></td></tr>
+<tr id="row_1_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><span id="img_1_" class="iconfopen" onclick="toggleFolder('1_')">&#160;</span><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" target="_self">src</a></td><td class="desc"></td></tr>
+<tr id="row_1_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_1_0_" class="arrow" onclick="toggleFolder('1_0_')">&#9660;</span><span id="img_1_0_" class="iconfopen" onclick="toggleFolder('1_0_')">&#160;</span><a class="el" href="dir_2d094300ae4f2c55dd459b9ec7dd0ad3.html" target="_self">daemon</a></td><td class="desc"></td></tr>
+<tr id="row_1_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="cgrulesengd_8h_source.html"><span class="icondoc"></span></a><b>cgrulesengd.h</b></td><td class="desc"></td></tr>
+<tr id="row_1_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_1_1_" class="arrow" onclick="toggleFolder('1_1_')">&#9660;</span><span id="img_1_1_" class="iconfopen" onclick="toggleFolder('1_1_')">&#160;</span><a class="el" href="dir_1563a38af0d3a5e4a6330d6d45e9792a.html" target="_self">tools</a></td><td class="desc"></td></tr>
+<tr id="row_1_1_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="tools-common_8h_source.html"><span class="icondoc"></span></a><b>tools-common.h</b></td><td class="desc"></td></tr>
+<tr id="row_1_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="libcgroup-internal_8h_source.html"><span class="icondoc"></span></a><b>libcgroup-internal.h</b></td><td class="desc"></td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/folderclosed.png b/folderclosed.png
new file mode 100644 (file)
index 0000000..bb8ab35
Binary files /dev/null and b/folderclosed.png differ
diff --git a/folderopen.png b/folderopen.png
new file mode 100644 (file)
index 0000000..d6c7f67
Binary files /dev/null and b/folderopen.png differ
diff --git a/functions.html b/functions.html
new file mode 100644 (file)
index 0000000..2ba5fc7
--- /dev/null
@@ -0,0 +1,105 @@
+<!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>libcgroup: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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 -->
+<!-- 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="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div><ul>
+<li>depth
+: <a class="el" href="structcgroup__file__info.html#ad56dca35266f0f5f5c2666b946d72709">cgroup_file_info</a>
+</li>
+<li>enabled
+: <a class="el" href="structcontroller__data.html#a24be412cfb6c19f7a13a4bff9e55206e">controller_data</a>
+</li>
+<li>full_path
+: <a class="el" href="structcgroup__file__info.html#a4c61dc7f726ba0784ff8c71473dbc6e6">cgroup_file_info</a>
+</li>
+<li>hierarchy
+: <a class="el" href="structcontroller__data.html#a25e316f55473ca2b333b0d7e0ca644b4">controller_data</a>
+</li>
+<li>mount
+: <a class="el" href="structcg__mount__table__s.html#a9704fa3ec3674f6d433345ea52b6aeef">cg_mount_table_s</a>
+</li>
+<li>name
+: <a class="el" href="structcg__mount__table__s.html#aa9b2cc62fb6cb35334f3d85d660c9fa6">cg_mount_table_s</a>
+, <a class="el" href="structcgroup__mount__point.html#a849ccf1e77fffd5d45304c6adf0d2100">cgroup_mount_point</a>
+, <a class="el" href="structcontroller__data.html#a5474be4d8cc4553c94ca81c6a93f5a18">controller_data</a>
+</li>
+<li>num_cgroups
+: <a class="el" href="structcontroller__data.html#acd075c0bb48062bf720b68d0a30116eb">controller_data</a>
+</li>
+<li>parent
+: <a class="el" href="structcgroup__file__info.html#a739c7f87593e36d8589d3ffa80b57059">cgroup_file_info</a>
+</li>
+<li>path
+: <a class="el" href="structcgroup__file__info.html#a801424e68139c930e40ea24be4d96a68">cgroup_file_info</a>
+, <a class="el" href="structcgroup__mount__point.html#ad1e89dfc02cfd7341e2296086a4f251e">cgroup_mount_point</a>
+</li>
+<li>type
+: <a class="el" href="structcgroup__file__info.html#a955506601f440d05cb11e4ee6b455c55">cgroup_file_info</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/functions_vars.html b/functions_vars.html
new file mode 100644 (file)
index 0000000..8c856db
--- /dev/null
@@ -0,0 +1,105 @@
+<!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>libcgroup: Data Fields - Variables</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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 -->
+<!-- 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="contents">
+&#160;<ul>
+<li>depth
+: <a class="el" href="structcgroup__file__info.html#ad56dca35266f0f5f5c2666b946d72709">cgroup_file_info</a>
+</li>
+<li>enabled
+: <a class="el" href="structcontroller__data.html#a24be412cfb6c19f7a13a4bff9e55206e">controller_data</a>
+</li>
+<li>full_path
+: <a class="el" href="structcgroup__file__info.html#a4c61dc7f726ba0784ff8c71473dbc6e6">cgroup_file_info</a>
+</li>
+<li>hierarchy
+: <a class="el" href="structcontroller__data.html#a25e316f55473ca2b333b0d7e0ca644b4">controller_data</a>
+</li>
+<li>mount
+: <a class="el" href="structcg__mount__table__s.html#a9704fa3ec3674f6d433345ea52b6aeef">cg_mount_table_s</a>
+</li>
+<li>name
+: <a class="el" href="structcg__mount__table__s.html#aa9b2cc62fb6cb35334f3d85d660c9fa6">cg_mount_table_s</a>
+, <a class="el" href="structcgroup__mount__point.html#a849ccf1e77fffd5d45304c6adf0d2100">cgroup_mount_point</a>
+, <a class="el" href="structcontroller__data.html#a5474be4d8cc4553c94ca81c6a93f5a18">controller_data</a>
+</li>
+<li>num_cgroups
+: <a class="el" href="structcontroller__data.html#acd075c0bb48062bf720b68d0a30116eb">controller_data</a>
+</li>
+<li>parent
+: <a class="el" href="structcgroup__file__info.html#a739c7f87593e36d8589d3ffa80b57059">cgroup_file_info</a>
+</li>
+<li>path
+: <a class="el" href="structcgroup__file__info.html#a801424e68139c930e40ea24be4d96a68">cgroup_file_info</a>
+, <a class="el" href="structcgroup__mount__point.html#ad1e89dfc02cfd7341e2296086a4f251e">cgroup_mount_point</a>
+</li>
+<li>type
+: <a class="el" href="structcgroup__file__info.html#a955506601f440d05cb11e4ee6b455c55">cgroup_file_info</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/group__group__config.html b/group__group__config.html
new file mode 100644 (file)
index 0000000..bcade42
--- /dev/null
@@ -0,0 +1,342 @@
+<!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>libcgroup: 5. Configuration</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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 -->
+<!-- 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="headertitle">
+<div class="title">5. Configuration</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader">Configuration file</h2></td></tr>
+<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp0e02ce690a683c3ba45b7ef59ad72acd"></a><code>libcgroup</code> can mount and create control groups and set their parameters as specified in a configuration file.</p>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000001">Todo:</a></b></dt><dd>add this description?: These functions are mostly intended to be used by internal <code>libcgroup</code> tools, however they are fully supported and applications can benefit from them. </dd></dl>
+</td></tr>
+<tr class="memitem:ga8adfaca013333acf922a167f55b84140"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__config.html#ga8adfaca013333acf922a167f55b84140">cgroup_config_load_config</a> (const char *pathname)</td></tr>
+<tr class="separator:ga8adfaca013333acf922a167f55b84140"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga85b285712354faca495193075035938d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__config.html#ga85b285712354faca495193075035938d">cgroup_unload_cgroups</a> (void)</td></tr>
+<tr class="separator:ga85b285712354faca495193075035938d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaff77affa0b80ccf507b4b46cc0a8c085"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__config.html#gaff77affa0b80ccf507b4b46cc0a8c085">cgroup_config_unload_config</a> (const char *pathname, int flags)</td></tr>
+<tr class="separator:gaff77affa0b80ccf507b4b46cc0a8c085"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2d3a252b2c0c61c8f64cb1fc41e370ea"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__config.html#ga2d3a252b2c0c61c8f64cb1fc41e370ea">cgroup_config_set_default</a> (struct <a class="el" href="structcgroup.html">cgroup</a> *new_default)</td></tr>
+<tr class="separator:ga2d3a252b2c0c61c8f64cb1fc41e370ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6f8c41bb920565e674787fe6dabaef00"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__config.html#ga6f8c41bb920565e674787fe6dabaef00">cgroup_init_templates_cache</a> (char *pathname)</td></tr>
+<tr class="separator:ga6f8c41bb920565e674787fe6dabaef00"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga89fe0d7943b29cc10d57b07abcdfa7b5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__config.html#ga89fe0d7943b29cc10d57b07abcdfa7b5">cgroup_reload_cached_templates</a> (char *pathname)</td></tr>
+<tr class="separator:ga89fe0d7943b29cc10d57b07abcdfa7b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga924860998c37da53cababe24163fc89b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__config.html#ga924860998c37da53cababe24163fc89b">cgroup_load_templates_cache_from_files</a> (int *file_index)</td></tr>
+<tr class="separator:ga924860998c37da53cababe24163fc89b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gacb09024dc469a1a1ff8cdebd8d0ab422"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__config.html#gacb09024dc469a1a1ff8cdebd8d0ab422">cgroup_templates_cache_set_source_files</a> (struct <a class="el" href="structcgroup__string__list.html">cgroup_string_list</a> *tmpl_files)</td></tr>
+<tr class="separator:gacb09024dc469a1a1ff8cdebd8d0ab422"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga72066260cd31ceed7ecc1a648eba37f2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__config.html#ga72066260cd31ceed7ecc1a648eba37f2">cgroup_config_create_template_group</a> (struct <a class="el" href="structcgroup.html">cgroup</a> *<a class="el" href="structcgroup.html">cgroup</a>, char *template_name, int flags)</td></tr>
+<tr class="separator:ga72066260cd31ceed7ecc1a648eba37f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="ga72066260cd31ceed7ecc1a648eba37f2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga72066260cd31ceed7ecc1a648eba37f2">&#9670;&nbsp;</a></span>cgroup_config_create_template_group()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_config_create_template_group </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup.html">cgroup</a> *&#160;</td>
+          <td class="paramname"><em>cgroup</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&#160;</td>
+          <td class="paramname"><em>template_name</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>flags</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Physically create a new control group in kernel, based on given control group template and configuration file. If given template is not set in configuration file, then the procedure works create the control group using <a class="el" href="group__group__groups.html#gadb8e13df6064841d3c9707960f782fa7">cgroup_create_cgroup()</a> function</p>
+<p>Templates are loaded using cgroup_load_templates_cache_from_files function, which must be preceded by cgroup_templates_cache_set_source_files call.</p>
+<p>The flags can alter the behavior of this function: CGFLAG_USE_TEMPLATE_CACHE: Use cached templates instead of parsing the config file</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">pathname</td><td>Name of the configuration file with template definitions </td></tr>
+    <tr><td class="paramname">cgroup</td><td>Wanted control group - contains substitute name and wanted controllers. </td></tr>
+    <tr><td class="paramname">template_name</td><td>Template name used for cgroup setting </td></tr>
+    <tr><td class="paramname">flags</td><td>Bit flags to change the behavior </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga8adfaca013333acf922a167f55b84140"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga8adfaca013333acf922a167f55b84140">&#9670;&nbsp;</a></span>cgroup_config_load_config()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_config_load_config </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>pathname</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Load configuration file and mount and create control groups described there. See cgconfig.conf man page for format of the file. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">pathname</td><td>Name of the configuration file to load. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga2d3a252b2c0c61c8f64cb1fc41e370ea"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga2d3a252b2c0c61c8f64cb1fc41e370ea">&#9670;&nbsp;</a></span>cgroup_config_set_default()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_config_set_default </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup.html">cgroup</a> *&#160;</td>
+          <td class="paramname"><em>new_default</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Sets default permissions of groups created by subsequent <a class="el" href="group__group__config.html#ga8adfaca013333acf922a167f55b84140">cgroup_config_load_config()</a> calls. If a config file contains a 'default {}' section, the default permissions from the config file is then used.</p>
+<p>Use <a class="el" href="group__group__groups.html#ga6cd4733e5982ac2c92ee3cb3dbd10a31">cgroup_new_cgroup()</a> to create a dummy group and <a class="el" href="group__group__groups.html#ga53b9e13e30660c805ab5773d69397a43">cgroup_set_uid_gid()</a> and <a class="el" href="group__group__groups.html#gaa0400f1ff2fba7fbb6db82d97039d92b">cgroup_set_permissions()</a> to set its permissions. Use NO_UID_GID instead of GID/UID and NO_PERMS instead of file/directory permissions to let kernel decide the default permissions where you don't want specific user and/or permissions. Kernel then uses current user/group and permissions from umask then.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">new_default</td><td>New default permissions from this group are copied to libcgroup internal structures. I.e., this group can be freed immediatelly after this function returns. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="gaff77affa0b80ccf507b4b46cc0a8c085"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaff77affa0b80ccf507b4b46cc0a8c085">&#9670;&nbsp;</a></span>cgroup_config_unload_config()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_config_unload_config </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>pathname</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>flags</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Delete all cgroups and unmount all mount points defined in specified config file.</p>
+<p>The groups are either removed recursively or only the empty ones, based on given flags. Mount point are always umounted only if they are empty, regardless of any flags.</p>
+<p>The groups are sorted before they are removed, so the removal of empty ones actually works (i.e. subgroups are removed first).</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">pathname</td><td>Name of the configuration file to unload. </td></tr>
+    <tr><td class="paramname">flags</td><td>Combination of CGFLAG_DELETE_* flags, which indicate what and how to delete. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga6f8c41bb920565e674787fe6dabaef00"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga6f8c41bb920565e674787fe6dabaef00">&#9670;&nbsp;</a></span>cgroup_init_templates_cache()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_init_templates_cache </td>
+          <td>(</td>
+          <td class="paramtype">char *&#160;</td>
+          <td class="paramname"><em>pathname</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Initializes the templates cache and load it from file pathname.</p>
+<p>Initializes the templates cache. </p><dl class="section return"><dt>Returns</dt><dd>0 on success, &gt; 0 on error </dd></dl>
+
+</div>
+</div>
+<a id="ga924860998c37da53cababe24163fc89b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga924860998c37da53cababe24163fc89b">&#9670;&nbsp;</a></span>cgroup_load_templates_cache_from_files()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_load_templates_cache_from_files </td>
+          <td>(</td>
+          <td class="paramtype">int *&#160;</td>
+          <td class="paramname"><em>file_index</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Load the templates cache from files. Before calling this function, cgroup_templates_cache_set_source_files has to be called first. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">file_index</td><td>index of file which was unable to be parsed </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 on success, &gt; 0 on error </dd></dl>
+
+</div>
+</div>
+<a id="ga89fe0d7943b29cc10d57b07abcdfa7b5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga89fe0d7943b29cc10d57b07abcdfa7b5">&#9670;&nbsp;</a></span>cgroup_reload_cached_templates()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_reload_cached_templates </td>
+          <td>(</td>
+          <td class="paramtype">char *&#160;</td>
+          <td class="paramname"><em>pathname</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Reloads the templates list from file pathname.</p>
+<p>Reloads the templates list, using the given configuration file. </p><dl class="section return"><dt>Returns</dt><dd>0 on success, &gt; 0 on failure </dd></dl>
+
+</div>
+</div>
+<a id="gacb09024dc469a1a1ff8cdebd8d0ab422"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gacb09024dc469a1a1ff8cdebd8d0ab422">&#9670;&nbsp;</a></span>cgroup_templates_cache_set_source_files()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void cgroup_templates_cache_set_source_files </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup__string__list.html">cgroup_string_list</a> *&#160;</td>
+          <td class="paramname"><em>tmpl_files</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Setting source files of templates. This function has to be called before any call of cgroup_load_templates_cache_from_files. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">tmpl_files</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga85b285712354faca495193075035938d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga85b285712354faca495193075035938d">&#9670;&nbsp;</a></span>cgroup_unload_cgroups()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_unload_cgroups </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Delete all control groups and unmount all hierarchies. </p>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/group__group__errors.html b/group__group__errors.html
new file mode 100644 (file)
index 0000000..f14b75d
--- /dev/null
@@ -0,0 +1,219 @@
+<!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>libcgroup: 6. Error handling</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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 -->
+<!-- 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="headertitle">
+<div class="title">6. Error handling</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader">Error handling</h2></td></tr>
+<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrpaf042bafd560f7bd09b37efa40772311"></a>Unless states otherwise in documentation of a function, all functions return <code>int</code>, which is zero (0) when the function succeeds, and positive number if the function fails.</p>
+<p>The returned integer is one of the ECG* values described below. Value <a class="el" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba88111f9ca2e967cbf7565724444c0193">ECGOTHER</a> means that the error was caused by underlying OS and the real cause can be found by calling <a class="el" href="group__group__errors.html#ga29057c4aec05bef2b6bf2855ae5d5d46">cgroup_get_last_errno()</a>. </p>
+</td></tr>
+<tr class="memitem:ga06fc87d81c62e9abb8790b6e5713c55b"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <br />
+&#160;&#160;<b>ECGROUPNOTCOMPILED</b> = 50000
+, <b>ECGROUPNOTMOUNTED</b>
+, <b>ECGROUPNOTEXIST</b>
+, <b>ECGROUPNOTCREATED</b>
+, <br />
+&#160;&#160;<b>ECGROUPSUBSYSNOTMOUNTED</b>
+, <b>ECGROUPNOTOWNER</b>
+, <a class="el" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba24a6584dd4238475a4e247bdf6956def">ECGROUPMULTIMOUNTED</a>
+, <b>ECGROUPNOTALLOWED</b>
+, <br />
+&#160;&#160;<b>ECGMAXVALUESEXCEEDED</b>
+, <b>ECGCONTROLLEREXISTS</b>
+, <b>ECGVALUEEXISTS</b>
+, <b>ECGINVAL</b>
+, <br />
+&#160;&#160;<b>ECGCONTROLLERCREATEFAILED</b>
+, <b>ECGFAIL</b>
+, <b>ECGROUPNOTINITIALIZED</b>
+, <b>ECGROUPVALUENOTEXIST</b>
+, <br />
+&#160;&#160;<a class="el" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba88111f9ca2e967cbf7565724444c0193">ECGOTHER</a>
+, <b>ECGROUPNOTEQUAL</b>
+, <b>ECGCONTROLLERNOTEQUAL</b>
+, <a class="el" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55bac62bda67f3029c39ef456100008b1f39">ECGROUPPARSEFAIL</a>
+, <br />
+&#160;&#160;<a class="el" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba7c23c1a7cbfb7e8e9c66dd96b5c66d21">ECGROUPNORULES</a>
+, <b>ECGMOUNTFAIL</b>
+, <a class="el" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba2724c2f0af0d3e3cea66027f6bf2e436">ECGEOF</a> = 50023
+, <a class="el" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55baf808b0e31be4bfbe8a21f800f913f9c0">ECGCONFIGPARSEFAIL</a>
+, <br />
+&#160;&#160;<b>ECGNAMESPACEPATHS</b>
+, <b>ECGNAMESPACECONTROLLER</b>
+, <b>ECGMOUNTNAMESPACE</b>
+, <b>ECGROUPUNSUPP</b>
+, <br />
+&#160;&#160;<b>ECGCANTSETVALUE</b>
+, <a class="el" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba94dbe90328ef8a212633ec464b9b9b11">ECGNONEMPTY</a>
+<br />
+ }</td></tr>
+<tr class="separator:ga06fc87d81c62e9abb8790b6e5713c55b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaeae1d51db8528c89d84501c745020e6b"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__errors.html#gaeae1d51db8528c89d84501c745020e6b">cgroup_strerror</a> (int code)</td></tr>
+<tr class="separator:gaeae1d51db8528c89d84501c745020e6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga29057c4aec05bef2b6bf2855ae5d5d46"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__errors.html#ga29057c4aec05bef2b6bf2855ae5d5d46">cgroup_get_last_errno</a> (void)</td></tr>
+<tr class="separator:ga29057c4aec05bef2b6bf2855ae5d5d46"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga515eba7218b187ffe263b7d9ecb3ac1b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__errors.html#ga515eba7218b187ffe263b7d9ecb3ac1b">ECGRULESPARSEFAIL</a>&#160;&#160;&#160;<a class="el" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55bac62bda67f3029c39ef456100008b1f39">ECGROUPPARSEFAIL</a></td></tr>
+<tr class="separator:ga515eba7218b187ffe263b7d9ecb3ac1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="ga515eba7218b187ffe263b7d9ecb3ac1b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga515eba7218b187ffe263b7d9ecb3ac1b">&#9670;&nbsp;</a></span>ECGRULESPARSEFAIL</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define ECGRULESPARSEFAIL&#160;&#160;&#160;<a class="el" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55bac62bda67f3029c39ef456100008b1f39">ECGROUPPARSEFAIL</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Legacy definition of ECGRULESPARSEFAIL error code. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Enumeration Type Documentation</h2>
+<a id="ga06fc87d81c62e9abb8790b6e5713c55b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga06fc87d81c62e9abb8790b6e5713c55b">&#9670;&nbsp;</a></span>anonymous enum</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">anonymous enum</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga06fc87d81c62e9abb8790b6e5713c55ba24a6584dd4238475a4e247bdf6956def"></a>ECGROUPMULTIMOUNTED&#160;</td><td class="fielddoc"><p>Controllers bound to different mount points </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga06fc87d81c62e9abb8790b6e5713c55ba88111f9ca2e967cbf7565724444c0193"></a>ECGOTHER&#160;</td><td class="fielddoc"><p>Represents error coming from other libraries like glibc. <code>libcgroup</code> users need to check <a class="el" href="group__group__errors.html#ga29057c4aec05bef2b6bf2855ae5d5d46">cgroup_get_last_errno()</a> upon encountering this error. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga06fc87d81c62e9abb8790b6e5713c55bac62bda67f3029c39ef456100008b1f39"></a>ECGROUPPARSEFAIL&#160;</td><td class="fielddoc"><p>Failed to parse rules configuration file. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga06fc87d81c62e9abb8790b6e5713c55ba7c23c1a7cbfb7e8e9c66dd96b5c66d21"></a>ECGROUPNORULES&#160;</td><td class="fielddoc"><p>Rules list does not exist. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga06fc87d81c62e9abb8790b6e5713c55ba2724c2f0af0d3e3cea66027f6bf2e436"></a>ECGEOF&#160;</td><td class="fielddoc"><p>Not an real error, it just indicates that iterator has come to end of sequence and no more items are left. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga06fc87d81c62e9abb8790b6e5713c55baf808b0e31be4bfbe8a21f800f913f9c0"></a>ECGCONFIGPARSEFAIL&#160;</td><td class="fielddoc"><p>Failed to parse config file (cgconfig.conf). </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga06fc87d81c62e9abb8790b6e5713c55ba94dbe90328ef8a212633ec464b9b9b11"></a>ECGNONEMPTY&#160;</td><td class="fielddoc"><p>Removing of a group failed because it was not empty. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="ga29057c4aec05bef2b6bf2855ae5d5d46"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga29057c4aec05bef2b6bf2855ae5d5d46">&#9670;&nbsp;</a></span>cgroup_get_last_errno()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_get_last_errno </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Return last errno, which caused ECGOTHER error. </p>
+
+</div>
+</div>
+<a id="gaeae1d51db8528c89d84501c745020e6b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaeae1d51db8528c89d84501c745020e6b">&#9670;&nbsp;</a></span>cgroup_strerror()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* cgroup_strerror </td>
+          <td>(</td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>code</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Format error code to a human-readable English string. No internationalization is currently done. Returned pointer leads to <code>libcgroup</code> memory and must not be freed nor modified. The memory is rewritten by subsequent call to this function. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">code</td><td>Error code for which the corresponding error string is returned. When <a class="el" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba88111f9ca2e967cbf7565724444c0193">ECGOTHER</a> is used, text with glibc's description of <a class="el" href="group__group__errors.html#ga29057c4aec05bef2b6bf2855ae5d5d46">cgroup_get_last_errno()</a> value is returned. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/group__group__groups.html b/group__group__groups.html
new file mode 100644 (file)
index 0000000..6ca0eb5
--- /dev/null
@@ -0,0 +1,1611 @@
+<!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>libcgroup: 2. Group manipulation API</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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 -->
+<!-- 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>  </div>
+  <div class="headertitle">
+<div class="title">2. Group manipulation API</div>  </div>
+</div><!--header-->
+<div class="contents">
+<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">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcgroup.html">cgroup</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcgroup__controller.html">cgroup_controller</a></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">Basic infrastructure</h2></td></tr>
+<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp8b151c1f58f3f15039d7fd770cc3dab8"></a><code>struct cgroup*</code> is the heart of <code>libcgroup</code> API. The structure is opaque to applications, all access to the structure is through appropriate functions.</p>
+<p>The most important information is that <b> one <code>struct cgroup*</code> can represent zero, one or more real control groups in kernel</b>. The <code>struct cgroup*</code> is identified by name of the group, which must be set by <a class="el" href="group__group__groups.html#ga6cd4733e5982ac2c92ee3cb3dbd10a31">cgroup_new_cgroup()</a>. Multiple controllers (aka subsystems) can be attached to one <code>struct cgroup*</code> using <a class="el" href="group__group__groups.html#gaa2f9c2ac75fd7e56e5ec6fb970304130">cgroup_add_controller()</a>. These controllers <b>can belong to different hierarchies</b>.</p>
+<p>This approach is different to the one in the Linux kernel - a control group must be part of exactly one hierarchy there. In <code>libcgroup</code>, a group can be part of multiple hierarchies, as long as the group name is the same.</p>
+<dl class="section user"><dt>Example:</dt><dd>Let there be following control groups: <div class="fragment"><div class="line">cpu,cpuacct:/</div>
+<div class="line">cpu,cpuacct:/foo</div>
+<div class="line">cpu,cpuacct:/bar</div>
+<div class="line">freezer:/</div>
+<div class="line">freezer:/foo</div>
+</div><!-- fragment --> I.e. there is <code>cpu</code> and <code>cpuacct</code> controller mounted together in one hierarchy, with <code>foo</code> and <code>bar</code> groups. In addition, <code>freezer</code> is mounted as separate hierarchy, with only one <code>foo</code> group.</dd></dl>
+<dl class="section user"><dt></dt><dd>Following code creates <code>struct cgroup*</code> structure, which represents one group <code>cpu,cpuacct:/foo</code>: <div class="fragment"><div class="line"><span class="keyword">struct </span><a class="code" href="structcgroup.html">cgroup</a> *foo = <a class="code" href="group__group__groups.html#ga6cd4733e5982ac2c92ee3cb3dbd10a31">cgroup_new_cgroup</a>(<span class="stringliteral">&quot;foo&quot;</span>);</div>
+<div class="line"><a class="code" href="group__group__groups.html#gaa2f9c2ac75fd7e56e5ec6fb970304130">cgroup_add_controller</a>(foo, <span class="stringliteral">&quot;cpu&quot;</span>);</div>
+<div class="ttc" id="agroup__group__groups_html_ga6cd4733e5982ac2c92ee3cb3dbd10a31"><div class="ttname"><a href="group__group__groups.html#ga6cd4733e5982ac2c92ee3cb3dbd10a31">cgroup_new_cgroup</a></div><div class="ttdeci">struct cgroup * cgroup_new_cgroup(const char *name)</div><div class="ttdef"><b>Definition:</b> wrapper.c:44</div></div>
+<div class="ttc" id="agroup__group__groups_html_gaa2f9c2ac75fd7e56e5ec6fb970304130"><div class="ttname"><a href="group__group__groups.html#gaa2f9c2ac75fd7e56e5ec6fb970304130">cgroup_add_controller</a></div><div class="ttdeci">struct cgroup_controller * cgroup_add_controller(struct cgroup *cgroup, const char *name)</div><div class="ttdef"><b>Definition:</b> wrapper.c:56</div></div>
+<div class="ttc" id="astructcgroup_html"><div class="ttname"><a href="structcgroup.html">cgroup</a></div><div class="ttdef"><b>Definition:</b> libcgroup-internal.h:106</div></div>
+</div><!-- fragment --> Now, you can call e.g. <a class="el" href="group__group__groups.html#ga1dca18434e5d6be30c28c556da94f565">cgroup_delete_cgroup()</a> and the group is deleted from the hierarchy. You can note that it's enough to add only one controller to the group to fully identify a group in <code>cpu,cpuacct</code> hierarchy.</dd></dl>
+<dl class="section user"><dt></dt><dd>Following code creates <code>struct cgroup*</code> structure, which represents <b>two</b> groups, <code>cpu,cpuacct:/foo</code> and <code>freezer:/foo</code>: <div class="fragment"><div class="line"><span class="keyword">struct </span><a class="code" href="structcgroup.html">cgroup</a> *foo = <a class="code" href="group__group__groups.html#ga6cd4733e5982ac2c92ee3cb3dbd10a31">cgroup_new_cgroup</a>(<span class="stringliteral">&quot;foo&quot;</span>);</div>
+<div class="line"><a class="code" href="group__group__groups.html#gaa2f9c2ac75fd7e56e5ec6fb970304130">cgroup_add_controller</a>(foo, <span class="stringliteral">&quot;cpu&quot;</span>);</div>
+<div class="line"><a class="code" href="group__group__groups.html#gaa2f9c2ac75fd7e56e5ec6fb970304130">cgroup_add_controller</a>(foo, <span class="stringliteral">&quot;freezer&quot;</span>);</div>
+</div><!-- fragment --> Now, if you call e.g. <a class="el" href="group__group__groups.html#ga1dca18434e5d6be30c28c556da94f565">cgroup_delete_cgroup()</a>, the group gets deleted from <b>both</b> hierarchies.</dd></dl>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000002">Todo:</a></b></dt><dd>add some propaganda what's so great on this approach... I personally think it is broken and confusing (see TODOs below).</dd></dl>
+<p>Following functions are provided to create/destroy various libcgroup structures. Please note that none of these functions actually create or delete a cgroup in kernel! </p>
+</td></tr>
+<tr class="memitem:ga6cd4733e5982ac2c92ee3cb3dbd10a31"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structcgroup.html">cgroup</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#ga6cd4733e5982ac2c92ee3cb3dbd10a31">cgroup_new_cgroup</a> (const char *name)</td></tr>
+<tr class="separator:ga6cd4733e5982ac2c92ee3cb3dbd10a31"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa2f9c2ac75fd7e56e5ec6fb970304130"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#gaa2f9c2ac75fd7e56e5ec6fb970304130">cgroup_add_controller</a> (struct <a class="el" href="structcgroup.html">cgroup</a> *<a class="el" href="structcgroup.html">cgroup</a>, const char *name)</td></tr>
+<tr class="separator:gaa2f9c2ac75fd7e56e5ec6fb970304130"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae870d271b789b5c54c2e3d35de3cd6f9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#gae870d271b789b5c54c2e3d35de3cd6f9">cgroup_add_all_controllers</a> (struct <a class="el" href="structcgroup.html">cgroup</a> *<a class="el" href="structcgroup.html">cgroup</a>)</td></tr>
+<tr class="separator:gae870d271b789b5c54c2e3d35de3cd6f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8335b0aec59c8f845639a7404affce05"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#ga8335b0aec59c8f845639a7404affce05">cgroup_get_controller</a> (struct <a class="el" href="structcgroup.html">cgroup</a> *<a class="el" href="structcgroup.html">cgroup</a>, const char *name)</td></tr>
+<tr class="separator:ga8335b0aec59c8f845639a7404affce05"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab20fdb1ae479f8baac482336abf73900"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#gab20fdb1ae479f8baac482336abf73900">cgroup_free</a> (struct <a class="el" href="structcgroup.html">cgroup</a> **<a class="el" href="structcgroup.html">cgroup</a>)</td></tr>
+<tr class="separator:gab20fdb1ae479f8baac482336abf73900"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga92d27c9ff0d655838642a7aa68497596"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#ga92d27c9ff0d655838642a7aa68497596">cgroup_free_controllers</a> (struct <a class="el" href="structcgroup.html">cgroup</a> *<a class="el" href="structcgroup.html">cgroup</a>)</td></tr>
+<tr class="separator:ga92d27c9ff0d655838642a7aa68497596"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad4ffad2eccf9fcbfa8a551e269e0ad58"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#gad4ffad2eccf9fcbfa8a551e269e0ad58">NO_PERMS</a>&#160;&#160;&#160;(-1U)</td></tr>
+<tr class="separator:gad4ffad2eccf9fcbfa8a551e269e0ad58"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2a7954a987e3fbf8eabcc94cf381353e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#ga2a7954a987e3fbf8eabcc94cf381353e">NO_UID_GID</a>&#160;&#160;&#160;(-1U)</td></tr>
+<tr class="separator:ga2a7954a987e3fbf8eabcc94cf381353e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader">Group manipulation API</h2></td></tr>
+<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp6b4054463bf55b809b07532413f393be"></a>Using following functions you can create and remove control groups and change their parameters. </p><dl class="section note"><dt>Note</dt><dd>All access to kernel is through previously mounted cgroup filesystems. <code>libcgroup</code> does not mount/unmount anything for you. </dd></dl>
+</td></tr>
+<tr class="memitem:gadb8e13df6064841d3c9707960f782fa7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#gadb8e13df6064841d3c9707960f782fa7">cgroup_create_cgroup</a> (struct <a class="el" href="structcgroup.html">cgroup</a> *<a class="el" href="structcgroup.html">cgroup</a>, int ignore_ownership)</td></tr>
+<tr class="separator:gadb8e13df6064841d3c9707960f782fa7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga90e1ce96f3cb540f7e82d076dd938f62"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#ga90e1ce96f3cb540f7e82d076dd938f62">cgroup_create_cgroup_from_parent</a> (struct <a class="el" href="structcgroup.html">cgroup</a> *<a class="el" href="structcgroup.html">cgroup</a>, int ignore_ownership)</td></tr>
+<tr class="separator:ga90e1ce96f3cb540f7e82d076dd938f62"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga31ba5e865ae8d58b4453c0ef06d2c071"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#ga31ba5e865ae8d58b4453c0ef06d2c071">cgroup_modify_cgroup</a> (struct <a class="el" href="structcgroup.html">cgroup</a> *<a class="el" href="structcgroup.html">cgroup</a>)</td></tr>
+<tr class="separator:ga31ba5e865ae8d58b4453c0ef06d2c071"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1dca18434e5d6be30c28c556da94f565"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#ga1dca18434e5d6be30c28c556da94f565">cgroup_delete_cgroup</a> (struct <a class="el" href="structcgroup.html">cgroup</a> *<a class="el" href="structcgroup.html">cgroup</a>, int ignore_migration)</td></tr>
+<tr class="separator:ga1dca18434e5d6be30c28c556da94f565"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga860c1ec70189c969b2c8373fc1e96d36"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#ga860c1ec70189c969b2c8373fc1e96d36">cgroup_delete_cgroup_ext</a> (struct <a class="el" href="structcgroup.html">cgroup</a> *<a class="el" href="structcgroup.html">cgroup</a>, int flags)</td></tr>
+<tr class="separator:ga860c1ec70189c969b2c8373fc1e96d36"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader">Other functions</h2></td></tr>
+<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrpb175402ebe89f00c62233c5453c5a243"></a>Helper functions to manipulate with control groups. </p>
+</td></tr>
+<tr class="memitem:gad4ba31fe5a8bba63b33b1ea339b849e6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#gad4ba31fe5a8bba63b33b1ea339b849e6">cgroup_get_cgroup</a> (struct <a class="el" href="structcgroup.html">cgroup</a> *<a class="el" href="structcgroup.html">cgroup</a>)</td></tr>
+<tr class="separator:gad4ba31fe5a8bba63b33b1ea339b849e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa981a95e0917d3167601a4c1b392336a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#gaa981a95e0917d3167601a4c1b392336a">cgroup_copy_cgroup</a> (struct <a class="el" href="structcgroup.html">cgroup</a> *dst, struct <a class="el" href="structcgroup.html">cgroup</a> *src)</td></tr>
+<tr class="separator:gaa981a95e0917d3167601a4c1b392336a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga86898b59e50335f99fe84a11fa38d3fc"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#ga86898b59e50335f99fe84a11fa38d3fc">cgroup_compare_cgroup</a> (struct <a class="el" href="structcgroup.html">cgroup</a> *cgroup_a, struct <a class="el" href="structcgroup.html">cgroup</a> *cgroup_b)</td></tr>
+<tr class="separator:ga86898b59e50335f99fe84a11fa38d3fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab1725c50c49cec4b0bdad1f26b150ca7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#gab1725c50c49cec4b0bdad1f26b150ca7">cgroup_compare_controllers</a> (struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *cgca, struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *cgcb)</td></tr>
+<tr class="separator:gab1725c50c49cec4b0bdad1f26b150ca7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga53b9e13e30660c805ab5773d69397a43"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#ga53b9e13e30660c805ab5773d69397a43">cgroup_set_uid_gid</a> (struct <a class="el" href="structcgroup.html">cgroup</a> *<a class="el" href="structcgroup.html">cgroup</a>, uid_t tasks_uid, gid_t tasks_gid, uid_t control_uid, gid_t control_gid)</td></tr>
+<tr class="separator:ga53b9e13e30660c805ab5773d69397a43"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga007d21c304d9cc6e948dc0ae51ecfa86"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#ga007d21c304d9cc6e948dc0ae51ecfa86">cgroup_get_uid_gid</a> (struct <a class="el" href="structcgroup.html">cgroup</a> *<a class="el" href="structcgroup.html">cgroup</a>, uid_t *tasks_uid, gid_t *tasks_gid, uid_t *control_uid, gid_t *control_gid)</td></tr>
+<tr class="separator:ga007d21c304d9cc6e948dc0ae51ecfa86"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa0400f1ff2fba7fbb6db82d97039d92b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#gaa0400f1ff2fba7fbb6db82d97039d92b">cgroup_set_permissions</a> (struct <a class="el" href="structcgroup.html">cgroup</a> *<a class="el" href="structcgroup.html">cgroup</a>, mode_t control_dperm, mode_t control_fperm, mode_t task_fperm)</td></tr>
+<tr class="separator:gaa0400f1ff2fba7fbb6db82d97039d92b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader">Group parameters</h2></td></tr>
+<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrpfd51c673001c3ce3c69cbaad587df3af"></a>These are functions can read or modify parameter of a group. </p><dl class="section note"><dt>Note</dt><dd>All these functions read/write parameters to <code>libcgorup</code> internal structures. Use <a class="el" href="group__group__groups.html#gad4ba31fe5a8bba63b33b1ea339b849e6">cgroup_get_cgroup()</a> to load parameters from kernel to these internal structures and <a class="el" href="group__group__groups.html#ga31ba5e865ae8d58b4453c0ef06d2c071">cgroup_modify_cgroup()</a> or <a class="el" href="group__group__groups.html#gadb8e13df6064841d3c9707960f782fa7">cgroup_create_cgroup()</a> to write changes to kernel. </dd></dl>
+</td></tr>
+<tr class="memitem:ga4817c68ab791c09c07b663c29b3fb029"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#ga4817c68ab791c09c07b663c29b3fb029">cgroup_add_value_string</a> (struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *controller, const char *name, const char *value)</td></tr>
+<tr class="separator:ga4817c68ab791c09c07b663c29b3fb029"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6c973bb5ce99e7a91def2032f23d7087"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#ga6c973bb5ce99e7a91def2032f23d7087">cgroup_add_value_int64</a> (struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *controller, const char *name, int64_t value)</td></tr>
+<tr class="separator:ga6c973bb5ce99e7a91def2032f23d7087"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad9d2216205b96278c626122f8d5e63bb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#gad9d2216205b96278c626122f8d5e63bb">cgroup_add_value_uint64</a> (struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *controller, const char *name, u_int64_t value)</td></tr>
+<tr class="separator:gad9d2216205b96278c626122f8d5e63bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4b191a600f84b00ea7afd12c01d918f3"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#ga4b191a600f84b00ea7afd12c01d918f3">cgroup_add_value_bool</a> (struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *controller, const char *name, bool value)</td></tr>
+<tr class="separator:ga4b191a600f84b00ea7afd12c01d918f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafaa51e5ffe09f8ad05585a1d3b6f7fa9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#gafaa51e5ffe09f8ad05585a1d3b6f7fa9">cgroup_get_value_string</a> (struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *controller, const char *name, char **value)</td></tr>
+<tr class="separator:gafaa51e5ffe09f8ad05585a1d3b6f7fa9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0fe9b05f26b3cab21fc446c9a2700526"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#ga0fe9b05f26b3cab21fc446c9a2700526">cgroup_get_value_int64</a> (struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *controller, const char *name, int64_t *value)</td></tr>
+<tr class="separator:ga0fe9b05f26b3cab21fc446c9a2700526"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga951861259c0373895bfb637fce337312"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#ga951861259c0373895bfb637fce337312">cgroup_get_value_uint64</a> (struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *controller, const char *name, u_int64_t *value)</td></tr>
+<tr class="separator:ga951861259c0373895bfb637fce337312"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab95007148eac89b7e935d93a4524787b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#gab95007148eac89b7e935d93a4524787b">cgroup_get_value_bool</a> (struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *controller, const char *name, bool *value)</td></tr>
+<tr class="separator:gab95007148eac89b7e935d93a4524787b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga938febc02b59cbeb8e4ceb2dc7fdac82"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#ga938febc02b59cbeb8e4ceb2dc7fdac82">cgroup_set_value_string</a> (struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *controller, const char *name, const char *value)</td></tr>
+<tr class="separator:ga938febc02b59cbeb8e4ceb2dc7fdac82"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa5c39e51035cc43dd26a3c620441a956"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#gaa5c39e51035cc43dd26a3c620441a956">cgroup_set_value_int64</a> (struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *controller, const char *name, int64_t value)</td></tr>
+<tr class="separator:gaa5c39e51035cc43dd26a3c620441a956"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gade01aa1fe30ccc968af9fe8a3bc821e5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#gade01aa1fe30ccc968af9fe8a3bc821e5">cgroup_set_value_uint64</a> (struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *controller, const char *name, u_int64_t value)</td></tr>
+<tr class="separator:gade01aa1fe30ccc968af9fe8a3bc821e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafb24892bc221cffee0f5fe07f64d54d7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#gafb24892bc221cffee0f5fe07f64d54d7">cgroup_set_value_bool</a> (struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *controller, const char *name, bool value)</td></tr>
+<tr class="separator:gafb24892bc221cffee0f5fe07f64d54d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga25115085978ce2a8d671e7876cc49c1d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#ga25115085978ce2a8d671e7876cc49c1d">cgroup_get_value_name_count</a> (struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *controller)</td></tr>
+<tr class="separator:ga25115085978ce2a8d671e7876cc49c1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga16ca75fd16eda7cfc642421111e9a331"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#ga16ca75fd16eda7cfc642421111e9a331">cgroup_get_value_name</a> (struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *controller, int index)</td></tr>
+<tr class="separator:ga16ca75fd16eda7cfc642421111e9a331"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga08a4fe913d59f61a39e61b8b02537dc2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#ga08a4fe913d59f61a39e61b8b02537dc2">cgroup_get_procs</a> (char *name, char *controller, pid_t **pids, int *size)</td></tr>
+<tr class="separator:ga08a4fe913d59f61a39e61b8b02537dc2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaef0bf6cd480f2dcb5e964de151a27dd1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#gaef0bf6cd480f2dcb5e964de151a27dd1">cg_chmod_recursive</a> (struct <a class="el" href="structcgroup.html">cgroup</a> *<a class="el" href="structcgroup.html">cgroup</a>, mode_t dir_mode, int dirm_change, mode_t file_mode, int filem_change)</td></tr>
+<tr class="separator:gaef0bf6cd480f2dcb5e964de151a27dd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac9b5ff481de08ba8fdfcbd42940d2cbf"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__groups.html#gac9b5ff481de08ba8fdfcbd42940d2cbf">cgroup_get_cgroup_name</a> (struct <a class="el" href="structcgroup.html">cgroup</a> *<a class="el" href="structcgroup.html">cgroup</a>)</td></tr>
+<tr class="separator:gac9b5ff481de08ba8fdfcbd42940d2cbf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="gad4ffad2eccf9fcbfa8a551e269e0ad58"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad4ffad2eccf9fcbfa8a551e269e0ad58">&#9670;&nbsp;</a></span>NO_PERMS</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NO_PERMS&#160;&#160;&#160;(-1U)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Uninitialized file/directory permissions used for task/control files. </p>
+
+</div>
+</div>
+<a id="ga2a7954a987e3fbf8eabcc94cf381353e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga2a7954a987e3fbf8eabcc94cf381353e">&#9670;&nbsp;</a></span>NO_UID_GID</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define NO_UID_GID&#160;&#160;&#160;(-1U)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Uninitialized UID/GID used for task/control files. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="gaef0bf6cd480f2dcb5e964de151a27dd1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaef0bf6cd480f2dcb5e964de151a27dd1">&#9670;&nbsp;</a></span>cg_chmod_recursive()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cg_chmod_recursive </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup.html">cgroup</a> *&#160;</td>
+          <td class="paramname"><em>cgroup</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">mode_t&#160;</td>
+          <td class="paramname"><em>dir_mode</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>dirm_change</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">mode_t&#160;</td>
+          <td class="paramname"><em>file_mode</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>filem_change</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Change permission of files and directories of given group </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">cgroup</td><td>The cgroup which permissions should be changed </td></tr>
+    <tr><td class="paramname">dir_mode</td><td>The permission mode of group directory </td></tr>
+    <tr><td class="paramname">dirm_change</td><td>Denotes whether the directory change should be done </td></tr>
+    <tr><td class="paramname">file_mode</td><td>The permission mode of group files </td></tr>
+    <tr><td class="paramname">filem_change</td><td>Denotes whether the directory change should be done </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="gae870d271b789b5c54c2e3d35de3cd6f9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae870d271b789b5c54c2e3d35de3cd6f9">&#9670;&nbsp;</a></span>cgroup_add_all_controllers()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_add_all_controllers </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup.html">cgroup</a> *&#160;</td>
+          <td class="paramname"><em>cgroup</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Attach all mounted controllers to given cgroup. This function just modifies internal libcgroup structure, not the kernel control group.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">cgroup</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>zero or error number </dd></dl>
+
+</div>
+</div>
+<a id="gaa2f9c2ac75fd7e56e5ec6fb970304130"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaa2f9c2ac75fd7e56e5ec6fb970304130">&#9670;&nbsp;</a></span>cgroup_add_controller()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a>* cgroup_add_controller </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup.html">cgroup</a> *&#160;</td>
+          <td class="paramname"><em>cgroup</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>name</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Attach new controller to cgroup. This function just modifies internal libcgroup structure, not the kernel control group.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">cgroup</td><td></td></tr>
+    <tr><td class="paramname">name</td><td>Name of the controller, e.g. "freezer". </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Created controller or NULL on error. </dd></dl>
+
+</div>
+</div>
+<a id="ga4b191a600f84b00ea7afd12c01d918f3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga4b191a600f84b00ea7afd12c01d918f3">&#9670;&nbsp;</a></span>cgroup_add_value_bool()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_add_value_bool </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *&#160;</td>
+          <td class="paramname"><em>controller</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>name</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>value</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Add parameter and its value to internal <code>libcgroup</code> structures. Use <a class="el" href="group__group__groups.html#ga31ba5e865ae8d58b4453c0ef06d2c071">cgroup_modify_cgroup()</a> or <a class="el" href="group__group__groups.html#gadb8e13df6064841d3c9707960f782fa7">cgroup_create_cgroup()</a> to write it to kernel.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">controller</td><td></td></tr>
+    <tr><td class="paramname">name</td><td>Name of the parameter. </td></tr>
+    <tr><td class="paramname">value</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga6c973bb5ce99e7a91def2032f23d7087"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga6c973bb5ce99e7a91def2032f23d7087">&#9670;&nbsp;</a></span>cgroup_add_value_int64()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_add_value_int64 </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *&#160;</td>
+          <td class="paramname"><em>controller</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>name</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int64_t&#160;</td>
+          <td class="paramname"><em>value</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Add parameter and its value to internal <code>libcgroup</code> structures. Use <a class="el" href="group__group__groups.html#ga31ba5e865ae8d58b4453c0ef06d2c071">cgroup_modify_cgroup()</a> or <a class="el" href="group__group__groups.html#gadb8e13df6064841d3c9707960f782fa7">cgroup_create_cgroup()</a> to write it to kernel. Content of the value is copied to internal structures and is not needed after return from the function.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">controller</td><td></td></tr>
+    <tr><td class="paramname">name</td><td>Name of the parameter. </td></tr>
+    <tr><td class="paramname">value</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga4817c68ab791c09c07b663c29b3fb029"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga4817c68ab791c09c07b663c29b3fb029">&#9670;&nbsp;</a></span>cgroup_add_value_string()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_add_value_string </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *&#160;</td>
+          <td class="paramname"><em>controller</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>name</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>value</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Add parameter and its value to internal <code>libcgroup</code> structures. Use <a class="el" href="group__group__groups.html#ga31ba5e865ae8d58b4453c0ef06d2c071">cgroup_modify_cgroup()</a> or <a class="el" href="group__group__groups.html#gadb8e13df6064841d3c9707960f782fa7">cgroup_create_cgroup()</a> to write it to kernel.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">controller</td><td></td></tr>
+    <tr><td class="paramname">name</td><td>Name of the parameter. </td></tr>
+    <tr><td class="paramname">value</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="gad9d2216205b96278c626122f8d5e63bb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad9d2216205b96278c626122f8d5e63bb">&#9670;&nbsp;</a></span>cgroup_add_value_uint64()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_add_value_uint64 </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *&#160;</td>
+          <td class="paramname"><em>controller</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>name</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">u_int64_t&#160;</td>
+          <td class="paramname"><em>value</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Add parameter and its value to internal <code>libcgroup</code> structures. Use <a class="el" href="group__group__groups.html#ga31ba5e865ae8d58b4453c0ef06d2c071">cgroup_modify_cgroup()</a> or <a class="el" href="group__group__groups.html#gadb8e13df6064841d3c9707960f782fa7">cgroup_create_cgroup()</a> to write it to kernel.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">controller</td><td></td></tr>
+    <tr><td class="paramname">name</td><td>Name of the parameter. </td></tr>
+    <tr><td class="paramname">value</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga86898b59e50335f99fe84a11fa38d3fc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga86898b59e50335f99fe84a11fa38d3fc">&#9670;&nbsp;</a></span>cgroup_compare_cgroup()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_compare_cgroup </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup.html">cgroup</a> *&#160;</td>
+          <td class="paramname"><em>cgroup_a</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structcgroup.html">cgroup</a> *&#160;</td>
+          <td class="paramname"><em>cgroup_b</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Compare names, owners, controllers, parameters and values of two groups.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">cgroup_a</td><td></td></tr>
+    <tr><td class="paramname">cgroup_b</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">0</td><td>if the groups are the same. </td></tr>
+    <tr><td class="paramname">#ECGROUPNOTEQUAL</td><td>if the groups are not the same. </td></tr>
+    <tr><td class="paramname">#ECGCONTROLLERNOTEQUAL</td><td>if the only difference are controllers, parameters or their values. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="gab1725c50c49cec4b0bdad1f26b150ca7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gab1725c50c49cec4b0bdad1f26b150ca7">&#9670;&nbsp;</a></span>cgroup_compare_controllers()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_compare_controllers </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *&#160;</td>
+          <td class="paramname"><em>cgca</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *&#160;</td>
+          <td class="paramname"><em>cgcb</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Compare names, parameters and values of two controllers.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">cgca</td><td></td></tr>
+    <tr><td class="paramname">cgcb</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">0</td><td>if the controllers are the same. </td></tr>
+    <tr><td class="paramname">#ECGCONTROLLERNOTEQUAL</td><td>if the controllers are not equal. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="gaa981a95e0917d3167601a4c1b392336a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaa981a95e0917d3167601a4c1b392336a">&#9670;&nbsp;</a></span>cgroup_copy_cgroup()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_copy_cgroup </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup.html">cgroup</a> *&#160;</td>
+          <td class="paramname"><em>dst</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structcgroup.html">cgroup</a> *&#160;</td>
+          <td class="paramname"><em>src</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Copy all controllers, their parameters and values. Group name, permissions and ownerships are not coppied. All existing controllers in the source group are discarded.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">dst</td><td>Destination group. </td></tr>
+    <tr><td class="paramname">src</td><td>Source group.</td></tr>
+  </table>
+  </dd>
+</dl>
+<p>@dst: Destination control group @src: Source from which values will be copied to dst</p>
+<p>Create a duplicate copy of src in dst. This will be useful for those who that intend to create new instances based on an existing control group </p>
+
+</div>
+</div>
+<a id="gadb8e13df6064841d3c9707960f782fa7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gadb8e13df6064841d3c9707960f782fa7">&#9670;&nbsp;</a></span>cgroup_create_cgroup()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_create_cgroup </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup.html">cgroup</a> *&#160;</td>
+          <td class="paramname"><em>cgroup</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>ignore_ownership</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Physically create a control group in kernel. The group is created in all hierarchies, which cover controllers added by <a class="el" href="group__group__groups.html#gaa2f9c2ac75fd7e56e5ec6fb970304130">cgroup_add_controller()</a>. All parameters set by cgroup_add_value_* functions are written. The created groups has owner which was set by <a class="el" href="group__group__groups.html#ga53b9e13e30660c805ab5773d69397a43">cgroup_set_uid_gid()</a> and permissions set by cgroup_set_permissions. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">cgroup</td><td></td></tr>
+    <tr><td class="paramname">ignore_ownership</td><td>When nozero, all errors are ignored when setting owner of the group and/or its tasks file. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000005">Todo:</a></b></dt><dd>what is ignore_ownership good for? </dd></dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">#ECGROUPNOTEQUAL</td><td>if not all specified controller parameters were successfully set.</td></tr>
+  </table>
+  </dd>
+</dl>
+<p>cgroup_create_cgroup creates a new control group. struct cgroup *cgroup: The control group to be created</p>
+<p>returns 0 on success. We recommend calling cg_delete_cgroup if this routine fails. That should do the cleanup operation. If ECGCANTSETVALUE is returned, the group was created successfully but not all controller parameters were successfully set. </p>
+
+</div>
+</div>
+<a id="ga90e1ce96f3cb540f7e82d076dd938f62"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga90e1ce96f3cb540f7e82d076dd938f62">&#9670;&nbsp;</a></span>cgroup_create_cgroup_from_parent()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_create_cgroup_from_parent </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup.html">cgroup</a> *&#160;</td>
+          <td class="paramname"><em>cgroup</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>ignore_ownership</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Physically create new control group in kernel, with all parameters and values copied from its parent group. The group is created in all hierarchies, where the parent group exists. I.e. following code creates subgroup in all hierarchies, because all of them have root (=parent) group. </p><div class="fragment"><div class="line"><span class="keyword">struct </span><a class="code" href="structcgroup.html">cgroup</a> *foo = <a class="code" href="group__group__groups.html#ga6cd4733e5982ac2c92ee3cb3dbd10a31">cgroup_new_cgroup</a>(<span class="stringliteral">&quot;foo&quot;</span>);</div>
+<div class="line"><a class="code" href="group__group__groups.html#ga90e1ce96f3cb540f7e82d076dd938f62">cgroup_create_cgroup_from_parent</a>(foo, 0);</div>
+<div class="ttc" id="agroup__group__groups_html_ga90e1ce96f3cb540f7e82d076dd938f62"><div class="ttname"><a href="group__group__groups.html#ga90e1ce96f3cb540f7e82d076dd938f62">cgroup_create_cgroup_from_parent</a></div><div class="ttdeci">int cgroup_create_cgroup_from_parent(struct cgroup *cgroup, int ignore_ownership)</div><div class="ttdef"><b>Definition:</b> api.c:2588</div></div>
+</div><!-- fragment --> <dl class="todo"><dt><b><a class="el" href="todo.html#_todo000006">Todo:</a></b></dt><dd>what is this good for? Why the list of controllers added by <a class="el" href="group__group__groups.html#gaa2f9c2ac75fd7e56e5ec6fb970304130">cgroup_add_controller()</a> is not used, like in <a class="el" href="group__group__groups.html#gadb8e13df6064841d3c9707960f782fa7">cgroup_create_cgroup()</a>? I can't crate subgroup of root group in just one hierarchy with this function!</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">cgroup</td><td>The cgroup to create. Only it's name is used, everything else is discarded. </td></tr>
+    <tr><td class="paramname">ignore_ownership</td><td>When nozero, all errors are ignored when setting owner of the group and/or its tasks file. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000007">Todo:</a></b></dt><dd>what is ignore_ownership good for? </dd></dl>
+<dl class="retval"><dt>Return values</dt><dd>
+  <table class="retval">
+    <tr><td class="paramname">#ECGROUPNOTEQUAL</td><td>if not all inherited controller parameters were successfully set (this is expected).</td></tr>
+  </table>
+  </dd>
+</dl>
+<p>@cgroup: cgroup data structure to be filled with parent values and then passed down for creation @ignore_ownership: Ignore doing a chown on the newly created cgroup </p><dl class="section return"><dt>Returns</dt><dd>0 on success, &gt; 0 on failure. If ECGCANTSETVALUE is returned, the group was created successfully, but not all controller parameters were copied from the parent successfully; unfortunately, this is expected... </dd></dl>
+
+</div>
+</div>
+<a id="ga1dca18434e5d6be30c28c556da94f565"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga1dca18434e5d6be30c28c556da94f565">&#9670;&nbsp;</a></span>cgroup_delete_cgroup()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_delete_cgroup </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup.html">cgroup</a> *&#160;</td>
+          <td class="paramname"><em>cgroup</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>ignore_migration</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Physically remove a control group from kernel. The group is removed from all hierarchies, which cover controllers added by <a class="el" href="group__group__groups.html#gaa2f9c2ac75fd7e56e5ec6fb970304130">cgroup_add_controller()</a> or <a class="el" href="group__group__groups.html#gad4ba31fe5a8bba63b33b1ea339b849e6">cgroup_get_cgroup()</a>. All tasks inside the group are automatically moved to parent group.</p>
+<p>The group being removed must be empty, i.e. without subgroups. Use <a class="el" href="group__group__groups.html#ga860c1ec70189c969b2c8373fc1e96d36">cgroup_delete_cgroup_ext()</a> for recursive delete.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">cgroup</td><td></td></tr>
+    <tr><td class="paramname">ignore_migration</td><td>When nozero, all errors are ignored when migrating tasks from the group to the parent group. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000008">Todo:</a></b></dt><dd>what is ignore_migration good for? rmdir() will fail if tasks were not moved. </dd></dl>
+<p>cgroup_delete cgroup deletes a control group. struct cgroup *cgroup takes the group which is to be deleted.</p>
+<p>returns 0 on success. </p>
+
+</div>
+</div>
+<a id="ga860c1ec70189c969b2c8373fc1e96d36"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga860c1ec70189c969b2c8373fc1e96d36">&#9670;&nbsp;</a></span>cgroup_delete_cgroup_ext()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_delete_cgroup_ext </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup.html">cgroup</a> *&#160;</td>
+          <td class="paramname"><em>cgroup</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>flags</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Physically remove a control group from kernel. All tasks are automatically moved to parent group. If #CGFLAG_DELETE_IGNORE_MIGRATION flag is used, the errors that occurred during the task movement are ignored. #CGFLAG_DELETE_RECURSIVE flag specifies that all subgroups should be removed too. If root group is being removed with this flag specified, all subgroups are removed but the root group itself is left undeleted. </p><dl class="section see"><dt>See also</dt><dd>cgroup_delete_flag.</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">cgroup</td><td></td></tr>
+    <tr><td class="paramname">flags</td><td>Combination of CGFLAG_DELETE_* flags, which indicate what and how to delete. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="gab20fdb1ae479f8baac482336abf73900"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gab20fdb1ae479f8baac482336abf73900">&#9670;&nbsp;</a></span>cgroup_free()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void cgroup_free </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup.html">cgroup</a> **&#160;</td>
+          <td class="paramname"><em>cgroup</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Free internal <code>cgroup</code> structure. This function frees also all controllers attached to the <code>cgroup</code>, including all parameters and their values. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">cgroup</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga92d27c9ff0d655838642a7aa68497596"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga92d27c9ff0d655838642a7aa68497596">&#9670;&nbsp;</a></span>cgroup_free_controllers()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void cgroup_free_controllers </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup.html">cgroup</a> *&#160;</td>
+          <td class="paramname"><em>cgroup</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Free internal list of controllers from the group. </p><dl class="todo"><dt><b><a class="el" href="todo.html#_todo000004">Todo:</a></b></dt><dd>should this function be public??? </dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">cgroup</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="gad4ba31fe5a8bba63b33b1ea339b849e6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad4ba31fe5a8bba63b33b1ea339b849e6">&#9670;&nbsp;</a></span>cgroup_get_cgroup()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_get_cgroup </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup.html">cgroup</a> *&#160;</td>
+          <td class="paramname"><em>cgroup</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Read all information regarding the group from kernel. Based on name of the group, list of controllers and all parameters and their values are read from all hierarchies, where a group with given name exists. All existing controllers are replaced. I.e. following code will fill <code>root</code> with controllers from all hierarchies, because the root group is available in all of them. </p><div class="fragment"><div class="line"><span class="keyword">struct </span><a class="code" href="structcgroup.html">cgroup</a> *root = <a class="code" href="group__group__groups.html#ga6cd4733e5982ac2c92ee3cb3dbd10a31">cgroup_new_cgroup</a>(<span class="stringliteral">&quot;/&quot;</span>);</div>
+<div class="line"><a class="code" href="group__group__groups.html#gad4ba31fe5a8bba63b33b1ea339b849e6">cgroup_get_cgroup</a>(root);</div>
+<div class="ttc" id="agroup__group__groups_html_gad4ba31fe5a8bba63b33b1ea339b849e6"><div class="ttname"><a href="group__group__groups.html#gad4ba31fe5a8bba63b33b1ea339b849e6">cgroup_get_cgroup</a></div><div class="ttdeci">int cgroup_get_cgroup(struct cgroup *cgroup)</div><div class="ttdef"><b>Definition:</b> api.c:3141</div></div>
+</div><!-- fragment --><dl class="todo"><dt><b><a class="el" href="todo.html#_todo000009">Todo:</a></b></dt><dd>what is this function good for? Why is not considered only the list of controllers attached by <a class="el" href="group__group__groups.html#gaa2f9c2ac75fd7e56e5ec6fb970304130">cgroup_add_controller()</a>? What owners will return <a class="el" href="group__group__groups.html#ga007d21c304d9cc6e948dc0ae51ecfa86">cgroup_get_uid_gid()</a> if the group is in multiple hierarchies, each with different owner of tasks file?</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">cgroup</td><td>The cgroup to load. Only it's name is used, everything else is replaced. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="gac9b5ff481de08ba8fdfcbd42940d2cbf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gac9b5ff481de08ba8fdfcbd42940d2cbf">&#9670;&nbsp;</a></span>cgroup_get_cgroup_name()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">char* cgroup_get_cgroup_name </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup.html">cgroup</a> *&#160;</td>
+          <td class="paramname"><em>cgroup</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Get the name of the cgroup from a given cgroup </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">cgroup</td><td>The cgroup whose name is needed </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga8335b0aec59c8f845639a7404affce05"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga8335b0aec59c8f845639a7404affce05">&#9670;&nbsp;</a></span>cgroup_get_controller()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a>* cgroup_get_controller </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup.html">cgroup</a> *&#160;</td>
+          <td class="paramname"><em>cgroup</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>name</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Return appropriate controller from given group. The controller must be added before using <a class="el" href="group__group__groups.html#gaa2f9c2ac75fd7e56e5ec6fb970304130">cgroup_add_controller()</a> or loaded from kernel using <a class="el" href="group__group__groups.html#gad4ba31fe5a8bba63b33b1ea339b849e6">cgroup_get_cgroup()</a>. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">cgroup</td><td></td></tr>
+    <tr><td class="paramname">name</td><td>Name of the controller, e.g. "freezer". </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga08a4fe913d59f61a39e61b8b02537dc2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga08a4fe913d59f61a39e61b8b02537dc2">&#9670;&nbsp;</a></span>cgroup_get_procs()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_get_procs </td>
+          <td>(</td>
+          <td class="paramtype">char *&#160;</td>
+          <td class="paramname"><em>name</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&#160;</td>
+          <td class="paramname"><em>controller</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">pid_t **&#160;</td>
+          <td class="paramname"><em>pids</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int *&#160;</td>
+          <td class="paramname"><em>size</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Get the list of process in a cgroup. This list is guaranteed to be sorted. It is not necessary that it is unique. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">name</td><td>The name of the cgroup </td></tr>
+    <tr><td class="paramname">controller</td><td>The name of the controller </td></tr>
+    <tr><td class="paramname">pids</td><td>The list of pids. Should be uninitialized when passed to the API. Should be freed by the caller using free. </td></tr>
+    <tr><td class="paramname">size</td><td>The size of the pids array returned by the API. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga007d21c304d9cc6e948dc0ae51ecfa86"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga007d21c304d9cc6e948dc0ae51ecfa86">&#9670;&nbsp;</a></span>cgroup_get_uid_gid()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_get_uid_gid </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup.html">cgroup</a> *&#160;</td>
+          <td class="paramname"><em>cgroup</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uid_t *&#160;</td>
+          <td class="paramname"><em>tasks_uid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">gid_t *&#160;</td>
+          <td class="paramname"><em>tasks_gid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uid_t *&#160;</td>
+          <td class="paramname"><em>control_uid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">gid_t *&#160;</td>
+          <td class="paramname"><em>control_gid</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Return owners of the group's <code>tasks</code> file and control files. The data is read from <code>libcgroup</code> internal <code>cgroup</code> structure, use <a class="el" href="group__group__groups.html#ga53b9e13e30660c805ab5773d69397a43">cgroup_set_uid_gid()</a> or <a class="el" href="group__group__groups.html#gad4ba31fe5a8bba63b33b1ea339b849e6">cgroup_get_cgroup()</a> to fill it. </p>
+
+</div>
+</div>
+<a id="gab95007148eac89b7e935d93a4524787b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gab95007148eac89b7e935d93a4524787b">&#9670;&nbsp;</a></span>cgroup_get_value_bool()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_get_value_bool </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *&#160;</td>
+          <td class="paramname"><em>controller</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>name</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool *&#160;</td>
+          <td class="paramname"><em>value</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Read a parameter value from <code>libcgroup</code> internal structures. Use <code><a class="el" href="group__group__groups.html#gad4ba31fe5a8bba63b33b1ea339b849e6">cgroup_get_cgroup()</a></code> to fill these structures with data from kernel.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">controller</td><td></td></tr>
+    <tr><td class="paramname">name</td><td>Name of the parameter. </td></tr>
+    <tr><td class="paramname">value</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga0fe9b05f26b3cab21fc446c9a2700526"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga0fe9b05f26b3cab21fc446c9a2700526">&#9670;&nbsp;</a></span>cgroup_get_value_int64()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_get_value_int64 </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *&#160;</td>
+          <td class="paramname"><em>controller</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>name</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int64_t *&#160;</td>
+          <td class="paramname"><em>value</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Read a parameter value from <code>libcgroup</code> internal structures. Use <code><a class="el" href="group__group__groups.html#gad4ba31fe5a8bba63b33b1ea339b849e6">cgroup_get_cgroup()</a></code> to fill these structures with data from kernel.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">controller</td><td></td></tr>
+    <tr><td class="paramname">name</td><td>Name of the parameter. </td></tr>
+    <tr><td class="paramname">value</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga16ca75fd16eda7cfc642421111e9a331"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga16ca75fd16eda7cfc642421111e9a331">&#9670;&nbsp;</a></span>cgroup_get_value_name()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">char* cgroup_get_value_name </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *&#160;</td>
+          <td class="paramname"><em>controller</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>index</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Return the name of parameter of controller at given index. The index goes from 0 to <a class="el" href="group__group__groups.html#ga25115085978ce2a8d671e7876cc49c1d">cgroup_get_value_name_count()</a>-1. Use this function to list all parameter of the controller.</p>
+<dl class="section note"><dt>Note</dt><dd>The returned value is pointer to internal <code>libcgroup</code> structure, do not free it.</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">controller</td><td></td></tr>
+    <tr><td class="paramname">index</td><td>Index of the parameter. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Name of the parameter. </dd></dl>
+
+</div>
+</div>
+<a id="ga25115085978ce2a8d671e7876cc49c1d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga25115085978ce2a8d671e7876cc49c1d">&#9670;&nbsp;</a></span>cgroup_get_value_name_count()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_get_value_name_count </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *&#160;</td>
+          <td class="paramname"><em>controller</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Return the number of variables for the specified controller in <code>libcgroup</code> internal structures. Use <a class="el" href="group__group__groups.html#gad4ba31fe5a8bba63b33b1ea339b849e6">cgroup_get_cgroup()</a> to fill these structures with data from kernel. Use this function together with <a class="el" href="group__group__groups.html#ga16ca75fd16eda7cfc642421111e9a331">cgroup_get_value_name()</a> to list all parameters of a group.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">controller</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Count of the parameters or -1 on error. </dd></dl>
+
+</div>
+</div>
+<a id="gafaa51e5ffe09f8ad05585a1d3b6f7fa9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gafaa51e5ffe09f8ad05585a1d3b6f7fa9">&#9670;&nbsp;</a></span>cgroup_get_value_string()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_get_value_string </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *&#160;</td>
+          <td class="paramname"><em>controller</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>name</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char **&#160;</td>
+          <td class="paramname"><em>value</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Read a parameter value from <code>libcgroup</code> internal structures. Use <code><a class="el" href="group__group__groups.html#gad4ba31fe5a8bba63b33b1ea339b849e6">cgroup_get_cgroup()</a></code> to fill these structures with data from kernel. It's up to the caller to free returned value.</p>
+<p>This function works only for 'short' parameters. Use <a class="el" href="group__group__iterators.html#ga1138e47f124f0f634586db5e0c4ae5de">cgroup_read_stats_begin()</a>, <a class="el" href="group__group__iterators.html#gaf95587508fc15d74fd5ed0df58024be7">cgroup_read_stats_next()</a> and <a class="el" href="group__group__iterators.html#gaba386d9db6cadc6ad85c2552f63447bb">cgroup_read_stats_end()</a> to read <code>stats</code> parameter, which can be longer than libcgroup's internal buffers. </p><dl class="todo"><dt><b><a class="el" href="todo.html#_todo000010">Todo:</a></b></dt><dd>rephrase, it's too vague... How big is the buffer actually?</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">controller</td><td></td></tr>
+    <tr><td class="paramname">name</td><td>Name of the parameter. </td></tr>
+    <tr><td class="paramname">value</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga951861259c0373895bfb637fce337312"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga951861259c0373895bfb637fce337312">&#9670;&nbsp;</a></span>cgroup_get_value_uint64()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_get_value_uint64 </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *&#160;</td>
+          <td class="paramname"><em>controller</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>name</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">u_int64_t *&#160;</td>
+          <td class="paramname"><em>value</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Read a parameter value from <code>libcgroup</code> internal structures. Use <code><a class="el" href="group__group__groups.html#gad4ba31fe5a8bba63b33b1ea339b849e6">cgroup_get_cgroup()</a></code> to fill these structures with data from kernel.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">controller</td><td></td></tr>
+    <tr><td class="paramname">name</td><td>Name of the parameter. </td></tr>
+    <tr><td class="paramname">value</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga31ba5e865ae8d58b4453c0ef06d2c071"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga31ba5e865ae8d58b4453c0ef06d2c071">&#9670;&nbsp;</a></span>cgroup_modify_cgroup()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_modify_cgroup </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup.html">cgroup</a> *&#160;</td>
+          <td class="paramname"><em>cgroup</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Physically modify a control group in kernel. All parameters added by cgroup_add_value_ or cgroup_set_value_ are written. Currently it's not possible to change and owner of a group.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">cgroup</td><td>cgroup_modify_cgroup modifies the cgroup control files. struct cgroup *cgroup: The name will be the cgroup to be modified. The values will be the values to be modified, those not mentioned in the structure will not be modified.</td></tr>
+  </table>
+  </dd>
+</dl>
+<p>The uids cannot be modified yet.</p>
+<p>returns 0 on success. </p>
+
+</div>
+</div>
+<a id="ga6cd4733e5982ac2c92ee3cb3dbd10a31"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga6cd4733e5982ac2c92ee3cb3dbd10a31">&#9670;&nbsp;</a></span>cgroup_new_cgroup()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structcgroup.html">cgroup</a>* cgroup_new_cgroup </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>name</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Allocate new cgroup structure. This function itself does not create new control group in kernel, only new <code>struct cgroup</code> inside libcgroup!</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">name</td><td>Path to the group, relative from root group. Use <code>"/"</code> or <code>"."</code> for the root group itself and <code>"/foo/bar/baz"</code> or <code>"foo/bar/baz"</code> for subgroups. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000003">Todo:</a></b></dt><dd>suggest one preferred way, either "/foo" or "foo". </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>Created group or NULL on error. </dd></dl>
+
+</div>
+</div>
+<a id="gaa0400f1ff2fba7fbb6db82d97039d92b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaa0400f1ff2fba7fbb6db82d97039d92b">&#9670;&nbsp;</a></span>cgroup_set_permissions()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void cgroup_set_permissions </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup.html">cgroup</a> *&#160;</td>
+          <td class="paramname"><em>cgroup</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">mode_t&#160;</td>
+          <td class="paramname"><em>control_dperm</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">mode_t&#160;</td>
+          <td class="paramname"><em>control_fperm</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">mode_t&#160;</td>
+          <td class="paramname"><em>task_fperm</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Stores given file permissions of the group's control and tasks files into the <code>cgroup</code> data structure. Use NO_PERMS if permissions shouldn't be changed or a value which applicable to chmod(2). Please note that the given permissions are masked with the file owner's permissions. For example if a control file has permissions 640 and control_fperm is 471 the result will be 460. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">cgroup</td><td></td></tr>
+    <tr><td class="paramname">control_dperm</td><td>Directory permission for the group. </td></tr>
+    <tr><td class="paramname">control_fperm</td><td>File permission for the control files. </td></tr>
+    <tr><td class="paramname">task_fperm</td><td>File permissions for task file. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga53b9e13e30660c805ab5773d69397a43"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga53b9e13e30660c805ab5773d69397a43">&#9670;&nbsp;</a></span>cgroup_set_uid_gid()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_set_uid_gid </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup.html">cgroup</a> *&#160;</td>
+          <td class="paramname"><em>cgroup</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uid_t&#160;</td>
+          <td class="paramname"><em>tasks_uid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">gid_t&#160;</td>
+          <td class="paramname"><em>tasks_gid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uid_t&#160;</td>
+          <td class="paramname"><em>control_uid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">gid_t&#160;</td>
+          <td class="paramname"><em>control_gid</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Set owner of the group control files and the <code>tasks</code> file. This function modifies only <code>libcgroup</code> internal <code>cgroup</code> structure, use <a class="el" href="group__group__groups.html#gadb8e13df6064841d3c9707960f782fa7">cgroup_create_cgroup()</a> afterwards to create the group with given owners.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">cgroup</td><td></td></tr>
+    <tr><td class="paramname">tasks_uid</td><td>UID of the owner of group's <code>tasks</code> file. </td></tr>
+    <tr><td class="paramname">tasks_gid</td><td>GID of the owner of group's <code>tasks</code> file. </td></tr>
+    <tr><td class="paramname">control_uid</td><td>UID of the owner of group's control files (i.e. parameters). </td></tr>
+    <tr><td class="paramname">control_gid</td><td>GID of the owner of group's control files (i.e. parameters). </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="gafb24892bc221cffee0f5fe07f64d54d7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gafb24892bc221cffee0f5fe07f64d54d7">&#9670;&nbsp;</a></span>cgroup_set_value_bool()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_set_value_bool </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *&#160;</td>
+          <td class="paramname"><em>controller</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>name</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>value</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Set a parameter value in <code>libcgroup</code> internal structures. Use <a class="el" href="group__group__groups.html#ga31ba5e865ae8d58b4453c0ef06d2c071">cgroup_modify_cgroup()</a> or <a class="el" href="group__group__groups.html#gadb8e13df6064841d3c9707960f782fa7">cgroup_create_cgroup()</a> to write it to kernel.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">controller</td><td></td></tr>
+    <tr><td class="paramname">name</td><td>Name of the parameter. </td></tr>
+    <tr><td class="paramname">value</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="gaa5c39e51035cc43dd26a3c620441a956"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaa5c39e51035cc43dd26a3c620441a956">&#9670;&nbsp;</a></span>cgroup_set_value_int64()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_set_value_int64 </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *&#160;</td>
+          <td class="paramname"><em>controller</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>name</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int64_t&#160;</td>
+          <td class="paramname"><em>value</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Set a parameter value in <code>libcgroup</code> internal structures. Use <a class="el" href="group__group__groups.html#ga31ba5e865ae8d58b4453c0ef06d2c071">cgroup_modify_cgroup()</a> or <a class="el" href="group__group__groups.html#gadb8e13df6064841d3c9707960f782fa7">cgroup_create_cgroup()</a> to write it to kernel. Content of the value is copied to internal structures and is not needed after return from the function.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">controller</td><td></td></tr>
+    <tr><td class="paramname">name</td><td>Name of the parameter. </td></tr>
+    <tr><td class="paramname">value</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga938febc02b59cbeb8e4ceb2dc7fdac82"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga938febc02b59cbeb8e4ceb2dc7fdac82">&#9670;&nbsp;</a></span>cgroup_set_value_string()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_set_value_string </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *&#160;</td>
+          <td class="paramname"><em>controller</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>name</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>value</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Set a parameter value in <code>libcgroup</code> internal structures. Use <a class="el" href="group__group__groups.html#ga31ba5e865ae8d58b4453c0ef06d2c071">cgroup_modify_cgroup()</a> or <a class="el" href="group__group__groups.html#gadb8e13df6064841d3c9707960f782fa7">cgroup_create_cgroup()</a> to write it to kernel.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">controller</td><td></td></tr>
+    <tr><td class="paramname">name</td><td>Name of the parameter. </td></tr>
+    <tr><td class="paramname">value</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="gade01aa1fe30ccc968af9fe8a3bc821e5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gade01aa1fe30ccc968af9fe8a3bc821e5">&#9670;&nbsp;</a></span>cgroup_set_value_uint64()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_set_value_uint64 </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *&#160;</td>
+          <td class="paramname"><em>controller</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>name</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">u_int64_t&#160;</td>
+          <td class="paramname"><em>value</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Set a parameter value in <code>libcgroup</code> internal structures. Use <a class="el" href="group__group__groups.html#ga31ba5e865ae8d58b4453c0ef06d2c071">cgroup_modify_cgroup()</a> or <a class="el" href="group__group__groups.html#gadb8e13df6064841d3c9707960f782fa7">cgroup_create_cgroup()</a> to write it to kernel.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">controller</td><td></td></tr>
+    <tr><td class="paramname">name</td><td>Name of the parameter. </td></tr>
+    <tr><td class="paramname">value</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/group__group__init.html b/group__group__init.html
new file mode 100644 (file)
index 0000000..406e9aa
--- /dev/null
@@ -0,0 +1,144 @@
+<!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>libcgroup: 1. Initialization</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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 -->
+<!-- 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="headertitle">
+<div class="title">1. Initialization</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader">Initialization</h2></td></tr>
+<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp61bcd96a2c1f8026527cbf2019d6e9a4"></a>Application must initialize <code>libcgroup</code> using <a class="el" href="group__group__init.html#ga37740e2f5f298edf13e18fcd7632b75a">cgroup_init()</a> before any other <code>libcgroup</code> function can be called. <code>libcgroup</code> caches information about mounted hierarchies (just what's mounted where, not the control groups themselves) at this time. There is currently no way to refresh this cache, i.e. all subsequent mounts/remounts/unmounts are not reflected in this cache and <code>libcgroup</code> may produce unexpected results.</p>
+<p>In addition, there is no way how to clean the cache on application exit.</p>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000011">Todo:</a></b></dt><dd>this is very bad... There should be at least way how to refresh the cache and/or an option to refresh it automatically (does kernel provide any indication, when a filesystem is mounted/unmounted?). Dtto the cleanup on exit. </dd></dl>
+</td></tr>
+<tr class="memitem:ga37740e2f5f298edf13e18fcd7632b75a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__init.html#ga37740e2f5f298edf13e18fcd7632b75a">cgroup_init</a> (void)</td></tr>
+<tr class="separator:ga37740e2f5f298edf13e18fcd7632b75a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4f061b353321b81869057970d96f09f7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__init.html#ga4f061b353321b81869057970d96f09f7">cgroup_get_subsys_mount_point</a> (const char *controller, char **mount_point)</td></tr>
+<tr class="separator:ga4f061b353321b81869057970d96f09f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="ga4f061b353321b81869057970d96f09f7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga4f061b353321b81869057970d96f09f7">&#9670;&nbsp;</a></span>cgroup_get_subsys_mount_point()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_get_subsys_mount_point </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>controller</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char **&#160;</td>
+          <td class="paramname"><em>mount_point</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Returns path where is mounted given controller. Applications should rely on <code>libcgroup</code> API and not call this function directly. Only the first mount point is returned, use <a class="el" href="group__group__iterators.html#ga18a3c6fe7da42b9da96ce34dce1e31b8">cgroup_get_subsys_mount_point_begin()</a>, <a class="el" href="group__group__iterators.html#ga3d66997158cb8a334317923ad94cc789">cgroup_get_subsys_mount_point_next()</a> and <a class="el" href="group__group__iterators.html#ga9c9b0f1921c205bd25bfc6c1d20486eb">cgroup_get_subsys_mount_point_end()</a> to get all of them. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">controller</td><td>Name of the controller </td></tr>
+    <tr><td class="paramname">mount_point</td><td>The string where the mount point location is stored. Please note, the caller must free the mount_point. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga37740e2f5f298edf13e18fcd7632b75a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga37740e2f5f298edf13e18fcd7632b75a">&#9670;&nbsp;</a></span>cgroup_init()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_init </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Initialize libcgroup. Information about mounted hierarchies are examined and cached internally (just what's mounted where, not the groups themselves).</p>
+<p>If the cgroup logging was not set using <a class="el" href="group__group__log.html#ga76d7032206f9b9d1c0be1a71a68c43d0">cgroup_set_logger()</a> or <a class="el" href="group__group__log.html#gab1457ce518dcde0b9f3c14ec9efa2de7">cgroup_set_default_logger()</a> before calling <a class="el" href="group__group__init.html#ga37740e2f5f298edf13e18fcd7632b75a">cgroup_init()</a>, the default logger is automatically set, logging CGROUP_LOG_ERROR messages.</p>
+<p><a class="el" href="group__group__init.html#ga37740e2f5f298edf13e18fcd7632b75a">cgroup_init()</a>, initializes the MOUNT_POINT.</p>
+<p>This code is theoretically thread safe now. Its not really tested so it can blow up. If does for you, please let us know with your test case and we can really make it thread safe. </p>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/group__group__iterators.html b/group__group__iterators.html
new file mode 100644 (file)
index 0000000..315af3e
--- /dev/null
@@ -0,0 +1,1056 @@
+<!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>libcgroup: 3. Iterators</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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 -->
+<!-- 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>  </div>
+  <div class="headertitle">
+<div class="title">3. Iterators</div>  </div>
+</div><!--header-->
+<div class="contents">
+<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">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcgroup__file__info.html">cgroup_file_info</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcgroup__stat.html">cgroup_stat</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcgroup__mount__point.html">cgroup_mount_point</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcontroller__data.html">controller_data</a></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">Walk through control group filesystem</h2></td></tr>
+<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp4ac52e300efc01d54bd65f9b942faaa8"></a>This iterator returns all subgroups of given control group. It can be used to return all groups in given hierarchy, when root control group is provided. </p>
+</td></tr>
+<tr class="memitem:ga29a572cbc0c07e2b02dfa0f1ac0067d3"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__iterators.html#ga29a572cbc0c07e2b02dfa0f1ac0067d3">cgroup_walk_type</a> { <a class="el" href="group__group__iterators.html#gga29a572cbc0c07e2b02dfa0f1ac0067d3af865296e6a0e55cff574fbb132b9f913">CGROUP_WALK_TYPE_PRE_DIR</a> = 0x1
+, <a class="el" href="group__group__iterators.html#gga29a572cbc0c07e2b02dfa0f1ac0067d3abf3c31227768960bd6622d2562aae3e1">CGROUP_WALK_TYPE_POST_DIR</a> = 0x2
+ }</td></tr>
+<tr class="separator:ga29a572cbc0c07e2b02dfa0f1ac0067d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga608b4aa32e2db58fed34771a6a272444"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__iterators.html#ga608b4aa32e2db58fed34771a6a272444">cgroup_file_type</a> { <a class="el" href="group__group__iterators.html#gga608b4aa32e2db58fed34771a6a272444ad925cc45f1b34fe80e14fc6b05269740">CGROUP_FILE_TYPE_FILE</a>
+, <a class="el" href="group__group__iterators.html#gga608b4aa32e2db58fed34771a6a272444a5418798fc4bf9634429c6af167a0e7c3">CGROUP_FILE_TYPE_DIR</a>
+, <a class="el" href="group__group__iterators.html#gga608b4aa32e2db58fed34771a6a272444a24e202c59f318e63ad8cafcc1b4b102b">CGROUP_FILE_TYPE_OTHER</a>
+ }</td></tr>
+<tr class="separator:ga608b4aa32e2db58fed34771a6a272444"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7b19f10c06abb96d8c8ae88a04888a68"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__iterators.html#ga7b19f10c06abb96d8c8ae88a04888a68">cgroup_walk_tree_begin</a> (const char *controller, const char *base_path, int depth, void **handle, struct <a class="el" href="structcgroup__file__info.html">cgroup_file_info</a> *info, int *base_level)</td></tr>
+<tr class="separator:ga7b19f10c06abb96d8c8ae88a04888a68"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga527f5499b0aa04d325074435baebdff1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__iterators.html#ga527f5499b0aa04d325074435baebdff1">cgroup_walk_tree_next</a> (int depth, void **handle, struct <a class="el" href="structcgroup__file__info.html">cgroup_file_info</a> *info, int base_level)</td></tr>
+<tr class="separator:ga527f5499b0aa04d325074435baebdff1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga09a70990837a58e506a264f8c50d4cde"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__iterators.html#ga09a70990837a58e506a264f8c50d4cde">cgroup_walk_tree_end</a> (void **handle)</td></tr>
+<tr class="separator:ga09a70990837a58e506a264f8c50d4cde"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga645ec7a6206dffb32667e7a0e148edc8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__iterators.html#ga645ec7a6206dffb32667e7a0e148edc8">cgroup_walk_tree_set_flags</a> (void **handle, int flags)</td></tr>
+<tr class="separator:ga645ec7a6206dffb32667e7a0e148edc8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga73edb115af6779644d3371b12cf09140"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__iterators.html#ga73edb115af6779644d3371b12cf09140">cgroup_read_value_begin</a> (const char *controller, const char *path, char *name, void **handle, char *buffer, int max)</td></tr>
+<tr class="separator:ga73edb115af6779644d3371b12cf09140"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaced2fe331f19d599a3270db2440847cc"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__iterators.html#gaced2fe331f19d599a3270db2440847cc">cgroup_read_value_next</a> (void **handle, char *buffer, int max)</td></tr>
+<tr class="separator:gaced2fe331f19d599a3270db2440847cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad348f041e283860cbf6bcea567e23a21"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__iterators.html#gad348f041e283860cbf6bcea567e23a21">cgroup_read_value_end</a> (void **handle)</td></tr>
+<tr class="separator:gad348f041e283860cbf6bcea567e23a21"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader">Read group stats</h2></td></tr>
+<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrpd712caea12358af9b539876bf9c6d35d"></a>libcgroup's <a class="el" href="group__group__groups.html#gafaa51e5ffe09f8ad05585a1d3b6f7fa9">cgroup_get_value_string()</a> reads only relatively short parametrs of a group. Use following functions to read <code>stats</code> parameter, which can be quite long. </p>
+</td></tr>
+<tr class="memitem:ga1138e47f124f0f634586db5e0c4ae5de"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__iterators.html#ga1138e47f124f0f634586db5e0c4ae5de">cgroup_read_stats_begin</a> (const char *controller, const char *path, void **handle, struct <a class="el" href="structcgroup__stat.html">cgroup_stat</a> *stat)</td></tr>
+<tr class="separator:ga1138e47f124f0f634586db5e0c4ae5de"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf95587508fc15d74fd5ed0df58024be7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__iterators.html#gaf95587508fc15d74fd5ed0df58024be7">cgroup_read_stats_next</a> (void **handle, struct <a class="el" href="structcgroup__stat.html">cgroup_stat</a> *stat)</td></tr>
+<tr class="separator:gaf95587508fc15d74fd5ed0df58024be7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaba386d9db6cadc6ad85c2552f63447bb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__iterators.html#gaba386d9db6cadc6ad85c2552f63447bb">cgroup_read_stats_end</a> (void **handle)</td></tr>
+<tr class="separator:gaba386d9db6cadc6ad85c2552f63447bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga55d2eac2af703794651d344c073566f5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__iterators.html#ga55d2eac2af703794651d344c073566f5">CG_VALUE_MAX</a>&#160;&#160;&#160;100</td></tr>
+<tr class="separator:ga55d2eac2af703794651d344c073566f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader">List all tasks in a group</h2></td></tr>
+<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrpc8286aaacaa539a428f4a99aa8e10e00"></a>Use following functions to read <code>tasks</code> file of a group. </p>
+</td></tr>
+<tr class="memitem:gad7218154192f733120e1025cc19d0a36"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__iterators.html#gad7218154192f733120e1025cc19d0a36">cgroup_get_task_begin</a> (const char *<a class="el" href="structcgroup.html">cgroup</a>, const char *controller, void **handle, pid_t *pid)</td></tr>
+<tr class="separator:gad7218154192f733120e1025cc19d0a36"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf3a0364682b7449ddccfb0862bbb565e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__iterators.html#gaf3a0364682b7449ddccfb0862bbb565e">cgroup_get_task_next</a> (void **handle, pid_t *pid)</td></tr>
+<tr class="separator:gaf3a0364682b7449ddccfb0862bbb565e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaeb955e5f4da551268380b1271d478816"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__iterators.html#gaeb955e5f4da551268380b1271d478816">cgroup_get_task_end</a> (void **handle)</td></tr>
+<tr class="separator:gaeb955e5f4da551268380b1271d478816"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader">List mounted controllers</h2></td></tr>
+<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrpc06e462ef3ee4003a1adc5e1638946e8"></a>Use following function to list mounted controllers and to see, how they are mounted together in hierarchies. Use <a class="el" href="group__group__iterators.html#gad48ef653388ca6739a9b6bbb9d7da82e">cgroup_get_all_controller_begin()</a> (see later) to list all controllers, including those which are not mounted. </p>
+</td></tr>
+<tr class="memitem:ga5f9f21138f9b18912a16b21a45b53c44"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__iterators.html#ga5f9f21138f9b18912a16b21a45b53c44">cgroup_get_controller_begin</a> (void **handle, struct <a class="el" href="structcgroup__mount__point.html">cgroup_mount_point</a> *info)</td></tr>
+<tr class="separator:ga5f9f21138f9b18912a16b21a45b53c44"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga926b70423b6c087c21a14670cd23cd7d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__iterators.html#ga926b70423b6c087c21a14670cd23cd7d">cgroup_get_controller_next</a> (void **handle, struct <a class="el" href="structcgroup__mount__point.html">cgroup_mount_point</a> *info)</td></tr>
+<tr class="separator:ga926b70423b6c087c21a14670cd23cd7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab485cda2bc9640bacbf61f1953ae750c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__iterators.html#gab485cda2bc9640bacbf61f1953ae750c">cgroup_get_controller_end</a> (void **handle)</td></tr>
+<tr class="separator:gab485cda2bc9640bacbf61f1953ae750c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader">List all controllers</h2></td></tr>
+<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrpb6269b04e6e8f08ded4fa3a625b184c5"></a>Use following functions to list all controllers, including those which are not mounted. The controllers are returned in the same order as in /proc/cgroups file, i.e. mostly random. </p>
+</td></tr>
+<tr class="memitem:gad48ef653388ca6739a9b6bbb9d7da82e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__iterators.html#gad48ef653388ca6739a9b6bbb9d7da82e">cgroup_get_all_controller_begin</a> (void **handle, struct <a class="el" href="structcontroller__data.html">controller_data</a> *info)</td></tr>
+<tr class="separator:gad48ef653388ca6739a9b6bbb9d7da82e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3d98a04b29b1fe409db1114b7aa76809"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__iterators.html#ga3d98a04b29b1fe409db1114b7aa76809">cgroup_get_all_controller_next</a> (void **handle, struct <a class="el" href="structcontroller__data.html">controller_data</a> *info)</td></tr>
+<tr class="separator:ga3d98a04b29b1fe409db1114b7aa76809"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0c467d42a2c9a916a0edd339a6d7afc8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__iterators.html#ga0c467d42a2c9a916a0edd339a6d7afc8">cgroup_get_all_controller_end</a> (void **handle)</td></tr>
+<tr class="separator:ga0c467d42a2c9a916a0edd339a6d7afc8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader">List all mount points of a controller.</h2></td></tr>
+<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp94d44f4084f2c56a84c03e6a422aa76d"></a>Use following functions to list all mount points of a hierarchy with given controller. </p>
+</td></tr>
+<tr class="memitem:ga18a3c6fe7da42b9da96ce34dce1e31b8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__iterators.html#ga18a3c6fe7da42b9da96ce34dce1e31b8">cgroup_get_subsys_mount_point_begin</a> (const char *controller, void **handle, char *path)</td></tr>
+<tr class="separator:ga18a3c6fe7da42b9da96ce34dce1e31b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3d66997158cb8a334317923ad94cc789"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__iterators.html#ga3d66997158cb8a334317923ad94cc789">cgroup_get_subsys_mount_point_next</a> (void **handle, char *path)</td></tr>
+<tr class="separator:ga3d66997158cb8a334317923ad94cc789"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9c9b0f1921c205bd25bfc6c1d20486eb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__iterators.html#ga9c9b0f1921c205bd25bfc6c1d20486eb">cgroup_get_subsys_mount_point_end</a> (void **handle)</td></tr>
+<tr class="separator:ga9c9b0f1921c205bd25bfc6c1d20486eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<p>So-called iterators are a code pattern to retrieve various data from libcgroup in distinct chunks, for example when an application needs to read list of groups in a hierarchy, it uses iterator to get one group at a time. Iterator is opaque to the application, the application sees only <code>void* handle</code> pointer, which is managed internally by <code>libcgroup</code>. Each iterator provides at least these functions:</p><ul>
+<li><code>int <em>iterator_name</em>_begin(void **handle, my_type *item)</code><ul>
+<li>Initialize the iterator, store pointer to it into the <code>handle</code>.</li>
+<li>Return the first element in the iterator, let's say it's <code>my_type</code>.</li>
+<li>Return <code>0</code>, if the operation succeeded.</li>
+<li>Return <a class="el" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba2724c2f0af0d3e3cea66027f6bf2e436">ECGEOF</a>, if the operation succeeded, but the iterator is empty. The value of <code>item</code> is undefined in this case.</li>
+<li>Return any other error code on error.</li>
+</ul>
+</li>
+<li><code>int <em>iterator_name</em>_next(void **handle, my_type *item)</code><ul>
+<li>Advance to next element in the iterator and return it.</li>
+<li>Return <code>0</code>, if the operation succeeded.</li>
+<li>Return <a class="el" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba2724c2f0af0d3e3cea66027f6bf2e436">ECGEOF</a>, if there is no item to advance to, i.e. the iterator is already at its end. The value of <code>item</code> is undefined in this case.</li>
+<li>Return any other error code on error.</li>
+</ul>
+</li>
+<li><p class="startli"><code>void <em>iterator_name</em>_end(void **handle)</code></p><ul>
+<li>Free any data associated with the iterator. This function must be called even when <code><em>iterator_name</em>_begin()</code> fails.</li>
+</ul>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000012">Todo:</a></b></dt><dd>not all iterators follow this pattern, e.g. <a class="el" href="group__group__iterators.html#ga7b19f10c06abb96d8c8ae88a04888a68">cgroup_walk_tree_begin()</a> can result both in a state that <a class="el" href="group__group__iterators.html#ga09a70990837a58e506a264f8c50d4cde">cgroup_walk_tree_end()</a> is not needed and will sigsegv and in a state that <a class="el" href="group__group__iterators.html#ga09a70990837a58e506a264f8c50d4cde">cgroup_walk_tree_end()</a> is needed to free allocated memory. Complete review is needed! </dd></dl>
+<dl class="section user"><dt>Example of iterator usage:</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> *handle; <span class="comment">// our iterator handle</span></div>
+<div class="line">my_type item; <span class="comment">// the data returned by the iterator</span></div>
+<div class="line"><span class="keywordtype">int</span> ret;</div>
+<div class="line">ret = iterator_name_begin(&amp;handle, &amp;item);</div>
+<div class="line"><span class="keywordflow">while</span> (ret == 0) {</div>
+<div class="line">    <span class="comment">// process the item here</span></div>
+<div class="line"> ret = iterator_name_begin(&amp;handle, &amp;item);</div>
+<div class="line">}</div>
+<div class="line"><span class="keywordflow">if</span> (ret != <a class="code" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba2724c2f0af0d3e3cea66027f6bf2e436">ECGEOF</a>) {</div>
+<div class="line">    <span class="comment">// process the error here</span></div>
+<div class="line">}</div>
+<div class="line">iterator_name_end(&amp;handle);</div>
+<div class="ttc" id="agroup__group__errors_html_gga06fc87d81c62e9abb8790b6e5713c55ba2724c2f0af0d3e3cea66027f6bf2e436"><div class="ttname"><a href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba2724c2f0af0d3e3cea66027f6bf2e436">ECGEOF</a></div><div class="ttdeci">@ ECGEOF</div><div class="ttdef"><b>Definition:</b> error.h:67</div></div>
+</div><!-- fragment --> </dd></dl>
+</li>
+</ul>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="ga55d2eac2af703794651d344c073566f5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga55d2eac2af703794651d344c073566f5">&#9670;&nbsp;</a></span>CG_VALUE_MAX</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CG_VALUE_MAX&#160;&#160;&#160;100</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Maximum length of a value in stats file. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Enumeration Type Documentation</h2>
+<a id="ga608b4aa32e2db58fed34771a6a272444"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga608b4aa32e2db58fed34771a6a272444">&#9670;&nbsp;</a></span>cgroup_file_type</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="group__group__iterators.html#ga608b4aa32e2db58fed34771a6a272444">cgroup_file_type</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Type of returned entity. </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga608b4aa32e2db58fed34771a6a272444ad925cc45f1b34fe80e14fc6b05269740"></a>CGROUP_FILE_TYPE_FILE&#160;</td><td class="fielddoc"><p>File. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga608b4aa32e2db58fed34771a6a272444a5418798fc4bf9634429c6af167a0e7c3"></a>CGROUP_FILE_TYPE_DIR&#160;</td><td class="fielddoc"><p>Directory. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga608b4aa32e2db58fed34771a6a272444a24e202c59f318e63ad8cafcc1b4b102b"></a>CGROUP_FILE_TYPE_OTHER&#160;</td><td class="fielddoc"><p>Directory. </p><dl class="todo"><dt><b><a class="el" href="todo.html#_todo000014">Todo:</a></b></dt><dd>really? </dd></dl>
+</td></tr>
+</table>
+
+</div>
+</div>
+<a id="ga29a572cbc0c07e2b02dfa0f1ac0067d3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga29a572cbc0c07e2b02dfa0f1ac0067d3">&#9670;&nbsp;</a></span>cgroup_walk_type</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="group__group__iterators.html#ga29a572cbc0c07e2b02dfa0f1ac0067d3">cgroup_walk_type</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Type of the walk. </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga29a572cbc0c07e2b02dfa0f1ac0067d3af865296e6a0e55cff574fbb132b9f913"></a>CGROUP_WALK_TYPE_PRE_DIR&#160;</td><td class="fielddoc"><p>Pre-order directory walk, return a directory first and then its subdirectories. E.g. directories would be returned in this order: </p><div class="fragment"><div class="line">/</div>
+<div class="line">/group</div>
+<div class="line">/group/subgroup1</div>
+<div class="line">/group/subgroup1/subsubgroup</div>
+<div class="line">/group/subgroup2</div>
+</div><!-- fragment --> </td></tr>
+<tr><td class="fieldname"><a id="gga29a572cbc0c07e2b02dfa0f1ac0067d3abf3c31227768960bd6622d2562aae3e1"></a>CGROUP_WALK_TYPE_POST_DIR&#160;</td><td class="fielddoc"><p>Post-order directory walk, return subdirectories of a directory first and then the directory itself. E.g. directories would be returned in this order: </p><div class="fragment"><div class="line">/group/subgroup1/subsubgroup</div>
+<div class="line">/group/subgroup1</div>
+<div class="line">/group/subgroup2</div>
+<div class="line">/group</div>
+<div class="line">/</div>
+</div><!-- fragment --> </td></tr>
+</table>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="gad48ef653388ca6739a9b6bbb9d7da82e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad48ef653388ca6739a9b6bbb9d7da82e">&#9670;&nbsp;</a></span>cgroup_get_all_controller_begin()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_get_all_controller_begin </td>
+          <td>(</td>
+          <td class="paramtype">void **&#160;</td>
+          <td class="paramname"><em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structcontroller__data.html">controller_data</a> *&#160;</td>
+          <td class="paramname"><em>info</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Read the first of controllers from /proc/cgroups. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">handle</td><td>Handle to be used for iteration. </td></tr>
+    <tr><td class="paramname">info</td><td>The structure which will be filled with controller data. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga0c467d42a2c9a916a0edd339a6d7afc8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga0c467d42a2c9a916a0edd339a6d7afc8">&#9670;&nbsp;</a></span>cgroup_get_all_controller_end()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_get_all_controller_end </td>
+          <td>(</td>
+          <td class="paramtype">void **&#160;</td>
+          <td class="paramname"><em>handle</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Release the iterator </p>
+
+</div>
+</div>
+<a id="ga3d98a04b29b1fe409db1114b7aa76809"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga3d98a04b29b1fe409db1114b7aa76809">&#9670;&nbsp;</a></span>cgroup_get_all_controller_next()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_get_all_controller_next </td>
+          <td>(</td>
+          <td class="paramtype">void **&#160;</td>
+          <td class="paramname"><em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structcontroller__data.html">controller_data</a> *&#160;</td>
+          <td class="paramname"><em>info</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Read next controllers from /proc/cgroups. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">handle</td><td>Handle to be used for iteration. </td></tr>
+    <tr><td class="paramname">info</td><td>The structure which will be filled with controller data. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga5f9f21138f9b18912a16b21a45b53c44"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga5f9f21138f9b18912a16b21a45b53c44">&#9670;&nbsp;</a></span>cgroup_get_controller_begin()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_get_controller_begin </td>
+          <td>(</td>
+          <td class="paramtype">void **&#160;</td>
+          <td class="paramname"><em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structcgroup__mount__point.html">cgroup_mount_point</a> *&#160;</td>
+          <td class="paramname"><em>info</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Read the mount table to give a list where each controller is mounted. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">handle</td><td>Handle to be used for iteration. </td></tr>
+    <tr><td class="paramname">info</td><td>The variable where the path to the controller is stored. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba2724c2f0af0d3e3cea66027f6bf2e436">ECGEOF</a> when no controllers are mounted. </dd></dl>
+
+</div>
+</div>
+<a id="gab485cda2bc9640bacbf61f1953ae750c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gab485cda2bc9640bacbf61f1953ae750c">&#9670;&nbsp;</a></span>cgroup_get_controller_end()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_get_controller_end </td>
+          <td>(</td>
+          <td class="paramtype">void **&#160;</td>
+          <td class="paramname"><em>handle</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Release the iterator. </p>
+
+</div>
+</div>
+<a id="ga926b70423b6c087c21a14670cd23cd7d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga926b70423b6c087c21a14670cd23cd7d">&#9670;&nbsp;</a></span>cgroup_get_controller_next()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_get_controller_next </td>
+          <td>(</td>
+          <td class="paramtype">void **&#160;</td>
+          <td class="paramname"><em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structcgroup__mount__point.html">cgroup_mount_point</a> *&#160;</td>
+          <td class="paramname"><em>info</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Read the next mounted controller. While walking through the mount table, the controllers are returned in order of their mount points, i.e. controllers mounted together in one hierarchy are returned next to each other. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">handle</td><td>Handle to be used for iteration. </td></tr>
+    <tr><td class="paramname">info</td><td>The variable where the path to the controller is stored. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba2724c2f0af0d3e3cea66027f6bf2e436">ECGEOF</a> when all controllers were already returned. </dd></dl>
+
+</div>
+</div>
+<a id="ga18a3c6fe7da42b9da96ce34dce1e31b8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga18a3c6fe7da42b9da96ce34dce1e31b8">&#9670;&nbsp;</a></span>cgroup_get_subsys_mount_point_begin()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_get_subsys_mount_point_begin </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>controller</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void **&#160;</td>
+          <td class="paramname"><em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&#160;</td>
+          <td class="paramname"><em>path</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Read the first mount point of the hierarchy with given controller. The first is the same as the mount point returned by <a class="el" href="group__group__init.html#ga4f061b353321b81869057970d96f09f7">cgroup_get_subsys_mount_point()</a>. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">handle</td><td>Handle to be used for iteration. </td></tr>
+    <tr><td class="paramname">controller</td><td>Controller name. </td></tr>
+    <tr><td class="paramname">path</td><td>Buffer to fill the path into. The buffer must be at least FILENAME_MAX characters long. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga9c9b0f1921c205bd25bfc6c1d20486eb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga9c9b0f1921c205bd25bfc6c1d20486eb">&#9670;&nbsp;</a></span>cgroup_get_subsys_mount_point_end()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_get_subsys_mount_point_end </td>
+          <td>(</td>
+          <td class="paramtype">void **&#160;</td>
+          <td class="paramname"><em>handle</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Release the iterator. </p>
+
+</div>
+</div>
+<a id="ga3d66997158cb8a334317923ad94cc789"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga3d66997158cb8a334317923ad94cc789">&#9670;&nbsp;</a></span>cgroup_get_subsys_mount_point_next()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_get_subsys_mount_point_next </td>
+          <td>(</td>
+          <td class="paramtype">void **&#160;</td>
+          <td class="paramname"><em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&#160;</td>
+          <td class="paramname"><em>path</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Read next mount point of the hierarchy with given controller. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">handle</td><td>Handle to be used for iteration. </td></tr>
+    <tr><td class="paramname">path</td><td>Buffer to fill the path into. The buffer must be at least FILENAME_MAX characters long. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="gad7218154192f733120e1025cc19d0a36"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad7218154192f733120e1025cc19d0a36">&#9670;&nbsp;</a></span>cgroup_get_task_begin()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_get_task_begin </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>cgroup</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>controller</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void **&#160;</td>
+          <td class="paramname"><em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">pid_t *&#160;</td>
+          <td class="paramname"><em>pid</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Read the tasks file to get the list of tasks in a cgroup. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">cgroup</td><td>Name of the cgroup. </td></tr>
+    <tr><td class="paramname">controller</td><td>Name of the cgroup subsystem. </td></tr>
+    <tr><td class="paramname">handle</td><td>Handle to be used in the iteration. </td></tr>
+    <tr><td class="paramname">pid</td><td>The pid read from the tasks file. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba2724c2f0af0d3e3cea66027f6bf2e436">ECGEOF</a> when the group does not contain any tasks. </dd></dl>
+
+</div>
+</div>
+<a id="gaeb955e5f4da551268380b1271d478816"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaeb955e5f4da551268380b1271d478816">&#9670;&nbsp;</a></span>cgroup_get_task_end()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_get_task_end </td>
+          <td>(</td>
+          <td class="paramtype">void **&#160;</td>
+          <td class="paramname"><em>handle</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Release the iterator. </p>
+
+</div>
+</div>
+<a id="gaf3a0364682b7449ddccfb0862bbb565e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf3a0364682b7449ddccfb0862bbb565e">&#9670;&nbsp;</a></span>cgroup_get_task_next()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_get_task_next </td>
+          <td>(</td>
+          <td class="paramtype">void **&#160;</td>
+          <td class="paramname"><em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">pid_t *&#160;</td>
+          <td class="paramname"><em>pid</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Read the next task value. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">handle</td><td>The handle used for iterating. </td></tr>
+    <tr><td class="paramname">pid</td><td>The variable where the value will be stored.</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba2724c2f0af0d3e3cea66027f6bf2e436">ECGEOF</a> when the iterator finishes getting the list of tasks. </dd></dl>
+
+</div>
+</div>
+<a id="ga1138e47f124f0f634586db5e0c4ae5de"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga1138e47f124f0f634586db5e0c4ae5de">&#9670;&nbsp;</a></span>cgroup_read_stats_begin()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_read_stats_begin </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>controller</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>path</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void **&#160;</td>
+          <td class="paramname"><em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structcgroup__stat.html">cgroup_stat</a> *&#160;</td>
+          <td class="paramname"><em>stat</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Read the statistics values (= <code>stats</code> parameter) for the specified controller and control group. One line is returned per <a class="el" href="group__group__iterators.html#ga1138e47f124f0f634586db5e0c4ae5de">cgroup_read_stats_begin()</a> and <a class="el" href="group__group__iterators.html#gaf95587508fc15d74fd5ed0df58024be7">cgroup_read_stats_next()</a> call. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">controller</td><td>Name of the controller for which stats are requested. </td></tr>
+    <tr><td class="paramname">path</td><td>Path to control group, relative to hierarchy root. </td></tr>
+    <tr><td class="paramname">handle</td><td>Handle to be used during iteration. </td></tr>
+    <tr><td class="paramname">stat</td><td>Returned first item in the stats file. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba2724c2f0af0d3e3cea66027f6bf2e436">ECGEOF</a> when the stats file is empty. </dd></dl>
+
+</div>
+</div>
+<a id="gaba386d9db6cadc6ad85c2552f63447bb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaba386d9db6cadc6ad85c2552f63447bb">&#9670;&nbsp;</a></span>cgroup_read_stats_end()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_read_stats_end </td>
+          <td>(</td>
+          <td class="paramtype">void **&#160;</td>
+          <td class="paramname"><em>handle</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Release the iterator. </p>
+
+</div>
+</div>
+<a id="gaf95587508fc15d74fd5ed0df58024be7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf95587508fc15d74fd5ed0df58024be7">&#9670;&nbsp;</a></span>cgroup_read_stats_next()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_read_stats_next </td>
+          <td>(</td>
+          <td class="paramtype">void **&#160;</td>
+          <td class="paramname"><em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structcgroup__stat.html">cgroup_stat</a> *&#160;</td>
+          <td class="paramname"><em>stat</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Read the next stat value. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">handle</td><td>Handle to be used during iteration. </td></tr>
+    <tr><td class="paramname">stat</td><td>Returned next item in the stats file. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba2724c2f0af0d3e3cea66027f6bf2e436">ECGEOF</a> when the iterator finishes getting the list of stats. </dd></dl>
+
+</div>
+</div>
+<a id="ga73edb115af6779644d3371b12cf09140"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga73edb115af6779644d3371b12cf09140">&#9670;&nbsp;</a></span>cgroup_read_value_begin()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_read_value_begin </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>controller</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>path</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&#160;</td>
+          <td class="paramname"><em>name</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void **&#160;</td>
+          <td class="paramname"><em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&#160;</td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>max</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Read the value of the given variable for the specified controller and control group. The value is read up to newline character or at most max-1 characters, whichever comes first (i.e. similar to fgets()). </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">controller</td><td>Name of the controller for which stats are requested. </td></tr>
+    <tr><td class="paramname">path</td><td>Path to control group, relative to hierarchy root. </td></tr>
+    <tr><td class="paramname">name</td><td>is variable name. </td></tr>
+    <tr><td class="paramname">handle</td><td>Handle to be used during iteration. </td></tr>
+    <tr><td class="paramname">buffer</td><td>Buffer to read the value into. The buffer is always zero-terminated. </td></tr>
+    <tr><td class="paramname">max</td><td>Maximal lenght of the buffer </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba2724c2f0af0d3e3cea66027f6bf2e436">ECGEOF</a> when the stats file is empty. </dd></dl>
+
+</div>
+</div>
+<a id="gad348f041e283860cbf6bcea567e23a21"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad348f041e283860cbf6bcea567e23a21">&#9670;&nbsp;</a></span>cgroup_read_value_end()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_read_value_end </td>
+          <td>(</td>
+          <td class="paramtype">void **&#160;</td>
+          <td class="paramname"><em>handle</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Release the iterator. </p>
+
+</div>
+</div>
+<a id="gaced2fe331f19d599a3270db2440847cc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaced2fe331f19d599a3270db2440847cc">&#9670;&nbsp;</a></span>cgroup_read_value_next()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_read_value_next </td>
+          <td>(</td>
+          <td class="paramtype">void **&#160;</td>
+          <td class="paramname"><em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&#160;</td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>max</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Read the next string from the given variable handle which is generated by <a class="el" href="group__group__iterators.html#ga1138e47f124f0f634586db5e0c4ae5de">cgroup_read_stats_begin()</a> function. the value is read up to newline character or at most max-1 characters, whichever comes first (i.e. similar to fgets()) per <a class="el" href="group__group__iterators.html#gaf95587508fc15d74fd5ed0df58024be7">cgroup_read_stats_next()</a> call </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">handle</td><td>Handle to be used during iteration. </td></tr>
+    <tr><td class="paramname">data</td><td>returned the string. </td></tr>
+    <tr><td class="paramname">buffer</td><td>Buffer to read the value into. The buffer is always zero-terminated. </td></tr>
+    <tr><td class="paramname">max</td><td>Maximal lenght of the buffer </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba2724c2f0af0d3e3cea66027f6bf2e436">ECGEOF</a> when the iterator finishes getting the list of stats. </dd></dl>
+
+</div>
+</div>
+<a id="ga7b19f10c06abb96d8c8ae88a04888a68"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga7b19f10c06abb96d8c8ae88a04888a68">&#9670;&nbsp;</a></span>cgroup_walk_tree_begin()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_walk_tree_begin </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>controller</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>base_path</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>depth</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void **&#160;</td>
+          <td class="paramname"><em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structcgroup__file__info.html">cgroup_file_info</a> *&#160;</td>
+          <td class="paramname"><em>info</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int *&#160;</td>
+          <td class="paramname"><em>base_level</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Walk through the directory tree for the specified controller. The directory representing <code>base_path</code> is returned in <code>info</code>. Use <a class="el" href="group__group__iterators.html#ga645ec7a6206dffb32667e7a0e148edc8">cgroup_walk_tree_set_flags()</a> to specify, in which order should be next directories returned. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">controller</td><td>Name of the controller, for which we want to walk the directory tree. </td></tr>
+    <tr><td class="paramname">base_path</td><td>Begin walking from this path. Use "/" to walk through full hierarchy. </td></tr>
+    <tr><td class="paramname">depth</td><td>The maximum depth to which the function should walk, 0 implies all the way down. </td></tr>
+    <tr><td class="paramname">handle</td><td>Handle to be used during iteration. </td></tr>
+    <tr><td class="paramname">info</td><td>Info filled and returned about directory information. </td></tr>
+    <tr><td class="paramname">base_level</td><td>Opaque integer which you must pass to subsequent cgroup_walk_tree_next. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000013">Todo:</a></b></dt><dd>why base_level is not hidden in **handle? </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba2724c2f0af0d3e3cea66027f6bf2e436">ECGEOF</a> when there is no node. </dd></dl>
+
+</div>
+</div>
+<a id="ga09a70990837a58e506a264f8c50d4cde"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga09a70990837a58e506a264f8c50d4cde">&#9670;&nbsp;</a></span>cgroup_walk_tree_end()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_walk_tree_end </td>
+          <td>(</td>
+          <td class="paramtype">void **&#160;</td>
+          <td class="paramname"><em>handle</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Release the iterator. </p>
+
+</div>
+</div>
+<a id="ga527f5499b0aa04d325074435baebdff1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga527f5499b0aa04d325074435baebdff1">&#9670;&nbsp;</a></span>cgroup_walk_tree_next()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_walk_tree_next </td>
+          <td>(</td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>depth</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void **&#160;</td>
+          <td class="paramname"><em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structcgroup__file__info.html">cgroup_file_info</a> *&#160;</td>
+          <td class="paramname"><em>info</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>base_level</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Get the next directory in the walk. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">depth</td><td>The maximum depth to which the function should walk, 0 implies all the way down. </td></tr>
+    <tr><td class="paramname">handle</td><td>Handle to be used during iteration. </td></tr>
+    <tr><td class="paramname">info</td><td>Info filled and returned about the next directory. </td></tr>
+    <tr><td class="paramname">base_level</td><td>Value of base_level returned by <a class="el" href="group__group__iterators.html#ga7b19f10c06abb96d8c8ae88a04888a68">cgroup_walk_tree_begin()</a>. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba2724c2f0af0d3e3cea66027f6bf2e436">ECGEOF</a> when we are done walking through the nodes. </dd></dl>
+
+</div>
+</div>
+<a id="ga645ec7a6206dffb32667e7a0e148edc8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga645ec7a6206dffb32667e7a0e148edc8">&#9670;&nbsp;</a></span>cgroup_walk_tree_set_flags()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_walk_tree_set_flags </td>
+          <td>(</td>
+          <td class="paramtype">void **&#160;</td>
+          <td class="paramname"><em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>flags</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Set the flags for walk_tree. Currently available flags are in <a class="el" href="group__group__iterators.html#ga29a572cbc0c07e2b02dfa0f1ac0067d3">cgroup_walk_type</a> enum. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">handle</td><td>Handle of the iterator. </td></tr>
+    <tr><td class="paramname">flags</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/group__group__log.html b/group__group__log.html
new file mode 100644 (file)
index 0000000..e1fb8cd
--- /dev/null
@@ -0,0 +1,297 @@
+<!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>libcgroup: 7. Logging</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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 -->
+<!-- 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="headertitle">
+<div class="title">7. Logging</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader">Logging</h2></td></tr>
+<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp8db7df66ab1d7ab5f1dc947acdb5fae4"></a>Libcgroup allows applications to register a callback function which libcgroup will call when it wants to log something. Each log message has associated a log level. As described in previous chapter, most libcgroup functions return an error code, which described root cause of the failure and log messages might provide further details about these failures and other notable events.</p>
+<dl class="section user"><dt></dt><dd>The logging callback can be set at any time, but setting the callback before any other libcgroup function (including <a class="el" href="group__group__init.html#ga37740e2f5f298edf13e18fcd7632b75a">cgroup_init()</a>) is highly recommended. If no logger is set before <a class="el" href="group__group__init.html#ga37740e2f5f298edf13e18fcd7632b75a">cgroup_init()</a> is called, default logger is automatically set, logging CGROUP_LOG_ERROR messages to stdout.</dd></dl>
+<dl class="section user"><dt>Setting log level</dt><dd>Some of the functions below set the log level as integer. Application can set directly a value of enum <a class="el" href="group__group__log.html#ga98b7aea5d23411e70c7e3da54d90233a">cgroup_log_level</a> or use value <code>-1</code> to set the log level automatically. In this case, libcgroup inspects environment variable <code>CGROUP_LOGLEVEL</code> if it is set and contains any of these values: <code>ERROR</code>, <code>WARNING</code>, <code>INFO</code>, <code>DEBUG</code> or integer number representing value from enum <a class="el" href="group__group__log.html#ga98b7aea5d23411e70c7e3da54d90233a">cgroup_log_level</a>. If <code>CGROUP_LOGLEVEL</code> is not set or its value is not valid, <code>CGROUP_LOG_ERROR</code> is set as default log level.</dd></dl>
+<dl class="section user"><dt>Example:</dt><dd>Following short example shows custom libcgroup logger sending all log messages to <code>stderr</code>: <div class="fragment"><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> my_logger(<span class="keywordtype">void</span> *userdata, <span class="keywordtype">int</span> level, <span class="keyword">const</span> <span class="keywordtype">char</span> *fmt, va_list ap)</div>
+<div class="line">{</div>
+<div class="line"> vfprintf(stderr, fmt, ap);</div>
+<div class="line">}</div>
+<div class="line"> </div>
+<div class="line"><span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv)</div>
+<div class="line">{</div>
+<div class="line"> <span class="keywordtype">int</span> ret;</div>
+<div class="line"> </div>
+<div class="line"> <a class="code" href="group__group__log.html#ga76d7032206f9b9d1c0be1a71a68c43d0">cgroup_set_logger</a>(my_logger, -1, NULL);</div>
+<div class="line"> ret = <a class="code" href="group__group__init.html#ga37740e2f5f298edf13e18fcd7632b75a">cgroup_init</a>();</div>
+<div class="line"> <span class="keywordflow">if</span> (ret) {</div>
+<div class="line">    ...</div>
+<div class="line"> }</div>
+<div class="line"> ...</div>
+<div class="ttc" id="agroup__group__init_html_ga37740e2f5f298edf13e18fcd7632b75a"><div class="ttname"><a href="group__group__init.html#ga37740e2f5f298edf13e18fcd7632b75a">cgroup_init</a></div><div class="ttdeci">int cgroup_init(void)</div><div class="ttdef"><b>Definition:</b> api.c:1271</div></div>
+<div class="ttc" id="agroup__group__log_html_ga76d7032206f9b9d1c0be1a71a68c43d0"><div class="ttname"><a href="group__group__log.html#ga76d7032206f9b9d1c0be1a71a68c43d0">cgroup_set_logger</a></div><div class="ttdeci">void cgroup_set_logger(cgroup_logger_callback logger, int loglevel, void *userdata)</div><div class="ttdef"><b>Definition:</b> log.c:48</div></div>
+</div><!-- fragment --> </dd></dl>
+</td></tr>
+<tr class="memitem:ga98b7aea5d23411e70c7e3da54d90233a"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__log.html#ga98b7aea5d23411e70c7e3da54d90233a">cgroup_log_level</a> { <a class="el" href="group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aa4dd44215cd3553e79dbf91eb9ca418a2">CGROUP_LOG_ERROR</a> = 1
+, <a class="el" href="group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aaa99ec9e854a543901bddf854d1960057">CGROUP_LOG_WARNING</a>
+, <a class="el" href="group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aad66ab51dba078ffc3b1c6d397053f9e2">CGROUP_LOG_INFO</a>
+, <a class="el" href="group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aa86b4157fb38d9f8053c6b7429bd26c72">CGROUP_LOG_DEBUG</a>
+ }</td></tr>
+<tr class="separator:ga98b7aea5d23411e70c7e3da54d90233a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa1da90e8ef64cc58c7ad523bdd6679e6"><td class="memItemLeft" align="right" valign="top"><a id="gaa1da90e8ef64cc58c7ad523bdd6679e6"></a>
+typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><b>cgroup_logger_callback</b>) (void *userdata, int level, const char *fmt, va_list ap)</td></tr>
+<tr class="separator:gaa1da90e8ef64cc58c7ad523bdd6679e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga76d7032206f9b9d1c0be1a71a68c43d0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__log.html#ga76d7032206f9b9d1c0be1a71a68c43d0">cgroup_set_logger</a> (cgroup_logger_callback logger, int loglevel, void *userdata)</td></tr>
+<tr class="separator:ga76d7032206f9b9d1c0be1a71a68c43d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab1457ce518dcde0b9f3c14ec9efa2de7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__log.html#gab1457ce518dcde0b9f3c14ec9efa2de7">cgroup_set_default_logger</a> (int loglevel)</td></tr>
+<tr class="separator:gab1457ce518dcde0b9f3c14ec9efa2de7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaac5fe2352800ff62465a5abe649d5b8c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__log.html#gaac5fe2352800ff62465a5abe649d5b8c">cgroup_set_loglevel</a> (int loglevel)</td></tr>
+<tr class="separator:gaac5fe2352800ff62465a5abe649d5b8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab514ad5d83422ddfe479bdf651e80958"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__log.html#gab514ad5d83422ddfe479bdf651e80958">cgroup_log</a> (int loglevel, const char *fmt,...)</td></tr>
+<tr class="separator:gab514ad5d83422ddfe479bdf651e80958"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa364a06aee0e99228a1e6a26b25a9794"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__log.html#gaa364a06aee0e99228a1e6a26b25a9794">cgroup_parse_log_level_str</a> (const char *levelstr)</td></tr>
+<tr class="separator:gaa364a06aee0e99228a1e6a26b25a9794"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<h2 class="groupheader">Enumeration Type Documentation</h2>
+<a id="ga98b7aea5d23411e70c7e3da54d90233a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga98b7aea5d23411e70c7e3da54d90233a">&#9670;&nbsp;</a></span>cgroup_log_level</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="group__group__log.html#ga98b7aea5d23411e70c7e3da54d90233a">cgroup_log_level</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Level of importance of a log message. </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga98b7aea5d23411e70c7e3da54d90233aa4dd44215cd3553e79dbf91eb9ca418a2"></a>CGROUP_LOG_ERROR&#160;</td><td class="fielddoc"><p>Something serious happened and libcgroup failed to perform requested operation. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga98b7aea5d23411e70c7e3da54d90233aaa99ec9e854a543901bddf854d1960057"></a>CGROUP_LOG_WARNING&#160;</td><td class="fielddoc"><p>Something bad happened but libcgroup recovered from the error. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga98b7aea5d23411e70c7e3da54d90233aad66ab51dba078ffc3b1c6d397053f9e2"></a>CGROUP_LOG_INFO&#160;</td><td class="fielddoc"><p>Something interesting happened and the message might be useful to the user. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga98b7aea5d23411e70c7e3da54d90233aa86b4157fb38d9f8053c6b7429bd26c72"></a>CGROUP_LOG_DEBUG&#160;</td><td class="fielddoc"><p>Debugging messages useful to libcgroup developers. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="gab514ad5d83422ddfe479bdf651e80958"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gab514ad5d83422ddfe479bdf651e80958">&#9670;&nbsp;</a></span>cgroup_log()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void cgroup_log </td>
+          <td>(</td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>loglevel</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>fmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">&#160;</td>
+          <td class="paramname"><em>...</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Libcgroup log function. This is for applications which are too lazy to set up their own complex logging and miss-use libcgroup for that purpose. I.e. this function should be used only by simple command-line tools. This logging automatically benefits from CGROUP_LOGLEVEL env. variable. </p>
+
+</div>
+</div>
+<a id="gaa364a06aee0e99228a1e6a26b25a9794"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaa364a06aee0e99228a1e6a26b25a9794">&#9670;&nbsp;</a></span>cgroup_parse_log_level_str()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_parse_log_level_str </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>levelstr</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Parse levelstr string for information about desired loglevel. The levelstr is usually a value of the CGROUP_LOGLEVEL environment variable. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">levelstr</td><td>String containing desired loglevel. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="gab1457ce518dcde0b9f3c14ec9efa2de7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gab1457ce518dcde0b9f3c14ec9efa2de7">&#9670;&nbsp;</a></span>cgroup_set_default_logger()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void cgroup_set_default_logger </td>
+          <td>(</td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>loglevel</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Set libcgroup logging to stdout. All messages with the given loglevel or below will be sent to standard output. Previous logger set by <a class="el" href="group__group__log.html#ga76d7032206f9b9d1c0be1a71a68c43d0">cgroup_set_logger()</a> is replaced.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">loglevel</td><td>The log level. Use value -1 to automatically discover the level from CGROUP_LOGLEVEL environment variable. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga76d7032206f9b9d1c0be1a71a68c43d0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga76d7032206f9b9d1c0be1a71a68c43d0">&#9670;&nbsp;</a></span>cgroup_set_logger()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void cgroup_set_logger </td>
+          <td>(</td>
+          <td class="paramtype">cgroup_logger_callback&#160;</td>
+          <td class="paramname"><em>logger</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>loglevel</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&#160;</td>
+          <td class="paramname"><em>userdata</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Set libcgroup logging callback. All log messages with equal or lower log level will be sent to the application's callback. There can be only one callback logger set, the previous callback is replaced with the new one by calling this function. Use NULL as the logger callback to completely disable libcgroup logging.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">logger</td><td>The callback. </td></tr>
+    <tr><td class="paramname">loglevel</td><td>The log level. Use value -1 to automatically discover the level from CGROUP_LOGLEVEL environment variable. </td></tr>
+    <tr><td class="paramname">userdata</td><td>Application's data which will be provided back to the callback. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="gaac5fe2352800ff62465a5abe649d5b8c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaac5fe2352800ff62465a5abe649d5b8c">&#9670;&nbsp;</a></span>cgroup_set_loglevel()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void cgroup_set_loglevel </td>
+          <td>(</td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>loglevel</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Change current loglevel. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">loglevel</td><td>The log level. Use value -1 to automatically discover the level from CGROUP_LOGLEVEL environment variable. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/group__group__tasks.html b/group__group__tasks.html
new file mode 100644 (file)
index 0000000..837b581
--- /dev/null
@@ -0,0 +1,555 @@
+<!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>libcgroup: 4. Manipulation with tasks</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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 -->
+<!-- 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="headertitle">
+<div class="title">4. Manipulation with tasks</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader">Simple task assignment</h2></td></tr>
+<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp97ba257d9453e92bab382c7df8d94b24"></a>Applications can use following functions to simply put a task into given control group and find a groups where given tasks is. </p>
+</td></tr>
+<tr class="memitem:ga43414ac2b1fc73bbb46b6278c7500188"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__tasks.html#ga43414ac2b1fc73bbb46b6278c7500188">cgroup_attach_task</a> (struct <a class="el" href="structcgroup.html">cgroup</a> *<a class="el" href="structcgroup.html">cgroup</a>)</td></tr>
+<tr class="separator:ga43414ac2b1fc73bbb46b6278c7500188"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9c7532681986d156ac3f6bac1fcf6aab"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__tasks.html#ga9c7532681986d156ac3f6bac1fcf6aab">cgroup_attach_task_pid</a> (struct <a class="el" href="structcgroup.html">cgroup</a> *<a class="el" href="structcgroup.html">cgroup</a>, pid_t tid)</td></tr>
+<tr class="separator:ga9c7532681986d156ac3f6bac1fcf6aab"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2d4677baef780c003fc6fba6b5dc78f2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__tasks.html#ga2d4677baef780c003fc6fba6b5dc78f2">cgroup_change_cgroup_path</a> (const char *path, pid_t pid, const char *const controllers[])</td></tr>
+<tr class="separator:ga2d4677baef780c003fc6fba6b5dc78f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6f2c17b99cf2526cb46df4769eb3f46e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__tasks.html#ga6f2c17b99cf2526cb46df4769eb3f46e">cgroup_get_current_controller_path</a> (pid_t pid, const char *controller, char **current_path)</td></tr>
+<tr class="separator:ga6f2c17b99cf2526cb46df4769eb3f46e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader">Rules</h2></td></tr>
+<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp1f4da964f8eab62e96e8cfe406e44364"></a><code>libcgroup</code> can move tasks to control groups using simple rules, loaded from configuration file. See cgrules.conf man page to see format of the file. Following functions can be used to load these rules from a file. </p>
+</td></tr>
+<tr class="memitem:gad7fa5a2c4db08d31da5bfbecaf482d3d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__tasks.html#gad7fa5a2c4db08d31da5bfbecaf482d3d">cgroup_init_rules_cache</a> (void)</td></tr>
+<tr class="separator:gad7fa5a2c4db08d31da5bfbecaf482d3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf81ebd9cb5575c75b4c85f385ebda1ce"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__tasks.html#gaf81ebd9cb5575c75b4c85f385ebda1ce">cgroup_reload_cached_rules</a> (void)</td></tr>
+<tr class="separator:gaf81ebd9cb5575c75b4c85f385ebda1ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac4e3f29cfbdc3d77f08c9fe60857274a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__tasks.html#gac4e3f29cfbdc3d77f08c9fe60857274a">cgroup_print_rules_config</a> (FILE *fp)</td></tr>
+<tr class="separator:gac4e3f29cfbdc3d77f08c9fe60857274a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader">Rule based task assignment</h2></td></tr>
+<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp40f06dbe04f1172d30d928c8f15ab1a1"></a><code>libcgroup</code> can move tasks to control groups using simple rules, loaded from configuration file. See cgrules.conf man page to see format of the file. Applications can move tasks to control groups based on these rules using following functions. </p>
+</td></tr>
+<tr class="memitem:gafc69658b012b6f1c11ba078ffccd70a2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__tasks.html#gafc69658b012b6f1c11ba078ffccd70a2">cgroup_change_all_cgroups</a> (void)</td></tr>
+<tr class="separator:gafc69658b012b6f1c11ba078ffccd70a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga368e7b8e19b3943ab6fb50e76a09e6ea"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__tasks.html#ga368e7b8e19b3943ab6fb50e76a09e6ea">cgroup_change_cgroup_flags</a> (uid_t uid, gid_t gid, const char *procname, pid_t pid, int flags)</td></tr>
+<tr class="separator:ga368e7b8e19b3943ab6fb50e76a09e6ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae472183a7c9a37826ef15c77014c47fb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__tasks.html#gae472183a7c9a37826ef15c77014c47fb">cgroup_change_cgroup_uid_gid_flags</a> (uid_t uid, gid_t gid, pid_t pid, int flags)</td></tr>
+<tr class="separator:gae472183a7c9a37826ef15c77014c47fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5eab78a922dbacd368360f03c70146be"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__tasks.html#ga5eab78a922dbacd368360f03c70146be">cgroup_change_cgroup_uid_gid</a> (uid_t uid, gid_t gid, pid_t pid)</td></tr>
+<tr class="separator:ga5eab78a922dbacd368360f03c70146be"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader">Communication with cgrulesengd daemon</h2></td></tr>
+<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrpe4f83f250bc6912276cdf33ed1694119"></a>Users can use cgrulesengd daemon to move tasks to groups based on the rules automatically when they change their UID, GID or executable name. The daemon allows tasks to be 'sticky', i.e. all rules are ignored for these tasks and the daemon never moves them. </p>
+</td></tr>
+<tr class="memitem:ga64f7967d6d5edfff9afddaa6a6974b1c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__tasks.html#ga64f7967d6d5edfff9afddaa6a6974b1c">cgroup_register_unchanged_process</a> (pid_t pid, int flags)</td></tr>
+<tr class="separator:ga64f7967d6d5edfff9afddaa6a6974b1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="ga43414ac2b1fc73bbb46b6278c7500188"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga43414ac2b1fc73bbb46b6278c7500188">&#9670;&nbsp;</a></span>cgroup_attach_task()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_attach_task </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup.html">cgroup</a> *&#160;</td>
+          <td class="paramname"><em>cgroup</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Move current task (=thread) to given control group. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">cgroup</td><td>Destination control group.</td></tr>
+  </table>
+  </dd>
+</dl>
+<p>cgroup_attach_task is used to attach the current thread to a cgroup. struct cgroup *cgroup: The cgroup to assign the current thread to.</p>
+<p>See cg_attach_task_pid for return values. </p>
+
+</div>
+</div>
+<a id="ga9c7532681986d156ac3f6bac1fcf6aab"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga9c7532681986d156ac3f6bac1fcf6aab">&#9670;&nbsp;</a></span>cgroup_attach_task_pid()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_attach_task_pid </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structcgroup.html">cgroup</a> *&#160;</td>
+          <td class="paramname"><em>cgroup</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">pid_t&#160;</td>
+          <td class="paramname"><em>tid</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Move given task (=thread) to to given control group. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">cgroup</td><td>Destination control group. </td></tr>
+    <tr><td class="paramname">tid</td><td>The task to move.</td></tr>
+  </table>
+  </dd>
+</dl>
+<p>cgroup_attach_task_pid is used to assign tasks to a cgroup. struct cgroup *cgroup: The cgroup to assign the thread to. pid_t tid: The thread to be assigned to the cgroup.</p>
+<p>returns 0 on success. returns ECGROUPNOTOWNER if the caller does not have access to the cgroup. returns ECGROUPNOTALLOWED for other causes of failure. </p>
+
+</div>
+</div>
+<a id="gafc69658b012b6f1c11ba078ffccd70a2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gafc69658b012b6f1c11ba078ffccd70a2">&#9670;&nbsp;</a></span>cgroup_change_all_cgroups()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_change_all_cgroups </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Changes the cgroup of all running PIDs based on the rules in the config file. If a rules exists for a PID, then the PID is placed in the correct group.</p>
+<p>This function may be called after creating new control groups to move running PIDs into the newly created control groups. </p><dl class="section return"><dt>Returns</dt><dd>0 on success, &lt; 0 on error </dd></dl>
+
+</div>
+</div>
+<a id="ga368e7b8e19b3943ab6fb50e76a09e6ea"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga368e7b8e19b3943ab6fb50e76a09e6ea">&#9670;&nbsp;</a></span>cgroup_change_cgroup_flags()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_change_cgroup_flags </td>
+          <td>(</td>
+          <td class="paramtype">uid_t&#160;</td>
+          <td class="paramname"><em>uid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">gid_t&#160;</td>
+          <td class="paramname"><em>gid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>procname</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">pid_t&#160;</td>
+          <td class="paramname"><em>pid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>flags</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Changes the cgroup of a program based on the rules in the config file. If a rule exists for the given UID, GID or PROCESS NAME, then the given PID is placed into the correct group. By default, this function parses the configuration file each time it is called.</p>
+<p>The flags can alter the behavior of this function: CGFLAG_USECACHE: Use cached rules instead of parsing the config file CGFLAG_USE_TEMPLATE_CACHE: Use cached templates instead of parsing the config file</p>
+<p>This function may NOT be thread safe. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">uid</td><td>The UID to match. </td></tr>
+    <tr><td class="paramname">gid</td><td>The GID to match. </td></tr>
+    <tr><td class="paramname">procname</td><td>The PROCESS NAME to match. </td></tr>
+    <tr><td class="paramname">pid</td><td>The PID of the process to move. </td></tr>
+    <tr><td class="paramname">flags</td><td>Bit flags to change the behavior, as defined in enum #cgflags. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000017">Todo:</a></b></dt><dd>Determine thread-safeness and fix of not safe. </dd></dl>
+
+</div>
+</div>
+<a id="ga2d4677baef780c003fc6fba6b5dc78f2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga2d4677baef780c003fc6fba6b5dc78f2">&#9670;&nbsp;</a></span>cgroup_change_cgroup_path()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_change_cgroup_path </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>dest</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">pid_t&#160;</td>
+          <td class="paramname"><em>pid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *const&#160;</td>
+          <td class="paramname"><em>controllers</em>[]&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Changes the cgroup of a task based on the path provided. In this case, the user must already know into which cgroup the task should be placed and no rules will be parsed.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">path</td><td>Name of the destination group. </td></tr>
+    <tr><td class="paramname">pid</td><td>The task to move. </td></tr>
+    <tr><td class="paramname">controllers</td><td>List of controllers.</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000015">Todo:</a></b></dt><dd>should this function be really public? </dd></dl>
+<p>Changes the cgroup of a program based on the path provided. In this case, the user must already know into which cgroup the task should be placed and no rules will be parsed.</p>
+<p>returns 0 on success. </p>
+
+</div>
+</div>
+<a id="ga5eab78a922dbacd368360f03c70146be"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga5eab78a922dbacd368360f03c70146be">&#9670;&nbsp;</a></span>cgroup_change_cgroup_uid_gid()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_change_cgroup_uid_gid </td>
+          <td>(</td>
+          <td class="paramtype">uid_t&#160;</td>
+          <td class="paramname"><em>uid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">gid_t&#160;</td>
+          <td class="paramname"><em>gid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">pid_t&#160;</td>
+          <td class="paramname"><em>pid</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Provides backwards-compatibility with older versions of the API. This function is deprecated, and <a class="el" href="group__group__tasks.html#gae472183a7c9a37826ef15c77014c47fb">cgroup_change_cgroup_uid_gid_flags()</a> should be used instead. In fact, this function simply calls the newer one with flags set to 0 (none). </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">uid</td><td>The UID to match. </td></tr>
+    <tr><td class="paramname">gid</td><td>The GID to match. </td></tr>
+    <tr><td class="paramname">pid</td><td>The PID of the process to move.</td></tr>
+  </table>
+  </dd>
+</dl>
+<p>Provides backwards-compatibility with older versions of the API. This function is deprecated, and <a class="el" href="group__group__tasks.html#gae472183a7c9a37826ef15c77014c47fb">cgroup_change_cgroup_uid_gid_flags()</a> should be used instead. In fact, this function simply calls the newer one with flags set to 0 (none). </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">uid</td><td>The UID to match </td></tr>
+    <tr><td class="paramname">gid</td><td>The GID to match </td></tr>
+    <tr><td class="paramname">pid</td><td>The PID of the process to move </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 on success, &gt; 0 on error </dd></dl>
+
+</div>
+</div>
+<a id="gae472183a7c9a37826ef15c77014c47fb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae472183a7c9a37826ef15c77014c47fb">&#9670;&nbsp;</a></span>cgroup_change_cgroup_uid_gid_flags()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_change_cgroup_uid_gid_flags </td>
+          <td>(</td>
+          <td class="paramtype">uid_t&#160;</td>
+          <td class="paramname"><em>uid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">gid_t&#160;</td>
+          <td class="paramname"><em>gid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">pid_t&#160;</td>
+          <td class="paramname"><em>pid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>flags</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Changes the cgroup of a program based on the rules in the config file. If a rule exists for the given UID or GID, then the given PID is placed into the correct group. By default, this function parses the configuration file each time it is called.</p>
+<p>This function may NOT be thread safe. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">uid</td><td>The UID to match. </td></tr>
+    <tr><td class="paramname">gid</td><td>The GID to match. </td></tr>
+    <tr><td class="paramname">pid</td><td>The PID of the process to move. </td></tr>
+    <tr><td class="paramname">flags</td><td>Bit flags to change the behavior, as defined in enum #cgflags. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000018">Todo:</a></b></dt><dd>Determine thread-safeness and fix if not safe. </dd></dl>
+
+</div>
+</div>
+<a id="ga6f2c17b99cf2526cb46df4769eb3f46e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga6f2c17b99cf2526cb46df4769eb3f46e">&#9670;&nbsp;</a></span>cgroup_get_current_controller_path()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_get_current_controller_path </td>
+          <td>(</td>
+          <td class="paramtype">pid_t&#160;</td>
+          <td class="paramname"><em>pid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>controller</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char **&#160;</td>
+          <td class="paramname"><em>current_path</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Get the current control group path where the given task is. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">pid</td><td>The task to find. </td></tr>
+    <tr><td class="paramname">controller</td><td>The controller (hierarchy), where to find the task. </td></tr>
+    <tr><td class="paramname">current_path</td><td>The path to control group, where the task has been found. The patch is relative to the root of the hierarchy. The caller must free this memory.</td></tr>
+  </table>
+  </dd>
+</dl>
+<p>cgroup_get_current_controller_path @pid: pid of the current process for which the path is to be determined @controller: name of the controller for which to determine current path @current_path: a pointer that is filled with the value of the current path as seen in /proc/&lt;pid&gt;/cgroup </p>
+
+</div>
+</div>
+<a id="gad7fa5a2c4db08d31da5bfbecaf482d3d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad7fa5a2c4db08d31da5bfbecaf482d3d">&#9670;&nbsp;</a></span>cgroup_init_rules_cache()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_init_rules_cache </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Initializes the rules cache and load it from /etc/cgrules.conf. </p><dl class="todo"><dt><b><a class="el" href="todo.html#_todo000016">Todo:</a></b></dt><dd>add parameter with the filename? </dd></dl>
+<p>Initializes the rules cache. </p><dl class="section return"><dt>Returns</dt><dd>0 on success, &gt; 0 on error </dd></dl>
+
+</div>
+</div>
+<a id="gac4e3f29cfbdc3d77f08c9fe60857274a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gac4e3f29cfbdc3d77f08c9fe60857274a">&#9670;&nbsp;</a></span>cgroup_print_rules_config()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void cgroup_print_rules_config </td>
+          <td>(</td>
+          <td class="paramtype">FILE *&#160;</td>
+          <td class="paramname"><em>fp</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Print the cached rules table. This function should be called only after first calling cgroup_parse_config(), but it will work with an empty rule list. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">fp</td><td>Destination file, where the rules will be printed.</td></tr>
+  </table>
+  </dd>
+</dl>
+<p>Print the cached rules table. This function should be called only after first calling cgroup_parse_config(), but it will work with an empty rule list. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">fp</td><td>The file stream to print to </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga64f7967d6d5edfff9afddaa6a6974b1c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga64f7967d6d5edfff9afddaa6a6974b1c">&#9670;&nbsp;</a></span>cgroup_register_unchanged_process()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_register_unchanged_process </td>
+          <td>(</td>
+          <td class="paramtype">pid_t&#160;</td>
+          <td class="paramname"><em>pid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>flags</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Register the unchanged process to a cgrulesengd daemon. This process is never moved to another control group by the daemon. If the daemon does not work, this function returns 0 as success. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">pid</td><td>The task id. </td></tr>
+    <tr><td class="paramname">flags</td><td>Bit flags to change the behavior, as defined in #cgroup_daemon_type </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="gaf81ebd9cb5575c75b4c85f385ebda1ce"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf81ebd9cb5575c75b4c85f385ebda1ce">&#9670;&nbsp;</a></span>cgroup_reload_cached_rules()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int cgroup_reload_cached_rules </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Reloads the rules list from /etc/cgrules.conf. This function is probably NOT thread safe (calls cgroup_parse_rules_config()).</p>
+<p>Reloads the rules list, using the given configuration file. This function is probably NOT thread safe (calls cgroup_parse_rules()). </p><dl class="section return"><dt>Returns</dt><dd>0 on success, &gt; 0 on failure </dd></dl>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/groups_8h_source.html b/groups_8h_source.html
new file mode 100644 (file)
index 0000000..5c6c5a1
--- /dev/null
@@ -0,0 +1,238 @@
+<!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>libcgroup: include/libcgroup/groups.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_66a7763e2a9b96033a682558820d533e.html">libcgroup</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">groups.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#ifndef _LIBCGROUP_GROUPS_H</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#define _LIBCGROUP_GROUPS_H</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160; </div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="preprocessor">#ifndef _LIBCGROUP_H_INSIDE</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="preprocessor">#error &quot;Only &lt;libcgroup.h&gt; should be included directly.&quot;</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160; </div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#ifndef SWIG</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &lt;features.h&gt;</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="preprocessor">#include &lt;stdbool.h&gt;</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160; </div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="keyword">enum</span> cgroup_delete_flag {</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;    CGFLAG_DELETE_IGNORE_MIGRATION = 1,</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160; </div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;    CGFLAG_DELETE_RECURSIVE = 2,</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160; </div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;    CGFLAG_DELETE_EMPTY_ONLY    = 4,</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;};</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160; </div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;<span class="keyword">struct </span><a class="code" href="structcgroup.html">cgroup</a>;</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160; </div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;<span class="keyword">struct </span><a class="code" href="structcgroup__controller.html">cgroup_controller</a>;</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160; </div>
+<div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="group__group__groups.html#gad4ffad2eccf9fcbfa8a551e269e0ad58">  124</a></span>&#160;<span class="preprocessor">#define NO_PERMS (-1U)</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160; </div>
+<div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="group__group__groups.html#ga2a7954a987e3fbf8eabcc94cf381353e">  129</a></span>&#160;<span class="preprocessor">#define NO_UID_GID (-1U)</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160; </div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;<span class="keyword">struct </span><a class="code" href="structcgroup.html">cgroup</a> *<a class="code" href="group__group__groups.html#ga6cd4733e5982ac2c92ee3cb3dbd10a31">cgroup_new_cgroup</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name);</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160; </div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;<span class="keyword">struct </span><a class="code" href="structcgroup__controller.html">cgroup_controller</a> *<a class="code" href="group__group__groups.html#gaa2f9c2ac75fd7e56e5ec6fb970304130">cgroup_add_controller</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> *<a class="code" href="structcgroup.html">cgroup</a>,</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;                        <span class="keyword">const</span> <span class="keywordtype">char</span> *name);</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160; </div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#gae870d271b789b5c54c2e3d35de3cd6f9">cgroup_add_all_controllers</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> *<a class="code" href="structcgroup.html">cgroup</a>);</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160; </div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160; </div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;<span class="keyword">struct </span><a class="code" href="structcgroup__controller.html">cgroup_controller</a> *<a class="code" href="group__group__groups.html#ga8335b0aec59c8f845639a7404affce05">cgroup_get_controller</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> *<a class="code" href="structcgroup.html">cgroup</a>,</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;                            <span class="keyword">const</span> <span class="keywordtype">char</span> *name);</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160; </div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__group__groups.html#gab20fdb1ae479f8baac482336abf73900">cgroup_free</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> **<a class="code" href="structcgroup.html">cgroup</a>);</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160; </div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__group__groups.html#ga92d27c9ff0d655838642a7aa68497596">cgroup_free_controllers</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> *<a class="code" href="structcgroup.html">cgroup</a>);</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160; </div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160; </div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#gadb8e13df6064841d3c9707960f782fa7">cgroup_create_cgroup</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> *<a class="code" href="structcgroup.html">cgroup</a>, <span class="keywordtype">int</span> ignore_ownership);</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160; </div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#ga90e1ce96f3cb540f7e82d076dd938f62">cgroup_create_cgroup_from_parent</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> *<a class="code" href="structcgroup.html">cgroup</a>,</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;        <span class="keywordtype">int</span> ignore_ownership);</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160; </div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#ga31ba5e865ae8d58b4453c0ef06d2c071">cgroup_modify_cgroup</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> *<a class="code" href="structcgroup.html">cgroup</a>);</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160; </div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#ga1dca18434e5d6be30c28c556da94f565">cgroup_delete_cgroup</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> *<a class="code" href="structcgroup.html">cgroup</a>, <span class="keywordtype">int</span> ignore_migration);</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160; </div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#ga860c1ec70189c969b2c8373fc1e96d36">cgroup_delete_cgroup_ext</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> *<a class="code" href="structcgroup.html">cgroup</a>, <span class="keywordtype">int</span> flags);</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160; </div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160; </div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#gad4ba31fe5a8bba63b33b1ea339b849e6">cgroup_get_cgroup</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> *<a class="code" href="structcgroup.html">cgroup</a>);</div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160; </div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#gaa981a95e0917d3167601a4c1b392336a">cgroup_copy_cgroup</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> *dst, <span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> *src);</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160; </div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#ga86898b59e50335f99fe84a11fa38d3fc">cgroup_compare_cgroup</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> *cgroup_a, <span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> *cgroup_b);</div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160; </div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160; </div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#gab1725c50c49cec4b0bdad1f26b150ca7">cgroup_compare_controllers</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup__controller.html">cgroup_controller</a> *cgca,</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;                    <span class="keyword">struct</span> <a class="code" href="structcgroup__controller.html">cgroup_controller</a> *cgcb);</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160; </div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#ga53b9e13e30660c805ab5773d69397a43">cgroup_set_uid_gid</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> *<a class="code" href="structcgroup.html">cgroup</a>, uid_t tasks_uid, gid_t tasks_gid,</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;                    uid_t control_uid, gid_t control_gid);</div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160; </div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#ga007d21c304d9cc6e948dc0ae51ecfa86">cgroup_get_uid_gid</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> *<a class="code" href="structcgroup.html">cgroup</a>, uid_t *tasks_uid,</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;        gid_t *tasks_gid, uid_t *control_uid, gid_t *control_gid);</div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160; </div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__group__groups.html#gaa0400f1ff2fba7fbb6db82d97039d92b">cgroup_set_permissions</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> *<a class="code" href="structcgroup.html">cgroup</a>,</div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;        mode_t control_dperm, mode_t control_fperm,</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;        mode_t task_fperm);</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160; </div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#ga4817c68ab791c09c07b663c29b3fb029">cgroup_add_value_string</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup__controller.html">cgroup_controller</a> *controller,</div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;                <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> <span class="keywordtype">char</span> *value);</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#ga6c973bb5ce99e7a91def2032f23d7087">cgroup_add_value_int64</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup__controller.html">cgroup_controller</a> *controller,</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;                <span class="keyword">const</span> <span class="keywordtype">char</span> *name, int64_t value);</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#gad9d2216205b96278c626122f8d5e63bb">cgroup_add_value_uint64</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup__controller.html">cgroup_controller</a> *controller,</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;                <span class="keyword">const</span> <span class="keywordtype">char</span> *name, u_int64_t value);</div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#ga4b191a600f84b00ea7afd12c01d918f3">cgroup_add_value_bool</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup__controller.html">cgroup_controller</a> *controller,</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;                <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keywordtype">bool</span> value);</div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160; </div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#gafaa51e5ffe09f8ad05585a1d3b6f7fa9">cgroup_get_value_string</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup__controller.html">cgroup_controller</a> *controller,</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;                    <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keywordtype">char</span> **value);</div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#ga0fe9b05f26b3cab21fc446c9a2700526">cgroup_get_value_int64</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup__controller.html">cgroup_controller</a> *controller,</div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;                    <span class="keyword">const</span> <span class="keywordtype">char</span> *name, int64_t *value);</div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#ga951861259c0373895bfb637fce337312">cgroup_get_value_uint64</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup__controller.html">cgroup_controller</a> *controller,</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;                    <span class="keyword">const</span> <span class="keywordtype">char</span> *name, u_int64_t *value);</div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#gab95007148eac89b7e935d93a4524787b">cgroup_get_value_bool</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup__controller.html">cgroup_controller</a> *controller,</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;                        <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keywordtype">bool</span> *value);</div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160; </div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#ga938febc02b59cbeb8e4ceb2dc7fdac82">cgroup_set_value_string</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup__controller.html">cgroup_controller</a> *controller,</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;                    <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> <span class="keywordtype">char</span> *value);</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#gaa5c39e51035cc43dd26a3c620441a956">cgroup_set_value_int64</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup__controller.html">cgroup_controller</a> *controller,</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;                    <span class="keyword">const</span> <span class="keywordtype">char</span> *name, int64_t value);</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#gade01aa1fe30ccc968af9fe8a3bc821e5">cgroup_set_value_uint64</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup__controller.html">cgroup_controller</a> *controller,</div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;                    <span class="keyword">const</span> <span class="keywordtype">char</span> *name, u_int64_t value);</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#gafb24892bc221cffee0f5fe07f64d54d7">cgroup_set_value_bool</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup__controller.html">cgroup_controller</a> *controller,</div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;                        <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keywordtype">bool</span> value);</div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#ga25115085978ce2a8d671e7876cc49c1d">cgroup_get_value_name_count</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup__controller.html">cgroup_controller</a> *controller);</div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160; </div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;<span class="keywordtype">char</span> *<a class="code" href="group__group__groups.html#ga16ca75fd16eda7cfc642421111e9a331">cgroup_get_value_name</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup__controller.html">cgroup_controller</a> *controller, <span class="keywordtype">int</span> index);</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160; </div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#ga08a4fe913d59f61a39e61b8b02537dc2">cgroup_get_procs</a>(<span class="keywordtype">char</span> *name, <span class="keywordtype">char</span> *controller, pid_t **pids, <span class="keywordtype">int</span> *size);</div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160; </div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__groups.html#gaef0bf6cd480f2dcb5e964de151a27dd1">cg_chmod_recursive</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> *<a class="code" href="structcgroup.html">cgroup</a>, mode_t dir_mode,</div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;    <span class="keywordtype">int</span> dirm_change, mode_t file_mode, <span class="keywordtype">int</span> filem_change);</div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160; </div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;<span class="keywordtype">char</span> *<a class="code" href="group__group__groups.html#gac9b5ff481de08ba8fdfcbd42940d2cbf">cgroup_get_cgroup_name</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> *<a class="code" href="structcgroup.html">cgroup</a>);</div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160; </div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;} <span class="comment">/* extern &quot;C&quot; */</span></div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160; </div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* _LIBCGROUP_GROUPS_H */</span><span class="preprocessor"></span></div>
+<div class="ttc" id="agroup__group__groups_html_ga007d21c304d9cc6e948dc0ae51ecfa86"><div class="ttname"><a href="group__group__groups.html#ga007d21c304d9cc6e948dc0ae51ecfa86">cgroup_get_uid_gid</a></div><div class="ttdeci">int cgroup_get_uid_gid(struct cgroup *cgroup, uid_t *tasks_uid, gid_t *tasks_gid, uid_t *control_uid, gid_t *control_gid)</div><div class="ttdef"><b>Definition:</b> wrapper.c:357</div></div>
+<div class="ttc" id="agroup__group__groups_html_ga08a4fe913d59f61a39e61b8b02537dc2"><div class="ttname"><a href="group__group__groups.html#ga08a4fe913d59f61a39e61b8b02537dc2">cgroup_get_procs</a></div><div class="ttdeci">int cgroup_get_procs(char *name, char *controller, pid_t **pids, int *size)</div><div class="ttdef"><b>Definition:</b> api.c:5422</div></div>
+<div class="ttc" id="agroup__group__groups_html_ga0fe9b05f26b3cab21fc446c9a2700526"><div class="ttname"><a href="group__group__groups.html#ga0fe9b05f26b3cab21fc446c9a2700526">cgroup_get_value_int64</a></div><div class="ttdeci">int cgroup_get_value_int64(struct cgroup_controller *controller, const char *name, int64_t *value)</div><div class="ttdef"><b>Definition:</b> wrapper.c:436</div></div>
+<div class="ttc" id="agroup__group__groups_html_ga16ca75fd16eda7cfc642421111e9a331"><div class="ttname"><a href="group__group__groups.html#ga16ca75fd16eda7cfc642421111e9a331">cgroup_get_value_name</a></div><div class="ttdeci">char * cgroup_get_value_name(struct cgroup_controller *controller, int index)</div><div class="ttdef"><b>Definition:</b> wrapper.c:665</div></div>
+<div class="ttc" id="agroup__group__groups_html_ga1dca18434e5d6be30c28c556da94f565"><div class="ttname"><a href="group__group__groups.html#ga1dca18434e5d6be30c28c556da94f565">cgroup_delete_cgroup</a></div><div class="ttdeci">int cgroup_delete_cgroup(struct cgroup *cgroup, int ignore_migration)</div><div class="ttdef"><b>Definition:</b> api.c:2842</div></div>
+<div class="ttc" id="agroup__group__groups_html_ga25115085978ce2a8d671e7876cc49c1d"><div class="ttname"><a href="group__group__groups.html#ga25115085978ce2a8d671e7876cc49c1d">cgroup_get_value_name_count</a></div><div class="ttdeci">int cgroup_get_value_name_count(struct cgroup_controller *controller)</div><div class="ttdef"><b>Definition:</b> wrapper.c:656</div></div>
+<div class="ttc" id="agroup__group__groups_html_ga31ba5e865ae8d58b4453c0ef06d2c071"><div class="ttname"><a href="group__group__groups.html#ga31ba5e865ae8d58b4453c0ef06d2c071">cgroup_modify_cgroup</a></div><div class="ttdeci">int cgroup_modify_cgroup(struct cgroup *cgroup)</div><div class="ttdef"><b>Definition:</b> api.c:2162</div></div>
+<div class="ttc" id="agroup__group__groups_html_ga4817c68ab791c09c07b663c29b3fb029"><div class="ttname"><a href="group__group__groups.html#ga4817c68ab791c09c07b663c29b3fb029">cgroup_add_value_string</a></div><div class="ttdeci">int cgroup_add_value_string(struct cgroup_controller *controller, const char *name, const char *value)</div><div class="ttdef"><b>Definition:</b> wrapper.c:180</div></div>
+<div class="ttc" id="agroup__group__groups_html_ga4b191a600f84b00ea7afd12c01d918f3"><div class="ttname"><a href="group__group__groups.html#ga4b191a600f84b00ea7afd12c01d918f3">cgroup_add_value_bool</a></div><div class="ttdeci">int cgroup_add_value_bool(struct cgroup_controller *controller, const char *name, bool value)</div><div class="ttdef"><b>Definition:</b> wrapper.c:260</div></div>
+<div class="ttc" id="agroup__group__groups_html_ga53b9e13e30660c805ab5773d69397a43"><div class="ttname"><a href="group__group__groups.html#ga53b9e13e30660c805ab5773d69397a43">cgroup_set_uid_gid</a></div><div class="ttdeci">int cgroup_set_uid_gid(struct cgroup *cgroup, uid_t tasks_uid, gid_t tasks_gid, uid_t control_uid, gid_t control_gid)</div><div class="ttdef"><b>Definition:</b> wrapper.c:343</div></div>
+<div class="ttc" id="agroup__group__groups_html_ga6c973bb5ce99e7a91def2032f23d7087"><div class="ttname"><a href="group__group__groups.html#ga6c973bb5ce99e7a91def2032f23d7087">cgroup_add_value_int64</a></div><div class="ttdeci">int cgroup_add_value_int64(struct cgroup_controller *controller, const char *name, int64_t value)</div><div class="ttdef"><b>Definition:</b> wrapper.c:224</div></div>
+<div class="ttc" id="agroup__group__groups_html_ga6cd4733e5982ac2c92ee3cb3dbd10a31"><div class="ttname"><a href="group__group__groups.html#ga6cd4733e5982ac2c92ee3cb3dbd10a31">cgroup_new_cgroup</a></div><div class="ttdeci">struct cgroup * cgroup_new_cgroup(const char *name)</div><div class="ttdef"><b>Definition:</b> wrapper.c:44</div></div>
+<div class="ttc" id="agroup__group__groups_html_ga8335b0aec59c8f845639a7404affce05"><div class="ttname"><a href="group__group__groups.html#ga8335b0aec59c8f845639a7404affce05">cgroup_get_controller</a></div><div class="ttdeci">struct cgroup_controller * cgroup_get_controller(struct cgroup *cgroup, const char *name)</div><div class="ttdef"><b>Definition:</b> wrapper.c:371</div></div>
+<div class="ttc" id="agroup__group__groups_html_ga860c1ec70189c969b2c8373fc1e96d36"><div class="ttname"><a href="group__group__groups.html#ga860c1ec70189c969b2c8373fc1e96d36">cgroup_delete_cgroup_ext</a></div><div class="ttdeci">int cgroup_delete_cgroup_ext(struct cgroup *cgroup, int flags)</div><div class="ttdef"><b>Definition:</b> api.c:2848</div></div>
+<div class="ttc" id="agroup__group__groups_html_ga86898b59e50335f99fe84a11fa38d3fc"><div class="ttname"><a href="group__group__groups.html#ga86898b59e50335f99fe84a11fa38d3fc">cgroup_compare_cgroup</a></div><div class="ttdeci">int cgroup_compare_cgroup(struct cgroup *cgroup_a, struct cgroup *cgroup_b)</div><div class="ttdef"><b>Definition:</b> wrapper.c:308</div></div>
+<div class="ttc" id="agroup__group__groups_html_ga90e1ce96f3cb540f7e82d076dd938f62"><div class="ttname"><a href="group__group__groups.html#ga90e1ce96f3cb540f7e82d076dd938f62">cgroup_create_cgroup_from_parent</a></div><div class="ttdeci">int cgroup_create_cgroup_from_parent(struct cgroup *cgroup, int ignore_ownership)</div><div class="ttdef"><b>Definition:</b> api.c:2588</div></div>
+<div class="ttc" id="agroup__group__groups_html_ga92d27c9ff0d655838642a7aa68497596"><div class="ttname"><a href="group__group__groups.html#ga92d27c9ff0d655838642a7aa68497596">cgroup_free_controllers</a></div><div class="ttdeci">void cgroup_free_controllers(struct cgroup *cgroup)</div><div class="ttdef"><b>Definition:</b> wrapper.c:145</div></div>
+<div class="ttc" id="agroup__group__groups_html_ga938febc02b59cbeb8e4ceb2dc7fdac82"><div class="ttname"><a href="group__group__groups.html#ga938febc02b59cbeb8e4ceb2dc7fdac82">cgroup_set_value_string</a></div><div class="ttdeci">int cgroup_set_value_string(struct cgroup_controller *controller, const char *name, const char *value)</div><div class="ttdef"><b>Definition:</b> wrapper.c:415</div></div>
+<div class="ttc" id="agroup__group__groups_html_ga951861259c0373895bfb637fce337312"><div class="ttname"><a href="group__group__groups.html#ga951861259c0373895bfb637fce337312">cgroup_get_value_uint64</a></div><div class="ttdeci">int cgroup_get_value_uint64(struct cgroup_controller *controller, const char *name, u_int64_t *value)</div><div class="ttdef"><b>Definition:</b> wrapper.c:486</div></div>
+<div class="ttc" id="agroup__group__groups_html_gaa0400f1ff2fba7fbb6db82d97039d92b"><div class="ttname"><a href="group__group__groups.html#gaa0400f1ff2fba7fbb6db82d97039d92b">cgroup_set_permissions</a></div><div class="ttdeci">void cgroup_set_permissions(struct cgroup *cgroup, mode_t control_dperm, mode_t control_fperm, mode_t task_fperm)</div><div class="ttdef"><b>Definition:</b> api.c:361</div></div>
+<div class="ttc" id="agroup__group__groups_html_gaa2f9c2ac75fd7e56e5ec6fb970304130"><div class="ttname"><a href="group__group__groups.html#gaa2f9c2ac75fd7e56e5ec6fb970304130">cgroup_add_controller</a></div><div class="ttdeci">struct cgroup_controller * cgroup_add_controller(struct cgroup *cgroup, const char *name)</div><div class="ttdef"><b>Definition:</b> wrapper.c:56</div></div>
+<div class="ttc" id="agroup__group__groups_html_gaa5c39e51035cc43dd26a3c620441a956"><div class="ttname"><a href="group__group__groups.html#gaa5c39e51035cc43dd26a3c620441a956">cgroup_set_value_int64</a></div><div class="ttdeci">int cgroup_set_value_int64(struct cgroup_controller *controller, const char *name, int64_t value)</div><div class="ttdef"><b>Definition:</b> wrapper.c:459</div></div>
+<div class="ttc" id="agroup__group__groups_html_gaa981a95e0917d3167601a4c1b392336a"><div class="ttname"><a href="group__group__groups.html#gaa981a95e0917d3167601a4c1b392336a">cgroup_copy_cgroup</a></div><div class="ttdeci">int cgroup_copy_cgroup(struct cgroup *dst, struct cgroup *src)</div><div class="ttdef"><b>Definition:</b> api.c:2265</div></div>
+<div class="ttc" id="agroup__group__groups_html_gab1725c50c49cec4b0bdad1f26b150ca7"><div class="ttname"><a href="group__group__groups.html#gab1725c50c49cec4b0bdad1f26b150ca7">cgroup_compare_controllers</a></div><div class="ttdeci">int cgroup_compare_controllers(struct cgroup_controller *cgca, struct cgroup_controller *cgcb)</div><div class="ttdef"><b>Definition:</b> wrapper.c:281</div></div>
+<div class="ttc" id="agroup__group__groups_html_gab20fdb1ae479f8baac482336abf73900"><div class="ttname"><a href="group__group__groups.html#gab20fdb1ae479f8baac482336abf73900">cgroup_free</a></div><div class="ttdeci">void cgroup_free(struct cgroup **cgroup)</div><div class="ttdef"><b>Definition:</b> wrapper.c:165</div></div>
+<div class="ttc" id="agroup__group__groups_html_gab95007148eac89b7e935d93a4524787b"><div class="ttname"><a href="group__group__groups.html#gab95007148eac89b7e935d93a4524787b">cgroup_get_value_bool</a></div><div class="ttdeci">int cgroup_get_value_bool(struct cgroup_controller *controller, const char *name, bool *value)</div><div class="ttdef"><b>Definition:</b> wrapper.c:535</div></div>
+<div class="ttc" id="agroup__group__groups_html_gac9b5ff481de08ba8fdfcbd42940d2cbf"><div class="ttname"><a href="group__group__groups.html#gac9b5ff481de08ba8fdfcbd42940d2cbf">cgroup_get_cgroup_name</a></div><div class="ttdeci">char * cgroup_get_cgroup_name(struct cgroup *cgroup)</div><div class="ttdef"><b>Definition:</b> wrapper.c:677</div></div>
+<div class="ttc" id="agroup__group__groups_html_gad4ba31fe5a8bba63b33b1ea339b849e6"><div class="ttname"><a href="group__group__groups.html#gad4ba31fe5a8bba63b33b1ea339b849e6">cgroup_get_cgroup</a></div><div class="ttdeci">int cgroup_get_cgroup(struct cgroup *cgroup)</div><div class="ttdef"><b>Definition:</b> api.c:3141</div></div>
+<div class="ttc" id="agroup__group__groups_html_gad9d2216205b96278c626122f8d5e63bb"><div class="ttname"><a href="group__group__groups.html#gad9d2216205b96278c626122f8d5e63bb">cgroup_add_value_uint64</a></div><div class="ttdeci">int cgroup_add_value_uint64(struct cgroup_controller *controller, const char *name, u_int64_t value)</div><div class="ttdef"><b>Definition:</b> wrapper.c:242</div></div>
+<div class="ttc" id="agroup__group__groups_html_gadb8e13df6064841d3c9707960f782fa7"><div class="ttname"><a href="group__group__groups.html#gadb8e13df6064841d3c9707960f782fa7">cgroup_create_cgroup</a></div><div class="ttdeci">int cgroup_create_cgroup(struct cgroup *cgroup, int ignore_ownership)</div><div class="ttdef"><b>Definition:</b> api.c:2348</div></div>
+<div class="ttc" id="agroup__group__groups_html_gade01aa1fe30ccc968af9fe8a3bc821e5"><div class="ttname"><a href="group__group__groups.html#gade01aa1fe30ccc968af9fe8a3bc821e5">cgroup_set_value_uint64</a></div><div class="ttdeci">int cgroup_set_value_uint64(struct cgroup_controller *controller, const char *name, u_int64_t value)</div><div class="ttdef"><b>Definition:</b> wrapper.c:508</div></div>
+<div class="ttc" id="agroup__group__groups_html_gae870d271b789b5c54c2e3d35de3cd6f9"><div class="ttname"><a href="group__group__groups.html#gae870d271b789b5c54c2e3d35de3cd6f9">cgroup_add_all_controllers</a></div><div class="ttdeci">int cgroup_add_all_controllers(struct cgroup *cgroup)</div><div class="ttdef"><b>Definition:</b> wrapper.c:95</div></div>
+<div class="ttc" id="agroup__group__groups_html_gaef0bf6cd480f2dcb5e964de151a27dd1"><div class="ttname"><a href="group__group__groups.html#gaef0bf6cd480f2dcb5e964de151a27dd1">cg_chmod_recursive</a></div><div class="ttdeci">int cg_chmod_recursive(struct cgroup *cgroup, mode_t dir_mode, int dirm_change, mode_t file_mode, int filem_change)</div><div class="ttdef"><b>Definition:</b> api.c:333</div></div>
+<div class="ttc" id="agroup__group__groups_html_gafaa51e5ffe09f8ad05585a1d3b6f7fa9"><div class="ttname"><a href="group__group__groups.html#gafaa51e5ffe09f8ad05585a1d3b6f7fa9">cgroup_get_value_string</a></div><div class="ttdeci">int cgroup_get_value_string(struct cgroup_controller *controller, const char *name, char **value)</div><div class="ttdef"><b>Definition:</b> wrapper.c:390</div></div>
+<div class="ttc" id="agroup__group__groups_html_gafb24892bc221cffee0f5fe07f64d54d7"><div class="ttname"><a href="group__group__groups.html#gafb24892bc221cffee0f5fe07f64d54d7">cgroup_set_value_bool</a></div><div class="ttdeci">int cgroup_set_value_bool(struct cgroup_controller *controller, const char *name, bool value)</div><div class="ttdef"><b>Definition:</b> wrapper.c:563</div></div>
+<div class="ttc" id="astructcgroup__controller_html"><div class="ttname"><a href="structcgroup__controller.html">cgroup_controller</a></div><div class="ttdef"><b>Definition:</b> libcgroup-internal.h:99</div></div>
+<div class="ttc" id="astructcgroup_html"><div class="ttname"><a href="structcgroup.html">cgroup</a></div><div class="ttdef"><b>Definition:</b> libcgroup-internal.h:106</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/index.html b/index.html
new file mode 100644 (file)
index 0000000..770177c
--- /dev/null
@@ -0,0 +1,86 @@
+<!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>libcgroup: libcgroup</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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 -->
+<!-- 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="PageDoc"><div class="header">
+  <div class="headertitle">
+<div class="title">libcgroup </div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><h1><a class="anchor" id="intro_sec"></a>
+Introduction</h1>
+<p><code>libcgroup</code> is a library that abstracts the control group file system in Linux. It comes with various command-line tools and configuration files, see their man pages for details.</p>
+<p>This documentation provides description of <code>libcgroup</code> API. Read following sections, preferably in this order:</p><ol type="1">
+<li><a class="el" href="group__group__init.html">Initialization</a></li>
+<li><a class="el" href="group__group__groups.html">Control Groups</a></li>
+<li><a class="el" href="group__group__iterators.html">Iterators</a></li>
+<li><a class="el" href="group__group__tasks.html">Manipulation with tasks</a></li>
+<li><a class="el" href="group__group__config.html">Configuration</a></li>
+<li><a class="el" href="group__group__errors.html">Error Handling</a> </li>
+</ol>
+</div></div><!-- PageDoc -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/init_8h_source.html b/init_8h_source.html
new file mode 100644 (file)
index 0000000..311317f
--- /dev/null
@@ -0,0 +1,104 @@
+<!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>libcgroup: include/libcgroup/init.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_66a7763e2a9b96033a682558820d533e.html">libcgroup</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">init.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#ifndef _LIBCGROUP_INIT_H</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#define _LIBCGROUP_INIT_H</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160; </div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="preprocessor">#ifndef _LIBCGROUP_H_INSIDE</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="preprocessor">#error &quot;Only &lt;libcgroup.h&gt; should be included directly.&quot;</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160; </div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#ifndef SWIG</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &lt;features.h&gt;</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160; </div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160; </div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__init.html#ga37740e2f5f298edf13e18fcd7632b75a">cgroup_init</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160; </div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__init.html#ga4f061b353321b81869057970d96f09f7">cgroup_get_subsys_mount_point</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *controller, <span class="keywordtype">char</span> **mount_point);</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160; </div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;} <span class="comment">/* extern &quot;C&quot; */</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160; </div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* _LIBCGROUP_INIT_H */</span><span class="preprocessor"></span></div>
+<div class="ttc" id="agroup__group__init_html_ga37740e2f5f298edf13e18fcd7632b75a"><div class="ttname"><a href="group__group__init.html#ga37740e2f5f298edf13e18fcd7632b75a">cgroup_init</a></div><div class="ttdeci">int cgroup_init(void)</div><div class="ttdef"><b>Definition:</b> api.c:1271</div></div>
+<div class="ttc" id="agroup__group__init_html_ga4f061b353321b81869057970d96f09f7"><div class="ttname"><a href="group__group__init.html#ga4f061b353321b81869057970d96f09f7">cgroup_get_subsys_mount_point</a></div><div class="ttdeci">int cgroup_get_subsys_mount_point(const char *controller, char **mount_point)</div><div class="ttdef"><b>Definition:</b> api.c:5300</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/iterators_8h_source.html b/iterators_8h_source.html
new file mode 100644 (file)
index 0000000..2ca3019
--- /dev/null
@@ -0,0 +1,233 @@
+<!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>libcgroup: include/libcgroup/iterators.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_66a7763e2a9b96033a682558820d533e.html">libcgroup</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">iterators.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#ifndef _LIBCGROUP_ITERATORS_H</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#define _LIBCGROUP_ITERATORS_H</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160; </div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="preprocessor">#ifndef _LIBCGROUP_H_INSIDE</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="preprocessor">#error &quot;Only &lt;libcgroup.h&gt; should be included directly.&quot;</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160; </div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#ifndef SWIG</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="preprocessor">#include &lt;features.h&gt;</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160; </div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="group__group__iterators.html#ga29a572cbc0c07e2b02dfa0f1ac0067d3">   73</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="group__group__iterators.html#ga29a572cbc0c07e2b02dfa0f1ac0067d3">cgroup_walk_type</a> {</div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="group__group__iterators.html#gga29a572cbc0c07e2b02dfa0f1ac0067d3af865296e6a0e55cff574fbb132b9f913">   86</a></span>&#160;    <a class="code" href="group__group__iterators.html#gga29a572cbc0c07e2b02dfa0f1ac0067d3af865296e6a0e55cff574fbb132b9f913">CGROUP_WALK_TYPE_PRE_DIR</a> = 0x1,</div>
+<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="group__group__iterators.html#gga29a572cbc0c07e2b02dfa0f1ac0067d3abf3c31227768960bd6622d2562aae3e1">   99</a></span>&#160;    <a class="code" href="group__group__iterators.html#gga29a572cbc0c07e2b02dfa0f1ac0067d3abf3c31227768960bd6622d2562aae3e1">CGROUP_WALK_TYPE_POST_DIR</a> = 0x2,</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;};</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160; </div>
+<div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="group__group__iterators.html#ga608b4aa32e2db58fed34771a6a272444">  105</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="group__group__iterators.html#ga608b4aa32e2db58fed34771a6a272444">cgroup_file_type</a> {</div>
+<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="group__group__iterators.html#gga608b4aa32e2db58fed34771a6a272444ad925cc45f1b34fe80e14fc6b05269740">  106</a></span>&#160;    <a class="code" href="group__group__iterators.html#gga608b4aa32e2db58fed34771a6a272444ad925cc45f1b34fe80e14fc6b05269740">CGROUP_FILE_TYPE_FILE</a>,      </div>
+<div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="group__group__iterators.html#gga608b4aa32e2db58fed34771a6a272444a5418798fc4bf9634429c6af167a0e7c3">  107</a></span>&#160;    <a class="code" href="group__group__iterators.html#gga608b4aa32e2db58fed34771a6a272444a5418798fc4bf9634429c6af167a0e7c3">CGROUP_FILE_TYPE_DIR</a>,       </div>
+<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="group__group__iterators.html#gga608b4aa32e2db58fed34771a6a272444a24e202c59f318e63ad8cafcc1b4b102b">  108</a></span>&#160;    <a class="code" href="group__group__iterators.html#gga608b4aa32e2db58fed34771a6a272444a24e202c59f318e63ad8cafcc1b4b102b">CGROUP_FILE_TYPE_OTHER</a>,     </div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;};</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160; </div>
+<div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="structcgroup__file__info.html">  114</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcgroup__file__info.html">cgroup_file_info</a> {</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    <span class="keyword">enum</span> <a class="code" href="group__group__iterators.html#ga608b4aa32e2db58fed34771a6a272444">cgroup_file_type</a> <a class="code" href="structcgroup__file__info.html#a955506601f440d05cb11e4ee6b455c55">type</a>;</div>
+<div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="structcgroup__file__info.html#a801424e68139c930e40ea24be4d96a68">  118</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structcgroup__file__info.html#a801424e68139c930e40ea24be4d96a68">path</a>;</div>
+<div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="structcgroup__file__info.html#a739c7f87593e36d8589d3ffa80b57059">  120</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structcgroup__file__info.html#a739c7f87593e36d8589d3ffa80b57059">parent</a>;</div>
+<div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="structcgroup__file__info.html#a4c61dc7f726ba0784ff8c71473dbc6e6">  126</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structcgroup__file__info.html#a4c61dc7f726ba0784ff8c71473dbc6e6">full_path</a>;</div>
+<div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="structcgroup__file__info.html#ad56dca35266f0f5f5c2666b946d72709">  131</a></span>&#160;    <span class="keywordtype">short</span> <a class="code" href="structcgroup__file__info.html#ad56dca35266f0f5f5c2666b946d72709">depth</a>;</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;};</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160; </div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__iterators.html#ga7b19f10c06abb96d8c8ae88a04888a68">cgroup_walk_tree_begin</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *controller, <span class="keyword">const</span> <span class="keywordtype">char</span> *base_path, <span class="keywordtype">int</span> depth,</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;                <span class="keywordtype">void</span> **handle, <span class="keyword">struct</span> <a class="code" href="structcgroup__file__info.html">cgroup_file_info</a> *info,</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;                <span class="keywordtype">int</span> *base_level);</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__iterators.html#ga527f5499b0aa04d325074435baebdff1">cgroup_walk_tree_next</a>(<span class="keywordtype">int</span> depth, <span class="keywordtype">void</span> **handle,</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;                <span class="keyword">struct</span> <a class="code" href="structcgroup__file__info.html">cgroup_file_info</a> *info, <span class="keywordtype">int</span> base_level);</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160; </div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__iterators.html#ga09a70990837a58e506a264f8c50d4cde">cgroup_walk_tree_end</a>(<span class="keywordtype">void</span> **handle);</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160; </div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__iterators.html#ga645ec7a6206dffb32667e7a0e148edc8">cgroup_walk_tree_set_flags</a>(<span class="keywordtype">void</span> **handle, <span class="keywordtype">int</span> flags);</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160; </div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__iterators.html#ga73edb115af6779644d3371b12cf09140">cgroup_read_value_begin</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *controller, <span class="keyword">const</span> <span class="keywordtype">char</span> *path,</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;    <span class="keywordtype">char</span> *name, <span class="keywordtype">void</span> **handle, <span class="keywordtype">char</span> *buffer, <span class="keywordtype">int</span> max);</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160; </div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__iterators.html#gaced2fe331f19d599a3270db2440847cc">cgroup_read_value_next</a>(<span class="keywordtype">void</span> **handle, <span class="keywordtype">char</span> *buffer, <span class="keywordtype">int</span> max);</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160; </div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__iterators.html#gad348f041e283860cbf6bcea567e23a21">cgroup_read_value_end</a>(<span class="keywordtype">void</span> **handle);</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160; </div>
+<div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="group__group__iterators.html#ga55d2eac2af703794651d344c073566f5">  230</a></span>&#160;<span class="preprocessor">#define CG_VALUE_MAX 100</span></div>
+<div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="structcgroup__stat.html">  234</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcgroup__stat.html">cgroup_stat</a> {</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;    <span class="keywordtype">char</span> name[FILENAME_MAX];</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    <span class="keywordtype">char</span> value[<a class="code" href="group__group__iterators.html#ga55d2eac2af703794651d344c073566f5">CG_VALUE_MAX</a>];</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;};</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160; </div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__iterators.html#ga1138e47f124f0f634586db5e0c4ae5de">cgroup_read_stats_begin</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *controller, <span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keywordtype">void</span> **handle,</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;                <span class="keyword">struct</span> <a class="code" href="structcgroup__stat.html">cgroup_stat</a> *stat);</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160; </div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__iterators.html#gaf95587508fc15d74fd5ed0df58024be7">cgroup_read_stats_next</a>(<span class="keywordtype">void</span> **handle, <span class="keyword">struct</span> <a class="code" href="structcgroup__stat.html">cgroup_stat</a> *stat);</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160; </div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__iterators.html#gaba386d9db6cadc6ad85c2552f63447bb">cgroup_read_stats_end</a>(<span class="keywordtype">void</span> **handle);</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160; </div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__iterators.html#gad7218154192f733120e1025cc19d0a36">cgroup_get_task_begin</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structcgroup.html">cgroup</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *controller, <span class="keywordtype">void</span> **handle,</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;                                pid_t *pid);</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160; </div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__iterators.html#gaf3a0364682b7449ddccfb0862bbb565e">cgroup_get_task_next</a>(<span class="keywordtype">void</span> **handle, pid_t *pid);</div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160; </div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__iterators.html#gaeb955e5f4da551268380b1271d478816">cgroup_get_task_end</a>(<span class="keywordtype">void</span> **handle);</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160; </div>
+<div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="structcgroup__mount__point.html">  312</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcgroup__mount__point.html">cgroup_mount_point</a> {</div>
+<div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="structcgroup__mount__point.html#a849ccf1e77fffd5d45304c6adf0d2100">  314</a></span>&#160;    <span class="keywordtype">char</span> <a class="code" href="structcgroup__mount__point.html#a849ccf1e77fffd5d45304c6adf0d2100">name</a>[FILENAME_MAX];</div>
+<div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="structcgroup__mount__point.html#ad1e89dfc02cfd7341e2296086a4f251e">  316</a></span>&#160;    <span class="keywordtype">char</span> <a class="code" href="structcgroup__mount__point.html#ad1e89dfc02cfd7341e2296086a4f251e">path</a>[FILENAME_MAX];</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;};</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160; </div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__iterators.html#ga5f9f21138f9b18912a16b21a45b53c44">cgroup_get_controller_begin</a>(<span class="keywordtype">void</span> **handle, <span class="keyword">struct</span> <a class="code" href="structcgroup__mount__point.html">cgroup_mount_point</a> *info);</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160; </div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__iterators.html#ga926b70423b6c087c21a14670cd23cd7d">cgroup_get_controller_next</a>(<span class="keywordtype">void</span> **handle, <span class="keyword">struct</span> <a class="code" href="structcgroup__mount__point.html">cgroup_mount_point</a> *info);</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160; </div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__iterators.html#gab485cda2bc9640bacbf61f1953ae750c">cgroup_get_controller_end</a>(<span class="keywordtype">void</span> **handle);</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160; </div>
+<div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="structcontroller__data.html">  356</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcontroller__data.html">controller_data</a> {</div>
+<div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="structcontroller__data.html#a5474be4d8cc4553c94ca81c6a93f5a18">  358</a></span>&#160;    <span class="keywordtype">char</span> <a class="code" href="structcontroller__data.html#a5474be4d8cc4553c94ca81c6a93f5a18">name</a>[FILENAME_MAX];</div>
+<div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="structcontroller__data.html#a25e316f55473ca2b333b0d7e0ca644b4">  364</a></span>&#160;    <span class="keywordtype">int</span> <a class="code" href="structcontroller__data.html#a25e316f55473ca2b333b0d7e0ca644b4">hierarchy</a>;</div>
+<div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="structcontroller__data.html#acd075c0bb48062bf720b68d0a30116eb">  366</a></span>&#160;    <span class="keywordtype">int</span> <a class="code" href="structcontroller__data.html#acd075c0bb48062bf720b68d0a30116eb">num_cgroups</a>;</div>
+<div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="structcontroller__data.html#a24be412cfb6c19f7a13a4bff9e55206e">  368</a></span>&#160;    <span class="keywordtype">int</span> <a class="code" href="structcontroller__data.html#a24be412cfb6c19f7a13a4bff9e55206e">enabled</a>;</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;};</div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160; </div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__iterators.html#gad48ef653388ca6739a9b6bbb9d7da82e">cgroup_get_all_controller_begin</a>(<span class="keywordtype">void</span> **handle,</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;    <span class="keyword">struct</span> <a class="code" href="structcontroller__data.html">controller_data</a> *info);</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__iterators.html#ga3d98a04b29b1fe409db1114b7aa76809">cgroup_get_all_controller_next</a>(<span class="keywordtype">void</span> **handle, <span class="keyword">struct</span> <a class="code" href="structcontroller__data.html">controller_data</a> *info);</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160; </div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__iterators.html#ga0c467d42a2c9a916a0edd339a6d7afc8">cgroup_get_all_controller_end</a>(<span class="keywordtype">void</span> **handle);</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160; </div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__iterators.html#ga18a3c6fe7da42b9da96ce34dce1e31b8">cgroup_get_subsys_mount_point_begin</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *controller, <span class="keywordtype">void</span> **handle,</div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;        <span class="keywordtype">char</span> *path);</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__iterators.html#ga3d66997158cb8a334317923ad94cc789">cgroup_get_subsys_mount_point_next</a>(<span class="keywordtype">void</span> **handle,</div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;        <span class="keywordtype">char</span> *path);</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160; </div>
+<div class="line"><a name="l00421"></a><span class="lineno"><a class="line" href="structcgroup__file__info.html#a955506601f440d05cb11e4ee6b455c55">  421</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__iterators.html#ga9c9b0f1921c205bd25bfc6c1d20486eb">cgroup_get_subsys_mount_point_end</a>(<span class="keywordtype">void</span> **handle);</div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160; </div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;} <span class="comment">/* extern &quot;C&quot; */</span></div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160; </div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* _LIBCGROUP_ITERATORS_H */</span><span class="preprocessor"></span></div>
+<div class="ttc" id="agroup__group__iterators_html_ga09a70990837a58e506a264f8c50d4cde"><div class="ttname"><a href="group__group__iterators.html#ga09a70990837a58e506a264f8c50d4cde">cgroup_walk_tree_end</a></div><div class="ttdeci">int cgroup_walk_tree_end(void **handle)</div><div class="ttdef"><b>Definition:</b> api.c:4466</div></div>
+<div class="ttc" id="agroup__group__iterators_html_ga0c467d42a2c9a916a0edd339a6d7afc8"><div class="ttname"><a href="group__group__iterators.html#ga0c467d42a2c9a916a0edd339a6d7afc8">cgroup_get_all_controller_end</a></div><div class="ttdeci">int cgroup_get_all_controller_end(void **handle)</div><div class="ttdef"><b>Definition:</b> api.c:5333</div></div>
+<div class="ttc" id="agroup__group__iterators_html_ga1138e47f124f0f634586db5e0c4ae5de"><div class="ttname"><a href="group__group__iterators.html#ga1138e47f124f0f634586db5e0c4ae5de">cgroup_read_stats_begin</a></div><div class="ttdeci">int cgroup_read_stats_begin(const char *controller, const char *path, void **handle, struct cgroup_stat *stat)</div><div class="ttdef"><b>Definition:</b> api.c:4724</div></div>
+<div class="ttc" id="agroup__group__iterators_html_ga18a3c6fe7da42b9da96ce34dce1e31b8"><div class="ttname"><a href="group__group__iterators.html#ga18a3c6fe7da42b9da96ce34dce1e31b8">cgroup_get_subsys_mount_point_begin</a></div><div class="ttdeci">int cgroup_get_subsys_mount_point_begin(const char *controller, void **handle, char *path)</div><div class="ttdef"><b>Definition:</b> api.c:5616</div></div>
+<div class="ttc" id="agroup__group__iterators_html_ga29a572cbc0c07e2b02dfa0f1ac0067d3"><div class="ttname"><a href="group__group__iterators.html#ga29a572cbc0c07e2b02dfa0f1ac0067d3">cgroup_walk_type</a></div><div class="ttdeci">cgroup_walk_type</div><div class="ttdef"><b>Definition:</b> iterators.h:73</div></div>
+<div class="ttc" id="agroup__group__iterators_html_ga3d66997158cb8a334317923ad94cc789"><div class="ttname"><a href="group__group__iterators.html#ga3d66997158cb8a334317923ad94cc789">cgroup_get_subsys_mount_point_next</a></div><div class="ttdeci">int cgroup_get_subsys_mount_point_next(void **handle, char *path)</div><div class="ttdef"><b>Definition:</b> api.c:5647</div></div>
+<div class="ttc" id="agroup__group__iterators_html_ga3d98a04b29b1fe409db1114b7aa76809"><div class="ttname"><a href="group__group__iterators.html#ga3d98a04b29b1fe409db1114b7aa76809">cgroup_get_all_controller_next</a></div><div class="ttdeci">int cgroup_get_all_controller_next(void **handle, struct controller_data *info)</div><div class="ttdef"><b>Definition:</b> api.c:5347</div></div>
+<div class="ttc" id="agroup__group__iterators_html_ga527f5499b0aa04d325074435baebdff1"><div class="ttname"><a href="group__group__iterators.html#ga527f5499b0aa04d325074435baebdff1">cgroup_walk_tree_next</a></div><div class="ttdeci">int cgroup_walk_tree_next(int depth, void **handle, struct cgroup_file_info *info, int base_level)</div><div class="ttdef"><b>Definition:</b> api.c:4439</div></div>
+<div class="ttc" id="agroup__group__iterators_html_ga55d2eac2af703794651d344c073566f5"><div class="ttname"><a href="group__group__iterators.html#ga55d2eac2af703794651d344c073566f5">CG_VALUE_MAX</a></div><div class="ttdeci">#define CG_VALUE_MAX</div><div class="ttdef"><b>Definition:</b> iterators.h:230</div></div>
+<div class="ttc" id="agroup__group__iterators_html_ga5f9f21138f9b18912a16b21a45b53c44"><div class="ttname"><a href="group__group__iterators.html#ga5f9f21138f9b18912a16b21a45b53c44">cgroup_get_controller_begin</a></div><div class="ttdeci">int cgroup_get_controller_begin(void **handle, struct cgroup_mount_point *info)</div><div class="ttdef"><b>Definition:</b> api.c:4873</div></div>
+<div class="ttc" id="agroup__group__iterators_html_ga608b4aa32e2db58fed34771a6a272444"><div class="ttname"><a href="group__group__iterators.html#ga608b4aa32e2db58fed34771a6a272444">cgroup_file_type</a></div><div class="ttdeci">cgroup_file_type</div><div class="ttdef"><b>Definition:</b> iterators.h:105</div></div>
+<div class="ttc" id="agroup__group__iterators_html_ga645ec7a6206dffb32667e7a0e148edc8"><div class="ttname"><a href="group__group__iterators.html#ga645ec7a6206dffb32667e7a0e148edc8">cgroup_walk_tree_set_flags</a></div><div class="ttdeci">int cgroup_walk_tree_set_flags(void **handle, int flags)</div><div class="ttdef"><b>Definition:</b> api.c:4552</div></div>
+<div class="ttc" id="agroup__group__iterators_html_ga73edb115af6779644d3371b12cf09140"><div class="ttname"><a href="group__group__iterators.html#ga73edb115af6779644d3371b12cf09140">cgroup_read_value_begin</a></div><div class="ttdeci">int cgroup_read_value_begin(const char *controller, const char *path, char *name, void **handle, char *buffer, int max)</div><div class="ttdef"><b>Definition:</b> api.c:4648</div></div>
+<div class="ttc" id="agroup__group__iterators_html_ga7b19f10c06abb96d8c8ae88a04888a68"><div class="ttname"><a href="group__group__iterators.html#ga7b19f10c06abb96d8c8ae88a04888a68">cgroup_walk_tree_begin</a></div><div class="ttdeci">int cgroup_walk_tree_begin(const char *controller, const char *base_path, int depth, void **handle, struct cgroup_file_info *info, int *base_level)</div><div class="ttdef"><b>Definition:</b> api.c:4487</div></div>
+<div class="ttc" id="agroup__group__iterators_html_ga926b70423b6c087c21a14670cd23cd7d"><div class="ttname"><a href="group__group__iterators.html#ga926b70423b6c087c21a14670cd23cd7d">cgroup_get_controller_next</a></div><div class="ttdeci">int cgroup_get_controller_next(void **handle, struct cgroup_mount_point *info)</div><div class="ttdef"><b>Definition:</b> api.c:4840</div></div>
+<div class="ttc" id="agroup__group__iterators_html_ga9c9b0f1921c205bd25bfc6c1d20486eb"><div class="ttname"><a href="group__group__iterators.html#ga9c9b0f1921c205bd25bfc6c1d20486eb">cgroup_get_subsys_mount_point_end</a></div><div class="ttdeci">int cgroup_get_subsys_mount_point_end(void **handle)</div><div class="ttdef"><b>Definition:</b> api.c:5669</div></div>
+<div class="ttc" id="agroup__group__iterators_html_gab485cda2bc9640bacbf61f1953ae750c"><div class="ttname"><a href="group__group__iterators.html#gab485cda2bc9640bacbf61f1953ae750c">cgroup_get_controller_end</a></div><div class="ttdeci">int cgroup_get_controller_end(void **handle)</div><div class="ttdef"><b>Definition:</b> api.c:4824</div></div>
+<div class="ttc" id="agroup__group__iterators_html_gaba386d9db6cadc6ad85c2552f63447bb"><div class="ttname"><a href="group__group__iterators.html#gaba386d9db6cadc6ad85c2552f63447bb">cgroup_read_stats_end</a></div><div class="ttdeci">int cgroup_read_stats_end(void **handle)</div><div class="ttdef"><b>Definition:</b> api.c:4686</div></div>
+<div class="ttc" id="agroup__group__iterators_html_gaced2fe331f19d599a3270db2440847cc"><div class="ttname"><a href="group__group__iterators.html#gaced2fe331f19d599a3270db2440847cc">cgroup_read_value_next</a></div><div class="ttdeci">int cgroup_read_value_next(void **handle, char *buffer, int max)</div><div class="ttdef"><b>Definition:</b> api.c:4628</div></div>
+<div class="ttc" id="agroup__group__iterators_html_gad348f041e283860cbf6bcea567e23a21"><div class="ttname"><a href="group__group__iterators.html#gad348f041e283860cbf6bcea567e23a21">cgroup_read_value_end</a></div><div class="ttdeci">int cgroup_read_value_end(void **handle)</div><div class="ttdef"><b>Definition:</b> api.c:4612</div></div>
+<div class="ttc" id="agroup__group__iterators_html_gad48ef653388ca6739a9b6bbb9d7da82e"><div class="ttname"><a href="group__group__iterators.html#gad48ef653388ca6739a9b6bbb9d7da82e">cgroup_get_all_controller_begin</a></div><div class="ttdeci">int cgroup_get_all_controller_begin(void **handle, struct controller_data *info)</div><div class="ttdef"><b>Definition:</b> api.c:5376</div></div>
+<div class="ttc" id="agroup__group__iterators_html_gad7218154192f733120e1025cc19d0a36"><div class="ttname"><a href="group__group__iterators.html#gad7218154192f733120e1025cc19d0a36">cgroup_get_task_begin</a></div><div class="ttdeci">int cgroup_get_task_begin(const char *cgroup, const char *controller, void **handle, pid_t *pid)</div><div class="ttdef"><b>Definition:</b> api.c:4791</div></div>
+<div class="ttc" id="agroup__group__iterators_html_gaeb955e5f4da551268380b1271d478816"><div class="ttname"><a href="group__group__iterators.html#gaeb955e5f4da551268380b1271d478816">cgroup_get_task_end</a></div><div class="ttdeci">int cgroup_get_task_end(void **handle)</div><div class="ttdef"><b>Definition:</b> api.c:4755</div></div>
+<div class="ttc" id="agroup__group__iterators_html_gaf3a0364682b7449ddccfb0862bbb565e"><div class="ttname"><a href="group__group__iterators.html#gaf3a0364682b7449ddccfb0862bbb565e">cgroup_get_task_next</a></div><div class="ttdeci">int cgroup_get_task_next(void **handle, pid_t *pid)</div><div class="ttdef"><b>Definition:</b> api.c:4769</div></div>
+<div class="ttc" id="agroup__group__iterators_html_gaf95587508fc15d74fd5ed0df58024be7"><div class="ttname"><a href="group__group__iterators.html#gaf95587508fc15d74fd5ed0df58024be7">cgroup_read_stats_next</a></div><div class="ttdeci">int cgroup_read_stats_next(void **handle, struct cgroup_stat *stat)</div><div class="ttdef"><b>Definition:</b> api.c:4704</div></div>
+<div class="ttc" id="agroup__group__iterators_html_gga29a572cbc0c07e2b02dfa0f1ac0067d3abf3c31227768960bd6622d2562aae3e1"><div class="ttname"><a href="group__group__iterators.html#gga29a572cbc0c07e2b02dfa0f1ac0067d3abf3c31227768960bd6622d2562aae3e1">CGROUP_WALK_TYPE_POST_DIR</a></div><div class="ttdeci">@ CGROUP_WALK_TYPE_POST_DIR</div><div class="ttdef"><b>Definition:</b> iterators.h:99</div></div>
+<div class="ttc" id="agroup__group__iterators_html_gga29a572cbc0c07e2b02dfa0f1ac0067d3af865296e6a0e55cff574fbb132b9f913"><div class="ttname"><a href="group__group__iterators.html#gga29a572cbc0c07e2b02dfa0f1ac0067d3af865296e6a0e55cff574fbb132b9f913">CGROUP_WALK_TYPE_PRE_DIR</a></div><div class="ttdeci">@ CGROUP_WALK_TYPE_PRE_DIR</div><div class="ttdef"><b>Definition:</b> iterators.h:86</div></div>
+<div class="ttc" id="agroup__group__iterators_html_gga608b4aa32e2db58fed34771a6a272444a24e202c59f318e63ad8cafcc1b4b102b"><div class="ttname"><a href="group__group__iterators.html#gga608b4aa32e2db58fed34771a6a272444a24e202c59f318e63ad8cafcc1b4b102b">CGROUP_FILE_TYPE_OTHER</a></div><div class="ttdeci">@ CGROUP_FILE_TYPE_OTHER</div><div class="ttdef"><b>Definition:</b> iterators.h:108</div></div>
+<div class="ttc" id="agroup__group__iterators_html_gga608b4aa32e2db58fed34771a6a272444a5418798fc4bf9634429c6af167a0e7c3"><div class="ttname"><a href="group__group__iterators.html#gga608b4aa32e2db58fed34771a6a272444a5418798fc4bf9634429c6af167a0e7c3">CGROUP_FILE_TYPE_DIR</a></div><div class="ttdeci">@ CGROUP_FILE_TYPE_DIR</div><div class="ttdef"><b>Definition:</b> iterators.h:107</div></div>
+<div class="ttc" id="agroup__group__iterators_html_gga608b4aa32e2db58fed34771a6a272444ad925cc45f1b34fe80e14fc6b05269740"><div class="ttname"><a href="group__group__iterators.html#gga608b4aa32e2db58fed34771a6a272444ad925cc45f1b34fe80e14fc6b05269740">CGROUP_FILE_TYPE_FILE</a></div><div class="ttdeci">@ CGROUP_FILE_TYPE_FILE</div><div class="ttdef"><b>Definition:</b> iterators.h:106</div></div>
+<div class="ttc" id="astructcgroup__file__info_html"><div class="ttname"><a href="structcgroup__file__info.html">cgroup_file_info</a></div><div class="ttdef"><b>Definition:</b> iterators.h:114</div></div>
+<div class="ttc" id="astructcgroup__file__info_html_a4c61dc7f726ba0784ff8c71473dbc6e6"><div class="ttname"><a href="structcgroup__file__info.html#a4c61dc7f726ba0784ff8c71473dbc6e6">cgroup_file_info::full_path</a></div><div class="ttdeci">const char * full_path</div><div class="ttdef"><b>Definition:</b> iterators.h:126</div></div>
+<div class="ttc" id="astructcgroup__file__info_html_a739c7f87593e36d8589d3ffa80b57059"><div class="ttname"><a href="structcgroup__file__info.html#a739c7f87593e36d8589d3ffa80b57059">cgroup_file_info::parent</a></div><div class="ttdeci">const char * parent</div><div class="ttdef"><b>Definition:</b> iterators.h:120</div></div>
+<div class="ttc" id="astructcgroup__file__info_html_a801424e68139c930e40ea24be4d96a68"><div class="ttname"><a href="structcgroup__file__info.html#a801424e68139c930e40ea24be4d96a68">cgroup_file_info::path</a></div><div class="ttdeci">const char * path</div><div class="ttdef"><b>Definition:</b> iterators.h:118</div></div>
+<div class="ttc" id="astructcgroup__file__info_html_a955506601f440d05cb11e4ee6b455c55"><div class="ttname"><a href="structcgroup__file__info.html#a955506601f440d05cb11e4ee6b455c55">cgroup_file_info::type</a></div><div class="ttdeci">enum cgroup_file_type type</div><div class="ttdef"><b>Definition:</b> iterators.h:116</div></div>
+<div class="ttc" id="astructcgroup__file__info_html_ad56dca35266f0f5f5c2666b946d72709"><div class="ttname"><a href="structcgroup__file__info.html#ad56dca35266f0f5f5c2666b946d72709">cgroup_file_info::depth</a></div><div class="ttdeci">short depth</div><div class="ttdef"><b>Definition:</b> iterators.h:131</div></div>
+<div class="ttc" id="astructcgroup__mount__point_html"><div class="ttname"><a href="structcgroup__mount__point.html">cgroup_mount_point</a></div><div class="ttdef"><b>Definition:</b> iterators.h:312</div></div>
+<div class="ttc" id="astructcgroup__mount__point_html_a849ccf1e77fffd5d45304c6adf0d2100"><div class="ttname"><a href="structcgroup__mount__point.html#a849ccf1e77fffd5d45304c6adf0d2100">cgroup_mount_point::name</a></div><div class="ttdeci">char name[FILENAME_MAX]</div><div class="ttdef"><b>Definition:</b> iterators.h:314</div></div>
+<div class="ttc" id="astructcgroup__mount__point_html_ad1e89dfc02cfd7341e2296086a4f251e"><div class="ttname"><a href="structcgroup__mount__point.html#ad1e89dfc02cfd7341e2296086a4f251e">cgroup_mount_point::path</a></div><div class="ttdeci">char path[FILENAME_MAX]</div><div class="ttdef"><b>Definition:</b> iterators.h:316</div></div>
+<div class="ttc" id="astructcgroup__stat_html"><div class="ttname"><a href="structcgroup__stat.html">cgroup_stat</a></div><div class="ttdef"><b>Definition:</b> iterators.h:234</div></div>
+<div class="ttc" id="astructcgroup_html"><div class="ttname"><a href="structcgroup.html">cgroup</a></div><div class="ttdef"><b>Definition:</b> libcgroup-internal.h:106</div></div>
+<div class="ttc" id="astructcontroller__data_html"><div class="ttname"><a href="structcontroller__data.html">controller_data</a></div><div class="ttdef"><b>Definition:</b> iterators.h:356</div></div>
+<div class="ttc" id="astructcontroller__data_html_a24be412cfb6c19f7a13a4bff9e55206e"><div class="ttname"><a href="structcontroller__data.html#a24be412cfb6c19f7a13a4bff9e55206e">controller_data::enabled</a></div><div class="ttdeci">int enabled</div><div class="ttdef"><b>Definition:</b> iterators.h:368</div></div>
+<div class="ttc" id="astructcontroller__data_html_a25e316f55473ca2b333b0d7e0ca644b4"><div class="ttname"><a href="structcontroller__data.html#a25e316f55473ca2b333b0d7e0ca644b4">controller_data::hierarchy</a></div><div class="ttdeci">int hierarchy</div><div class="ttdef"><b>Definition:</b> iterators.h:364</div></div>
+<div class="ttc" id="astructcontroller__data_html_a5474be4d8cc4553c94ca81c6a93f5a18"><div class="ttname"><a href="structcontroller__data.html#a5474be4d8cc4553c94ca81c6a93f5a18">controller_data::name</a></div><div class="ttdeci">char name[FILENAME_MAX]</div><div class="ttdef"><b>Definition:</b> iterators.h:358</div></div>
+<div class="ttc" id="astructcontroller__data_html_acd075c0bb48062bf720b68d0a30116eb"><div class="ttname"><a href="structcontroller__data.html#acd075c0bb48062bf720b68d0a30116eb">controller_data::num_cgroups</a></div><div class="ttdeci">int num_cgroups</div><div class="ttdef"><b>Definition:</b> iterators.h:366</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/jquery.js b/jquery.js
new file mode 100644 (file)
index 0000000..103c32d
--- /dev/null
+++ b/jquery.js
@@ -0,0 +1,35 @@
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
+/*! jQuery UI - v1.12.1 - 2019-01-27
+* http://jqueryui.com
+* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/resizable.js, widgets/mouse.js
+* Copyright jQuery Foundation and other contributors; Licensed MIT */
+
+(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}t.ui=t.ui||{},t.ui.version="1.12.1";var i=0,s=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,n,o=s.call(arguments,1),a=0,r=o.length;r>a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,o="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:o?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType,o=!s&&!n;return{element:i,isWindow:s,isDocument:n,offset:o?t(e).offset():{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:i.outerWidth(),height:i.outerHeight()}}},t.fn.position=function(n){if(!n||!n.of)return d.apply(this,arguments);n=t.extend({},n);var u,p,f,m,g,_,v=t(n.of),b=t.position.getWithinInfo(n.within),y=t.position.getScrollInfo(b),w=(n.collision||"flip").split(" "),x={};return _=s(v),v[0].preventDefault&&(n.at="left top"),p=_.width,f=_.height,m=_.offset,g=t.extend({},m),t.each(["my","at"],function(){var t,e,i=(n[this]||"").split(" ");1===i.length&&(i=r.test(i[0])?i.concat(["center"]):h.test(i[0])?["center"].concat(i):["center","center"]),i[0]=r.test(i[0])?i[0]:"center",i[1]=h.test(i[1])?i[1]:"center",t=l.exec(i[0]),e=l.exec(i[1]),x[this]=[t?t[0]:0,e?e[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===n.at[0]?g.left+=p:"center"===n.at[0]&&(g.left+=p/2),"bottom"===n.at[1]?g.top+=f:"center"===n.at[1]&&(g.top+=f/2),u=e(x.at,p,f),g.left+=u[0],g.top+=u[1],this.each(function(){var s,r,h=t(this),l=h.outerWidth(),c=h.outerHeight(),d=i(this,"marginLeft"),_=i(this,"marginTop"),k=l+d+i(this,"marginRight")+y.width,C=c+_+i(this,"marginBottom")+y.height,D=t.extend({},g),T=e(x.my,h.outerWidth(),h.outerHeight());"right"===n.my[0]?D.left-=l:"center"===n.my[0]&&(D.left-=l/2),"bottom"===n.my[1]?D.top-=c:"center"===n.my[1]&&(D.top-=c/2),D.left+=T[0],D.top+=T[1],s={marginLeft:d,marginTop:_},t.each(["left","top"],function(e,i){t.ui.position[w[e]]&&t.ui.position[w[e]][i](D,{targetWidth:p,targetHeight:f,elemWidth:l,elemHeight:c,collisionPosition:s,collisionWidth:k,collisionHeight:C,offset:[u[0]+T[0],u[1]+T[1]],my:n.my,at:n.at,within:b,elem:h})}),n.using&&(r=function(t){var e=m.left-D.left,i=e+p-l,s=m.top-D.top,r=s+f-c,u={target:{element:v,left:m.left,top:m.top,width:p,height:f},element:{element:h,left:D.left,top:D.top,width:l,height:c},horizontal:0>i?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("<div>"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div style='overflow:hidden;'></div>"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element
+},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/**
+ * Copyright (c) 2007 Ariel Flesler - aflesler â—‹ gmail â€¢ com | https://github.com/flesler
+ * Licensed under MIT
+ * @author Ariel Flesler
+ * @version 2.1.2
+ */
+;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1<b.axis.length;u&&(d/=2);b.offset=h(b.offset);b.over=h(b.over);return this.each(function(){function k(a){var k=$.extend({},b,{queue:!0,duration:d,complete:a&&function(){a.call(q,e,b)}});r.animate(f,k)}if(null!==a){var l=n(this),q=l?this.contentWindow||window:this,r=$(q),e=a,f={},t;switch(typeof e){case "number":case "string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(e)){e= h(e);break}e=l?$(e):$(e,q);case "object":if(e.length===0)return;if(e.is||e.style)t=(e=$(e)).offset()}var v=$.isFunction(b.offset)&&b.offset(q,e)||b.offset;$.each(b.axis.split(""),function(a,c){var d="x"===c?"Left":"Top",m=d.toLowerCase(),g="scroll"+d,h=r[g](),n=p.max(q,c);t?(f[g]=t[m]+(l?0:h-r.offset()[m]),b.margin&&(f[g]-=parseInt(e.css("margin"+d),10)||0,f[g]-=parseInt(e.css("border"+d+"Width"),10)||0),f[g]+=v[m]||0,b.over[m]&&(f[g]+=e["x"===c?"width":"height"]()*b.over[m])):(d=e[m],f[g]=d.slice&& "%"===d.slice(-1)?parseFloat(d)/100*n:d);b.limit&&/^\d+$/.test(f[g])&&(f[g]=0>=f[g]?0:Math.min(f[g],n));!a&&1<b.axis.length&&(h===f[g]?f={}:u&&(k(b.onAfterFirst),f={}))});k(b.onAfter)}})};p.max=function(a,d){var b="x"===d?"Width":"Height",h="scroll"+b;if(!n(a))return a[h]-$(a)[b.toLowerCase()]();var b="client"+b,k=a.ownerDocument||a.document,l=k.documentElement,k=k.body;return Math.max(l[h],k[h])-Math.min(l[b],k[b])};$.Tween.propHooks.scrollLeft=$.Tween.propHooks.scrollTop={get:function(a){return $(a.elem)[a.prop]()}, set:function(a){var d=this.get(a);if(a.options.interrupt&&a._last&&a._last!==d)return $(a.elem).stop();var b=Math.round(a.now);d!==b&&($(a.elem)[a.prop](b),a._last=this.get(a))}};return p});
+/*!
+ PowerTip v1.3.1 (2018-04-15)
+ https://stevenbenner.github.io/jquery-powertip/
+ Copyright (c) 2018 Steven Benner (http://stevenbenner.com/).
+ Released under MIT license.
+ https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt
+*/
+(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}else if(typeof module==="object"&&module.exports){module.exports=factory(require("jquery"))}else{factory(root.jQuery)}})(this,function($){var $document=$(document),$window=$(window),$body=$("body");var DATA_DISPLAYCONTROLLER="displayController",DATA_HASACTIVEHOVER="hasActiveHover",DATA_FORCEDOPEN="forcedOpen",DATA_HASMOUSEMOVE="hasMouseMove",DATA_MOUSEONTOTIP="mouseOnToPopup",DATA_ORIGINALTITLE="originalTitle",DATA_POWERTIP="powertip",DATA_POWERTIPJQ="powertipjq",DATA_POWERTIPTARGET="powertiptarget",EVENT_NAMESPACE=".powertip",RAD2DEG=180/Math.PI,MOUSE_EVENTS=["click","dblclick","mousedown","mouseup","mousemove","mouseover","mouseout","mouseenter","mouseleave","contextmenu"];var session={tooltips:null,isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,closeDelayTimeout:null,mouseTrackingActive:false,delayInProgress:false,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0};var Collision={none:0,top:1,bottom:2,left:4,right:8};$.fn.powerTip=function(opts,arg){var targetElements=this,options,tipController;if(!targetElements.length){return targetElements}if($.type(opts)==="string"&&$.powerTip[opts]){return $.powerTip[opts].call(targetElements,targetElements,arg)}options=$.extend({},$.fn.powerTip.defaults,opts);tipController=new TooltipController(options);initTracking();targetElements.each(function elementSetup(){var $this=$(this),dataPowertip=$this.data(DATA_POWERTIP),dataElem=$this.data(DATA_POWERTIPJQ),dataTarget=$this.data(DATA_POWERTIPTARGET),title=$this.attr("title");if(!dataPowertip&&!dataTarget&&!dataElem&&title){$this.data(DATA_POWERTIP,title);$this.data(DATA_ORIGINALTITLE,title);$this.removeAttr("title")}$this.data(DATA_DISPLAYCONTROLLER,new DisplayController($this,options,tipController))});if(!options.manual){$.each(options.openEvents,function(idx,evt){if($.inArray(evt,options.closeEvents)>-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference<options.intentSensitivity){cancelClose();closeAnyDelayed();tipController.showTip(element)}else{session.previousX=session.currentX;session.previousY=session.currentY;openTooltip()}}function cancelTimer(stopClose){hoverTimer=clearTimeout(hoverTimer);if(session.closeDelayTimeout&&myCloseDelay===session.closeDelayTimeout||stopClose){cancelClose()}}function cancelClose(){session.closeDelayTimeout=clearTimeout(session.closeDelayTimeout);session.delayInProgress=false}function closeAnyDelayed(){if(session.delayInProgress&&session.activeHover&&!session.activeHover.is(element)){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide(true)}}function repositionTooltip(){tipController.resetPosition(element)}this.show=openTooltip;this.hide=closeTooltip;this.cancel=cancelTimer;this.resetPosition=repositionTooltip}function PlacementCalculator(){function computePlacementCoords(element,placement,tipWidth,tipHeight,offset){var placementBase=placement.split("-")[0],coords=new CSSCoordinates,position;if(isSvgElement(element)){position=getSvgPlacement(element,placementBase)}else{position=getHtmlPlacement(element,placementBase)}switch(placement){case"n":coords.set("left",position.left-tipWidth/2);coords.set("bottom",session.windowHeight-position.top+offset);break;case"e":coords.set("left",position.left+offset);coords.set("top",position.top-tipHeight/2);break;case"s":coords.set("left",position.left-tipWidth/2);coords.set("top",position.top+offset);break;case"w":coords.set("top",position.top-tipHeight/2);coords.set("right",session.windowWidth-position.left+offset);break;case"nw":coords.set("bottom",session.windowHeight-position.top+offset);coords.set("right",session.windowWidth-position.left-20);break;case"nw-alt":coords.set("left",position.left);coords.set("bottom",session.windowHeight-position.top+offset);break;case"ne":coords.set("left",position.left-20);coords.set("bottom",session.windowHeight-position.top+offset);break;case"ne-alt":coords.set("bottom",session.windowHeight-position.top+offset);coords.set("right",session.windowWidth-position.left);break;case"sw":coords.set("top",position.top+offset);coords.set("right",session.windowWidth-position.left-20);break;case"sw-alt":coords.set("left",position.left);coords.set("top",position.top+offset);break;case"se":coords.set("left",position.left-20);coords.set("top",position.top+offset);break;case"se-alt":coords.set("top",position.top+offset);coords.set("right",session.windowWidth-position.left);break}return coords}function getHtmlPlacement(element,placement){var objectOffset=element.offset(),objectWidth=element.outerWidth(),objectHeight=element.outerHeight(),left,top;switch(placement){case"n":left=objectOffset.left+objectWidth/2;top=objectOffset.top;break;case"e":left=objectOffset.left+objectWidth;top=objectOffset.top+objectHeight/2;break;case"s":left=objectOffset.left+objectWidth/2;top=objectOffset.top+objectHeight;break;case"w":left=objectOffset.left;top=objectOffset.top+objectHeight/2;break;case"nw":left=objectOffset.left;top=objectOffset.top;break;case"ne":left=objectOffset.left+objectWidth;top=objectOffset.top;break;case"sw":left=objectOffset.left;top=objectOffset.top+objectHeight;break;case"se":left=objectOffset.left+objectWidth;top=objectOffset.top+objectHeight;break}return{top:top,left:left}}function getSvgPlacement(element,placement){var svgElement=element.closest("svg")[0],domElement=element[0],point=svgElement.createSVGPoint(),boundingBox=domElement.getBBox(),matrix=domElement.getScreenCTM(),halfWidth=boundingBox.width/2,halfHeight=boundingBox.height/2,placements=[],placementKeys=["nw","n","ne","e","se","s","sw","w"],coords,rotation,steps,x;function pushPlacement(){placements.push(point.matrixTransform(matrix))}point.x=boundingBox.x;point.y=boundingBox.y;pushPlacement();point.x+=halfWidth;pushPlacement();point.x+=halfWidth;pushPlacement();point.y+=halfHeight;pushPlacement();point.y+=halfHeight;pushPlacement();point.x-=halfWidth;pushPlacement();point.x-=halfWidth;pushPlacement();point.y-=halfHeight;pushPlacement();if(placements[0].y!==placements[1].y||placements[0].x!==placements[7].x){rotation=Math.atan2(matrix.b,matrix.a)*RAD2DEG;steps=Math.ceil((rotation%360-22.5)/45);if(steps<1){steps+=8}while(steps--){placementKeys.push(placementKeys.shift())}}for(x=0;x<placements.length;x++){if(placementKeys[x]===placement){coords=placements[x];break}}return{top:coords.y+session.scrollTop,left:coords.x+session.scrollLeft}}this.compute=computePlacementCoords}function TooltipController(options){var placementCalculator=new PlacementCalculator,tipElement=$("#"+options.popupId);if(tipElement.length===0){tipElement=$("<div/>",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.top<viewportTop||Math.abs(coords.bottom-session.windowHeight)-elementHeight<viewportTop){collisions|=Collision.top}if(coords.top+elementHeight>viewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.left<viewportLeft||coords.right+elementWidth>viewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right<viewportLeft){collisions|=Collision.right}return collisions}function countFlags(value){var count=0;while(value){value&=value-1;count++}return count}return $.powerTip});/*!
+ * jQuery UI Touch Punch 0.2.3
+ *
+ * Copyright 2011–2014, Dave Furfero
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ *
+ * Depends:
+ *  jquery.ui.widget.js
+ *  jquery.ui.mouse.js
+ */
+!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017
+ * http://www.smartmenus.org/
+ * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("<span/>").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('<div class="sm-jquery-disable-overlay"/>').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('<span class="scroll-up"><span class="scroll-up-arrow"></span></span>')[0],$('<span class="scroll-down"><span class="scroll-down-arrow"></span></span>')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y<o.upEnd)&&a.eq(o.up?1:0).show(),o.y==n)mouse&&a.eq(o.up?0:1).hide(),this.menuScrollStop(t);else if(!e){this.opts.scrollAccelerate&&o.step<this.opts.scrollStep&&(o.step+=.2);var h=this;this.scrollTimeout=requestAnimationFrame(function(){h.menuScroll(t)})}},menuScrollMousewheel:function(t,e){if(this.getClosestMenu(e.target)==t[0]){e=e.originalEvent;var i=(e.wheelDelta||-e.detail)>0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$});
\ No newline at end of file
diff --git a/libcgroup-internal_8h_source.html b/libcgroup-internal_8h_source.html
new file mode 100644 (file)
index 0000000..966e398
--- /dev/null
@@ -0,0 +1,400 @@
+<!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>libcgroup: src/libcgroup-internal.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">libcgroup-internal.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Copyright IBM Corporation. 2008</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * Author:  Dhaval Giani &lt;dhaval@linux.vnet.ibm.com&gt;</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify it</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * under the terms of version 2.1 of the GNU Lesser General Public License</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * as published by the Free Software Foundation.</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> * This program is distributed in the hope that it would be useful, but</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="preprocessor">#ifndef __LIBCG_INTERNAL</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160; </div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#define __LIBCG_INTERNAL</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160; </div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160; </div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &quot;config.h&quot;</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;dirent.h&gt;</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;fts.h&gt;</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;libcgroup.h&gt;</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;limits.h&gt;</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;mntent.h&gt;</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;pthread.h&gt;</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;sys/stat.h&gt;</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;setjmp.h&gt;</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160; </div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment">/* Maximum number of mount points/controllers */</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#define MAX_MNT_ELEMENTS    16</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment">/* Estimated number of groups created */</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#define MAX_GROUP_ELEMENTS  128</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160; </div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">/* Maximum length of a value */</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#define CG_CONTROL_VALUE_MAX 4096</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160; </div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#define CG_NV_MAX 100</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#define CG_CONTROLLER_MAX 100</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#define CG_OPTIONS_MAX 100</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">/* Max number of mounted hierarchies. Event if one controller is mounted per</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment"> * hier, it can not exceed CG_CONTROLLER_MAX</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor">#define CG_HIER_MAX  CG_CONTROLLER_MAX</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160; </div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="comment">/* Definitions for the uid and gid members of a cgroup_rules */</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="comment">/* FIXME: These really should not be negative values */</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#define CGRULE_INVALID ((uid_t) -1)</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">#define CGRULE_WILD ((uid_t) -2)</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160; </div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="preprocessor">#define CGRULE_SUCCESS_STORE_PID    &quot;SUCCESS_STORE_PID&quot;</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160; </div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="comment">/* Definitions for the cgrules options field */</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="preprocessor">#define CGRULE_OPTION_IGNORE        &quot;ignore&quot;</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160; </div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="preprocessor">#define CGCONFIG_CONF_FILE      &quot;/etc/cgconfig.conf&quot;</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="comment">/* Minimum number of file in template file list for cgrulesengd */</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="preprocessor">#define CGCONFIG_CONF_FILES_LIST_MINIMUM_SIZE   4</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="preprocessor">#define CGCONFIG_CONF_DIR               &quot;/etc/cgconfig.d&quot;</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160; </div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="preprocessor">#define CGRULES_CONF_FILE       &quot;/etc/cgrules.conf&quot;</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="preprocessor">#define CGRULES_CONF_DIR        &quot;/etc/cgrules.d&quot;</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="preprocessor">#define CGRULES_MAX_FIELDS_PER_LINE     3</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160; </div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="preprocessor">#define CGROUP_BUFFER_LEN (5 * FILENAME_MAX)</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160; </div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="comment">/* Maximum length of a key(&lt;user&gt;:&lt;process name&gt;) in the daemon config file */</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="preprocessor">#define CGROUP_RULE_MAXKEY  (LOGIN_NAME_MAX + FILENAME_MAX + 1)</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160; </div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="comment">/* Maximum length of a line in the daemon config file */</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<span class="preprocessor">#define CGROUP_RULE_MAXLINE (FILENAME_MAX + CGROUP_RULE_MAXKEY + \</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="preprocessor">    CG_CONTROLLER_MAX + 3)</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160; </div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;<span class="preprocessor">#define CGROUP_FILE_PREFIX  &quot;cgroup&quot;</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160; </div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;<span class="preprocessor">#define cgroup_err(x...) cgroup_log(CGROUP_LOG_ERROR, x)</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="preprocessor">#define cgroup_warn(x...) cgroup_log(CGROUP_LOG_WARNING, x)</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;<span class="preprocessor">#define cgroup_info(x...) cgroup_log(CGROUP_LOG_INFO, x)</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;<span class="preprocessor">#define cgroup_dbg(x...) cgroup_log(CGROUP_LOG_DEBUG, x)</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160; </div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;<span class="preprocessor">#define CGROUP_DEFAULT_LOGLEVEL CGROUP_LOG_ERROR</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160; </div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<span class="preprocessor">#define max(x,y) ((y)&lt;(x)?(x):(y))</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;<span class="preprocessor">#define min(x,y) ((y)&gt;(x)?(x):(y))</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160; </div>
+<div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="structcontrol__value.html">   90</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcontrol__value.html">control_value</a> {</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    <span class="keywordtype">char</span> name[FILENAME_MAX];</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    <span class="keywordtype">char</span> value[CG_CONTROL_VALUE_MAX];</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160; </div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;    <span class="comment">/* cgget uses this field for values that span multiple lines */</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    <span class="keywordtype">char</span> *multiline_value;</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;    <span class="keywordtype">bool</span> dirty;</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;};</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160; </div>
+<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="structcgroup__controller.html">   99</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcgroup__controller.html">cgroup_controller</a> {</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    <span class="keywordtype">char</span> name[FILENAME_MAX];</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    <span class="keyword">struct </span><a class="code" href="structcontrol__value.html">control_value</a> *values[CG_NV_MAX];</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    <span class="keyword">struct </span><a class="code" href="structcgroup.html">cgroup</a> *<a class="code" href="structcgroup.html">cgroup</a>;</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <span class="keywordtype">int</span> index;</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;};</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160; </div>
+<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="structcgroup.html">  106</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcgroup.html">cgroup</a> {</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="keywordtype">char</span> name[FILENAME_MAX];</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <span class="keyword">struct </span><a class="code" href="structcgroup__controller.html">cgroup_controller</a> *controller[CG_CONTROLLER_MAX];</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    <span class="keywordtype">int</span> index;</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    uid_t tasks_uid;</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    gid_t tasks_gid;</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    mode_t task_fperm;</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    uid_t control_uid;</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    gid_t control_gid;</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    mode_t control_fperm;</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    mode_t control_dperm;</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;};</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160; </div>
+<div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="structcg__mount__point.html">  119</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcg__mount__point.html">cg_mount_point</a> {</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    <span class="keywordtype">char</span> path[FILENAME_MAX];</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    <span class="keyword">struct </span><a class="code" href="structcg__mount__point.html">cg_mount_point</a> *next;</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;};</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160; </div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;<span class="keyword">enum</span> cg_version_t {</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    CGROUP_UNK = 0,</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    CGROUP_V1,</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    CGROUP_V2,</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;};</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160; </div>
+<div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="structcg__mount__table__s.html">  130</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcg__mount__table__s.html">cg_mount_table_s</a> {</div>
+<div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="structcg__mount__table__s.html#a9704fa3ec3674f6d433345ea52b6aeef">  132</a></span>&#160;    <span class="keywordtype">char</span> <a class="code" href="structcg__mount__table__s.html#aa9b2cc62fb6cb35334f3d85d660c9fa6">name</a>[FILENAME_MAX];</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    <span class="keyword">struct </span><a class="code" href="structcg__mount__point.html">cg_mount_point</a> <a class="code" href="structcg__mount__table__s.html#a9704fa3ec3674f6d433345ea52b6aeef">mount</a>;</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;    <span class="keywordtype">int</span> index;</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    <span class="keyword">enum</span> cg_version_t version;</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;};</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160; </div>
+<div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="structcgroup__rules__data.html">  141</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcgroup__rules__data.html">cgroup_rules_data</a> {</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    pid_t   pid; <span class="comment">/* pid of the process which needs to change group */</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160; </div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    <span class="comment">/* Details of user under consideration for destination cgroup */</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    <span class="keyword">struct </span>passwd   *pw;</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    <span class="comment">/* Gid of the process */</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    gid_t   gid;</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;};</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160; </div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;<span class="comment">/* A rule that maps UID/GID to a cgroup */</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="structcgroup__rule.html">  151</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcgroup__rule.html">cgroup_rule</a> {</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    uid_t uid;</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    gid_t gid;</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    <span class="keywordtype">bool</span> is_ignore;</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    <span class="keywordtype">char</span> *procname;</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    <span class="keywordtype">char</span> username[LOGIN_NAME_MAX];</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    <span class="keywordtype">char</span> destination[FILENAME_MAX];</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    <span class="keywordtype">char</span> *controllers[MAX_MNT_ELEMENTS];</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    <span class="keyword">struct </span><a class="code" href="structcgroup__rule.html">cgroup_rule</a> *next;</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;};</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160; </div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;<span class="comment">/* Container for a list of rules */</span></div>
+<div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="structcgroup__rule__list.html">  163</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcgroup__rule__list.html">cgroup_rule_list</a> {</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    <span class="keyword">struct </span><a class="code" href="structcgroup__rule.html">cgroup_rule</a> *head;</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;    <span class="keyword">struct </span><a class="code" href="structcgroup__rule.html">cgroup_rule</a> *tail;</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    <span class="keywordtype">int</span> len;</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;};</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160; </div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;<span class="comment">/*The walk_tree handle */</span></div>
+<div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="structcgroup__tree__handle.html">  170</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcgroup__tree__handle.html">cgroup_tree_handle</a> {</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    FTS *fts;</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    <span class="keywordtype">int</span> flags;</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;};</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160; </div>
+<div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="structcgroup__dictionary__item.html">  182</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcgroup__dictionary__item.html">cgroup_dictionary_item</a> {</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *name;</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *value;</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    <span class="keyword">struct </span><a class="code" href="structcgroup__dictionary__item.html">cgroup_dictionary_item</a> *next;</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;};</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160; </div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;<span class="comment">/* Flags for cgroup_dictionary_create */</span></div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;<span class="preprocessor">#define CG_DICT_DONT_FREE_ITEMS     1</span></div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160; </div>
+<div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="structcgroup__dictionary.html">  205</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcgroup__dictionary.html">cgroup_dictionary</a> {</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;    <span class="keyword">struct </span><a class="code" href="structcgroup__dictionary__item.html">cgroup_dictionary_item</a> *head;</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;    <span class="keyword">struct </span><a class="code" href="structcgroup__dictionary__item.html">cgroup_dictionary_item</a> *tail;</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    <span class="keywordtype">int</span> flags;</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;};</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160; </div>
+<div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="structcgroup__dictionary__iterator.html">  212</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcgroup__dictionary__iterator.html">cgroup_dictionary_iterator</a> {</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    <span class="keyword">struct </span><a class="code" href="structcgroup__dictionary__item.html">cgroup_dictionary_item</a> *item;</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;};</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160; </div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;<span class="keyword">extern</span> __thread <span class="keywordtype">int</span> last_errno;</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160; </div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;<span class="keyword">extern</span> jmp_buf parser_error_env;</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160; </div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;<span class="comment">/* Internal API */</span></div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;<span class="keywordtype">char</span> *cg_build_path(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> *type);</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;<span class="keywordtype">int</span> cgroup_get_uid_gid_from_procfs(pid_t pid, uid_t *euid, gid_t *egid);</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;<span class="keywordtype">int</span> cgroup_get_procname_from_procfs(pid_t pid, <span class="keywordtype">char</span> **procname);</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;<span class="keywordtype">int</span> cg_mkdir_p(<span class="keyword">const</span> <span class="keywordtype">char</span> *path);</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;<span class="keyword">struct </span><a class="code" href="structcgroup.html">cgroup</a> *create_cgroup_from_name_value_pairs(<span class="keyword">const</span> <span class="keywordtype">char</span> *name,</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;        <span class="keyword">struct</span> <a class="code" href="structcontrol__value.html">control_value</a> *name_value, <span class="keywordtype">int</span> nv_number);</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;<span class="keywordtype">void</span> init_cgroup_table(<span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> *cgroups, <span class="keywordtype">size_t</span> count);</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160; </div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;<span class="comment"> * Main mounting structures</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;<span class="keyword">extern</span> <span class="keyword">struct </span><a class="code" href="structcg__mount__table__s.html">cg_mount_table_s</a> cg_mount_table[CG_CONTROLLER_MAX];</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;<span class="keyword">extern</span> pthread_rwlock_t cg_mount_table_lock;</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160; </div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;<span class="comment"> * config related structures</span></div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160; </div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;<span class="keyword">extern</span> __thread <span class="keywordtype">char</span> *cg_namespace_table[CG_CONTROLLER_MAX];</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160; </div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;<span class="comment"> * config related API</span></div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;<span class="keywordtype">int</span> cgroup_config_insert_cgroup(<span class="keywordtype">char</span> *cg_name);</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;<span class="keywordtype">int</span> cgroup_config_parse_controller_options(<span class="keywordtype">char</span> *controller,</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;        <span class="keyword">struct</span> <a class="code" href="structcgroup__dictionary.html">cgroup_dictionary</a> *values);</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;<span class="keywordtype">int</span> template_config_insert_cgroup(<span class="keywordtype">char</span> *cg_name);</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;<span class="keywordtype">int</span> template_config_parse_controller_options(<span class="keywordtype">char</span> *controller,</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;        <span class="keyword">struct</span> <a class="code" href="structcgroup__dictionary.html">cgroup_dictionary</a> *values);</div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;<span class="keywordtype">int</span> template_config_group_task_perm(<span class="keywordtype">char</span> *perm_type, <span class="keywordtype">char</span> *value);</div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;<span class="keywordtype">int</span> template_config_group_admin_perm(<span class="keywordtype">char</span> *perm_type, <span class="keywordtype">char</span> *value);</div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;<span class="keywordtype">int</span> cgroup_config_group_task_perm(<span class="keywordtype">char</span> *perm_type, <span class="keywordtype">char</span> *value);</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;<span class="keywordtype">int</span> cgroup_config_group_admin_perm(<span class="keywordtype">char</span> *perm_type, <span class="keywordtype">char</span> *value);</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;<span class="keywordtype">int</span> cgroup_config_insert_into_mount_table(<span class="keywordtype">char</span> *<a class="code" href="structcg__mount__table__s.html#aa9b2cc62fb6cb35334f3d85d660c9fa6">name</a>, <span class="keywordtype">char</span> *mount_point);</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;<span class="keywordtype">int</span> cgroup_config_insert_into_namespace_table(<span class="keywordtype">char</span> *<a class="code" href="structcg__mount__table__s.html#aa9b2cc62fb6cb35334f3d85d660c9fa6">name</a>, <span class="keywordtype">char</span> *mount_point);</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;<span class="keywordtype">void</span> cgroup_config_cleanup_mount_table(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;<span class="keywordtype">void</span> cgroup_config_cleanup_namespace_table(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;<span class="keywordtype">int</span> cgroup_config_define_default(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160; </div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">int</span> cgroup_dictionary_create(<span class="keyword">struct</span> <a class="code" href="structcgroup__dictionary.html">cgroup_dictionary</a> **dict,</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;        <span class="keywordtype">int</span> flags);</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">int</span> cgroup_dictionary_add(<span class="keyword">struct</span> <a class="code" href="structcgroup__dictionary.html">cgroup_dictionary</a> *dict,</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structcg__mount__table__s.html#aa9b2cc62fb6cb35334f3d85d660c9fa6">name</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *value);</div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">int</span> cgroup_dictionary_free(<span class="keyword">struct</span> <a class="code" href="structcgroup__dictionary.html">cgroup_dictionary</a> *dict);</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160; </div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">int</span> cgroup_dictionary_iterator_begin(<span class="keyword">struct</span> <a class="code" href="structcgroup__dictionary.html">cgroup_dictionary</a> *dict,</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;        <span class="keywordtype">void</span> **handle, <span class="keyword">const</span> <span class="keywordtype">char</span> **<a class="code" href="structcg__mount__table__s.html#aa9b2cc62fb6cb35334f3d85d660c9fa6">name</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> **value);</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">int</span> cgroup_dictionary_iterator_next(<span class="keywordtype">void</span> **handle,</div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> **<a class="code" href="structcg__mount__table__s.html#aa9b2cc62fb6cb35334f3d85d660c9fa6">name</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> **value);</div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> cgroup_dictionary_iterator_end(<span class="keywordtype">void</span> **handle);</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160; </div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;<span class="keywordtype">int</span> cg_chmod_path(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, mode_t mode, <span class="keywordtype">int</span> owner_is_umask);</div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160; </div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;<span class="keywordtype">int</span> cgroup_get_controller_version(<span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> controller,</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;        <span class="keyword">enum</span> cg_version_t * <span class="keyword">const</span> version);</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160; </div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;<span class="keywordtype">int</span> cgroup_build_tasks_procs_path(<span class="keywordtype">char</span> * <span class="keyword">const</span> path,</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;                  <span class="keywordtype">size_t</span> path_sz, <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> cg_name,</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;                  <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> ctrl_name);</div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160; </div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;<span class="keywordtype">char</span> *cg_build_path_locked(<span class="keyword">const</span> <span class="keywordtype">char</span> *setting, <span class="keywordtype">char</span> *path,</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;               <span class="keyword">const</span> <span class="keywordtype">char</span> *controller);</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160; </div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;<span class="keywordtype">int</span> cgroup_fill_cgc(<span class="keyword">struct</span> dirent *ctrl_dir, <span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> *<a class="code" href="structcgroup.html">cgroup</a>,</div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;            <span class="keyword">struct</span> <a class="code" href="structcgroup__controller.html">cgroup_controller</a> *cgc, <span class="keywordtype">int</span> cg_index);</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160; </div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;<span class="keywordtype">int</span> cgroup_test_subsys_mounted(<span class="keyword">const</span> <span class="keywordtype">char</span> *ctrl_name);</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160; </div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;<span class="preprocessor">#ifdef UNIT_TEST</span></div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160; </div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;<span class="preprocessor">#define TEST_PROC_PID_CGROUP_FILE &quot;test-procpidcgroup&quot;</span></div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160; </div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;<span class="keywordtype">int</span> cgroup_parse_rules_options(<span class="keywordtype">char</span> *options,</div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;                   <span class="keyword">struct</span> <a class="code" href="structcgroup__rule.html">cgroup_rule</a> * <span class="keyword">const</span> rule);</div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160; </div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;<span class="keywordtype">int</span> cg_get_cgroups_from_proc_cgroups(pid_t pid, <span class="keywordtype">char</span> *cgroup_list[],</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;                     <span class="keywordtype">char</span> *controller_list[],</div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;                     <span class="keywordtype">int</span> list_len);</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160; </div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;<span class="keywordtype">bool</span> cgroup_compare_ignore_rule(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structcgroup__rule.html">cgroup_rule</a> * <span class="keyword">const</span> rule,</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;                pid_t pid, <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> procname);</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160; </div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;<span class="keywordtype">bool</span> cgroup_compare_wildcard_procname(<span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> rule_procname,</div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;                      <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> procname);</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160; </div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;<span class="keywordtype">int</span> cgroup_process_v1_mnt(<span class="keywordtype">char</span> *controllers[], <span class="keyword">struct</span> mntent *ent,</div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;              <span class="keywordtype">int</span> *mnt_tbl_idx);</div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160; </div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;<span class="keywordtype">int</span> cgroup_process_v2_mnt(<span class="keyword">struct</span> mntent *ent, <span class="keywordtype">int</span> *mnt_tbl_idx);</div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160; </div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;<span class="keywordtype">int</span> cgroup_set_values_recursive(<span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> base,</div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;    <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structcgroup__controller.html">cgroup_controller</a> * <span class="keyword">const</span> controller,</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;    <span class="keywordtype">bool</span> ignore_non_dirty_failures);</div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160; </div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;<span class="keywordtype">int</span> cgroup_chown_chmod_tasks(<span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> cg_path,</div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;                 uid_t uid, gid_t gid, mode_t fperm);</div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160; </div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;<span class="keywordtype">int</span> cgroupv2_subtree_control(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> *ctrl_name,</div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;                 <span class="keywordtype">bool</span> enable);</div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160; </div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;<span class="keywordtype">int</span> cgroupv2_get_subtree_control(<span class="keyword">const</span> <span class="keywordtype">char</span> *path,</div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;                 <span class="keyword">const</span> <span class="keywordtype">char</span> *ctrl_name,</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;                 <span class="keywordtype">bool</span> * <span class="keyword">const</span> enabled);</div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160; </div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;<span class="keywordtype">int</span> cgroupv2_controller_enabled(<span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> cg_name,</div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;                <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> ctrl_name);</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160; </div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* UNIT_TEST */</span><span class="preprocessor"></span></div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160; </div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;} <span class="comment">/* extern &quot;C&quot; */</span></div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160; </div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="astructcg__mount__point_html"><div class="ttname"><a href="structcg__mount__point.html">cg_mount_point</a></div><div class="ttdef"><b>Definition:</b> libcgroup-internal.h:119</div></div>
+<div class="ttc" id="astructcg__mount__table__s_html"><div class="ttname"><a href="structcg__mount__table__s.html">cg_mount_table_s</a></div><div class="ttdef"><b>Definition:</b> libcgroup-internal.h:130</div></div>
+<div class="ttc" id="astructcg__mount__table__s_html_a9704fa3ec3674f6d433345ea52b6aeef"><div class="ttname"><a href="structcg__mount__table__s.html#a9704fa3ec3674f6d433345ea52b6aeef">cg_mount_table_s::mount</a></div><div class="ttdeci">struct cg_mount_point mount</div><div class="ttdef"><b>Definition:</b> libcgroup-internal.h:136</div></div>
+<div class="ttc" id="astructcg__mount__table__s_html_aa9b2cc62fb6cb35334f3d85d660c9fa6"><div class="ttname"><a href="structcg__mount__table__s.html#aa9b2cc62fb6cb35334f3d85d660c9fa6">cg_mount_table_s::name</a></div><div class="ttdeci">char name[FILENAME_MAX]</div><div class="ttdef"><b>Definition:</b> libcgroup-internal.h:132</div></div>
+<div class="ttc" id="astructcgroup__controller_html"><div class="ttname"><a href="structcgroup__controller.html">cgroup_controller</a></div><div class="ttdef"><b>Definition:</b> libcgroup-internal.h:99</div></div>
+<div class="ttc" id="astructcgroup__dictionary__item_html"><div class="ttname"><a href="structcgroup__dictionary__item.html">cgroup_dictionary_item</a></div><div class="ttdef"><b>Definition:</b> libcgroup-internal.h:182</div></div>
+<div class="ttc" id="astructcgroup__dictionary__iterator_html"><div class="ttname"><a href="structcgroup__dictionary__iterator.html">cgroup_dictionary_iterator</a></div><div class="ttdef"><b>Definition:</b> libcgroup-internal.h:212</div></div>
+<div class="ttc" id="astructcgroup__dictionary_html"><div class="ttname"><a href="structcgroup__dictionary.html">cgroup_dictionary</a></div><div class="ttdef"><b>Definition:</b> libcgroup-internal.h:205</div></div>
+<div class="ttc" id="astructcgroup__rule__list_html"><div class="ttname"><a href="structcgroup__rule__list.html">cgroup_rule_list</a></div><div class="ttdef"><b>Definition:</b> libcgroup-internal.h:163</div></div>
+<div class="ttc" id="astructcgroup__rule_html"><div class="ttname"><a href="structcgroup__rule.html">cgroup_rule</a></div><div class="ttdef"><b>Definition:</b> libcgroup-internal.h:151</div></div>
+<div class="ttc" id="astructcgroup__rules__data_html"><div class="ttname"><a href="structcgroup__rules__data.html">cgroup_rules_data</a></div><div class="ttdef"><b>Definition:</b> libcgroup-internal.h:141</div></div>
+<div class="ttc" id="astructcgroup__tree__handle_html"><div class="ttname"><a href="structcgroup__tree__handle.html">cgroup_tree_handle</a></div><div class="ttdef"><b>Definition:</b> libcgroup-internal.h:170</div></div>
+<div class="ttc" id="astructcgroup_html"><div class="ttname"><a href="structcgroup.html">cgroup</a></div><div class="ttdef"><b>Definition:</b> libcgroup-internal.h:106</div></div>
+<div class="ttc" id="astructcontrol__value_html"><div class="ttname"><a href="structcontrol__value.html">control_value</a></div><div class="ttdef"><b>Definition:</b> libcgroup-internal.h:90</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/libcgroup_8h_source.html b/libcgroup_8h_source.html
new file mode 100644 (file)
index 0000000..2c3805f
--- /dev/null
@@ -0,0 +1,109 @@
+<!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>libcgroup: include/libcgroup.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">libcgroup.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Copyright IBM Corporation. 2007</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * Author:  Balbir Singh &lt;balbir@linux.vnet.ibm.com&gt;</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify it</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * under the terms of version 2.1 of the GNU Lesser General Public License</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * as published by the Free Software Foundation.</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> * This program is distributed in the hope that it would be useful, but</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160; </div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#ifndef _LIBCGROUP_H</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#define _LIBCGROUP_H</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160; </div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#define _LIBCGROUP_H_INSIDE</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160; </div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;libcgroup/error.h&gt;</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;libcgroup/init.h&gt;</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;libcgroup/iterators.h&gt;</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;libcgroup/groups.h&gt;</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;libcgroup/tasks.h&gt;</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;libcgroup/config.h&gt;</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;libcgroup/log.h&gt;</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160; </div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#undef _LIBCGROUP_H_INSIDE</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160; </div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* _LIBCGROUP_H  */</span><span class="preprocessor"></span></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/log_8h_source.html b/log_8h_source.html
new file mode 100644 (file)
index 0000000..a419c58
--- /dev/null
@@ -0,0 +1,130 @@
+<!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>libcgroup: include/libcgroup/log.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_66a7763e2a9b96033a682558820d533e.html">libcgroup</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">log.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#ifndef _LIBCGROUP_LOG_H</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#define _LIBCGROUP_LOG_H</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160; </div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="preprocessor">#ifndef _LIBCGROUP_H_INSIDE</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="preprocessor">#error &quot;Only &lt;libcgroup.h&gt; should be included directly.&quot;</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160; </div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#ifndef SWIG</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &lt;features.h&gt;</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160; </div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#include &lt;stdarg.h&gt;</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160; </div>
+<div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="group__group__log.html#ga98b7aea5d23411e70c7e3da54d90233a">   72</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="group__group__log.html#ga98b7aea5d23411e70c7e3da54d90233a">cgroup_log_level</a> {</div>
+<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aa4dd44215cd3553e79dbf91eb9ca418a2">   77</a></span>&#160;    <a class="code" href="group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aa4dd44215cd3553e79dbf91eb9ca418a2">CGROUP_LOG_ERROR</a> = 1,</div>
+<div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aaa99ec9e854a543901bddf854d1960057">   81</a></span>&#160;    <a class="code" href="group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aaa99ec9e854a543901bddf854d1960057">CGROUP_LOG_WARNING</a>,</div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aad66ab51dba078ffc3b1c6d397053f9e2">   86</a></span>&#160;    <a class="code" href="group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aad66ab51dba078ffc3b1c6d397053f9e2">CGROUP_LOG_INFO</a>,</div>
+<div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aa86b4157fb38d9f8053c6b7429bd26c72">   90</a></span>&#160;    <a class="code" href="group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aa86b4157fb38d9f8053c6b7429bd26c72">CGROUP_LOG_DEBUG</a>,</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;};</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160; </div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="keyword">typedef</span> void (*cgroup_logger_callback)(<span class="keywordtype">void</span> *userdata, <span class="keywordtype">int</span> level,</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *fmt, va_list ap);</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160; </div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__group__log.html#ga76d7032206f9b9d1c0be1a71a68c43d0">cgroup_set_logger</a>(cgroup_logger_callback logger, <span class="keywordtype">int</span> loglevel,</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;        <span class="keywordtype">void</span> *userdata);</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160; </div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__group__log.html#gab1457ce518dcde0b9f3c14ec9efa2de7">cgroup_set_default_logger</a>(<span class="keywordtype">int</span> loglevel);</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160; </div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__group__log.html#gaac5fe2352800ff62465a5abe649d5b8c">cgroup_set_loglevel</a>(<span class="keywordtype">int</span> loglevel);</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160; </div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__group__log.html#gab514ad5d83422ddfe479bdf651e80958">cgroup_log</a>(<span class="keywordtype">int</span> loglevel, <span class="keyword">const</span> <span class="keywordtype">char</span> *fmt, ...);</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160; </div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__group__log.html#gaa364a06aee0e99228a1e6a26b25a9794">cgroup_parse_log_level_str</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *levelstr);</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;} <span class="comment">/* extern &quot;C&quot; */</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160; </div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* _LIBCGROUP_LOG_H */</span><span class="preprocessor"></span></div>
+<div class="ttc" id="agroup__group__log_html_ga76d7032206f9b9d1c0be1a71a68c43d0"><div class="ttname"><a href="group__group__log.html#ga76d7032206f9b9d1c0be1a71a68c43d0">cgroup_set_logger</a></div><div class="ttdeci">void cgroup_set_logger(cgroup_logger_callback logger, int loglevel, void *userdata)</div><div class="ttdef"><b>Definition:</b> log.c:48</div></div>
+<div class="ttc" id="agroup__group__log_html_ga98b7aea5d23411e70c7e3da54d90233a"><div class="ttname"><a href="group__group__log.html#ga98b7aea5d23411e70c7e3da54d90233a">cgroup_log_level</a></div><div class="ttdeci">cgroup_log_level</div><div class="ttdef"><b>Definition:</b> log.h:72</div></div>
+<div class="ttc" id="agroup__group__log_html_gaa364a06aee0e99228a1e6a26b25a9794"><div class="ttname"><a href="group__group__log.html#gaa364a06aee0e99228a1e6a26b25a9794">cgroup_parse_log_level_str</a></div><div class="ttdeci">int cgroup_parse_log_level_str(const char *levelstr)</div><div class="ttdef"><b>Definition:</b> log.c:62</div></div>
+<div class="ttc" id="agroup__group__log_html_gaac5fe2352800ff62465a5abe649d5b8c"><div class="ttname"><a href="group__group__log.html#gaac5fe2352800ff62465a5abe649d5b8c">cgroup_set_loglevel</a></div><div class="ttdeci">void cgroup_set_loglevel(int loglevel)</div><div class="ttdef"><b>Definition:</b> log.c:85</div></div>
+<div class="ttc" id="agroup__group__log_html_gab1457ce518dcde0b9f3c14ec9efa2de7"><div class="ttname"><a href="group__group__log.html#gab1457ce518dcde0b9f3c14ec9efa2de7">cgroup_set_default_logger</a></div><div class="ttdeci">void cgroup_set_default_logger(int loglevel)</div><div class="ttdef"><b>Definition:</b> log.c:56</div></div>
+<div class="ttc" id="agroup__group__log_html_gab514ad5d83422ddfe479bdf651e80958"><div class="ttname"><a href="group__group__log.html#gab514ad5d83422ddfe479bdf651e80958">cgroup_log</a></div><div class="ttdeci">void cgroup_log(int loglevel, const char *fmt,...)</div><div class="ttdef"><b>Definition:</b> log.c:33</div></div>
+<div class="ttc" id="agroup__group__log_html_gga98b7aea5d23411e70c7e3da54d90233aa4dd44215cd3553e79dbf91eb9ca418a2"><div class="ttname"><a href="group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aa4dd44215cd3553e79dbf91eb9ca418a2">CGROUP_LOG_ERROR</a></div><div class="ttdeci">@ CGROUP_LOG_ERROR</div><div class="ttdef"><b>Definition:</b> log.h:77</div></div>
+<div class="ttc" id="agroup__group__log_html_gga98b7aea5d23411e70c7e3da54d90233aa86b4157fb38d9f8053c6b7429bd26c72"><div class="ttname"><a href="group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aa86b4157fb38d9f8053c6b7429bd26c72">CGROUP_LOG_DEBUG</a></div><div class="ttdeci">@ CGROUP_LOG_DEBUG</div><div class="ttdef"><b>Definition:</b> log.h:90</div></div>
+<div class="ttc" id="agroup__group__log_html_gga98b7aea5d23411e70c7e3da54d90233aaa99ec9e854a543901bddf854d1960057"><div class="ttname"><a href="group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aaa99ec9e854a543901bddf854d1960057">CGROUP_LOG_WARNING</a></div><div class="ttdeci">@ CGROUP_LOG_WARNING</div><div class="ttdef"><b>Definition:</b> log.h:81</div></div>
+<div class="ttc" id="agroup__group__log_html_gga98b7aea5d23411e70c7e3da54d90233aad66ab51dba078ffc3b1c6d397053f9e2"><div class="ttname"><a href="group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aad66ab51dba078ffc3b1c6d397053f9e2">CGROUP_LOG_INFO</a></div><div class="ttdeci">@ CGROUP_LOG_INFO</div><div class="ttdef"><b>Definition:</b> log.h:86</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/md_CONTRIBUTING.html b/md_CONTRIBUTING.html
new file mode 100644 (file)
index 0000000..a518332
--- /dev/null
@@ -0,0 +1,154 @@
+<!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>libcgroup: How to Contribute to the libcgroup Project</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="PageDoc"><div class="header">
+  <div class="headertitle">
+<div class="title">How to Contribute to the libcgroup Project </div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p><a href="https://github.com/libcgroup/libcgroup">https://github.com/libcgroup/libcgroup</a></p>
+<p>This document outlines the steps to help you contribute to the libcgroup project. As with the libcgroup code itself, the process is a work in progress. Improvements and suggestions are welcome and encouraged.</p>
+<h1><a class="anchor" id="autotoc_md0"></a>
+Interacting with the Community</h1>
+<blockquote class="doxtable">
+<p>"When you are kind to others, it not only changes you, it changes the
+world." - Harold Kushner </p>
+</blockquote>
+<p>The libcgroup project strives to be an inclusive and welcoming place. If you interact with the libcgroup project, we request that you treat others with dignity and respect. Failure to do so will result in a warning. In extreme cases, we reserve the right to block the individual from the project.</p>
+<p>Examples of inappropriate behavior includes: profane, abusive, or prejudicial language directed at another person, vandalism (e.g. GitHub issue/PR "litter"), or spam.</p>
+<h1><a class="anchor" id="autotoc_md1"></a>
+Test Your Code Using Existing Tests</h1>
+<p>The libcgroup project utilizes unit and functional tests. These tests must successfully pass prior to a commit being merged.</p>
+<p>You can run both the unit and functional tests with the following command: </p><pre class="fragment"># make check
+</pre><p> You can invoke only the unit tests with the following commands: </p><pre class="fragment"># cd tests/gunit
+# make check
+</pre><p> If there are unit test failures, running the unit tests outside of the automake framework will provide more information. </p><pre class="fragment"># cd tests/gunit
+# ./gtest
+</pre><p> You can invoke only the functional tests with the following commands: </p><pre class="fragment"># cd tests/ftests
+# make check
+</pre><p> Note that the functional tests can be run within a container or directly on your system. For the containerized tests, libcgroup utilizes LXC/LXD containers. If your system or distro doesn't support LXC/LXD, you can utilize the continuous integration infrastructure to test your changes. A successful continuous integration run is required for each pull request.</p>
+<p>Many tests can also be run outside of a container. Use caution with these tests though, as they will modify your host's cgroup hierarchy. This could significantly and negatively affect your system.</p>
+<p>We encourage utilizing a VM for libcgroup development work. The continuous integration suite utilizes the latest Ubuntu LTS.</p>
+<p>To run the containerized tests only: </p><pre class="fragment"># cd tests/ftests
+# ./ftests.sh
+</pre><p> To run the non-containerized tests only: </p><pre class="fragment"># cd tests/ftests
+# ./ftests-nocontainer.sh
+</pre><p> After the run is complete, the ftests.sh.log and ftests-nocontainer.sh.log contain the full debug log for each run.</p>
+<h1><a class="anchor" id="autotoc_md2"></a>
+Add New Tests for New Functionality</h1>
+<p>The libcgroup project utilizes automated tests, code coverage, and continuous integration to maintain a high level of code quality. Any pull requests that add functionality or significantly change existing code should include additional tests to verify the proper operation of the proposed changes. Note that functional tests are preferred over unit tests.</p>
+<p>The continuous integration tools run the automated tests and automatically gather code coverage numbers. Pull requests that cause the code coverage numbers to decrease are strongly discouraged.</p>
+<h1><a class="anchor" id="autotoc_md3"></a>
+Explain Your Work</h1>
+<p>At the top of every patch you should include a description of the problem you are trying to solve, how you solved it, and why you chose the solution you implemented. If you are submitting a bug fix, it is also incredibly helpful if you can describe/include a reproducer for the problem in the description as well as instructions on how to test for the bug and verify that it has been fixed.</p>
+<h1><a class="anchor" id="autotoc_md4"></a>
+Sign Your Work</h1>
+<p>The sign-off is a simple line at the end of the patch description, which certifies that you wrote it or otherwise have the right to pass it on as an open-source patch. The "Developer's Certificate of Origin" pledge is taken from the Linux Kernel and the rules are pretty simple: </p><pre class="fragment">Developer's Certificate of Origin 1.1
+
+By making a contribution to this project, I certify that:
+
+(a) The contribution was created in whole or in part by me and I
+    have the right to submit it under the open source license
+    indicated in the file; or
+
+(b) The contribution is based upon previous work that, to the best
+    of my knowledge, is covered under an appropriate open source
+    license and I have the right under that license to submit that
+    work with modifications, whether created in whole or in part
+    by me, under the same open source license (unless I am
+    permitted to submit under a different license), as indicated
+    in the file; or
+
+(c) The contribution was provided directly to me by some other
+    person who certified (a), (b) or (c) and I have not modified
+    it.
+
+(d) I understand and agree that this project and the contribution
+    are public and that a record of the contribution (including all
+    personal information I submit with it, including my sign-off) is
+    maintained indefinitely and may be redistributed consistent with
+    this project or the open source license(s) involved.
+</pre><p> ... then you just add a line to the bottom of your patch description, with your real name, saying: </p><pre class="fragment">Signed-off-by: Random J Developer &lt;random@developer.example.org&gt;
+</pre><p> You can add this to your commit description in <code>git</code> with <code>git commit -s</code></p>
+<h1><a class="anchor" id="autotoc_md5"></a>
+Submitting Patches</h1>
+<p>libcgroup was initially hosted on Sourceforge and at that time only accepted patches via the mailing list. In 2018, libcgroup was moved to github and now accepts patches via email or github pull request. Over time the libcgroup project will likely fully transition to gitub pull requests and issues.</p>
+<h2><a class="anchor" id="autotoc_md6"></a>
+Post Your Patches Upstream</h2>
+<p>The sections below explain how to contribute via either method. Please read each step and perform all steps that apply to your chosen contribution method.</p>
+<h2><a class="anchor" id="autotoc_md7"></a>
+Submitting via Email</h2>
+<p>Depending on how you decided to work with the libcgroup code base and what tools you are using there are different ways to generate your patch(es). However, regardless of what tools you use, you should always generate your patches using the "unified" diff/patch format and the patches should always apply to the libcgroup source tree using the following command from the top directory of the libcgroup sources: </p><pre class="fragment"># patch -p1 &lt; changes.patch
+</pre><p> If you are not using git, stacked git (stgit), or some other tool which can generate patch files for you automatically, you may find the following command helpful in generating patches, where "libcgroup.orig/" is the unmodified source code directory and "libcgroup/" is the source code directory with your changes: </p><pre class="fragment"># diff -purN libcgroup.orig/ libcgroup/
+</pre><p> When in doubt please generate your patch and try applying it to an unmodified copy of the libcgroup sources; if it fails for you, it will fail for the rest of us.</p>
+<p>Finally, you will need to email your patches to the mailing list so they can be reviewed and potentially merged into the main libcgroup repository. When sending patches to the mailing list it is important to send your email in text form, no HTML mail please, and ensure that your email client does not mangle your patches. It should be possible to save your raw email to disk and apply it directly to the libcgroup source code; if that fails then you likely have a problem with your email client. When in doubt try a test first by sending yourself an email with your patch and attempting to apply the emailed patch to the libcgrup repository; if it fails for you, it will fail for the rest of us trying to test your patch and include it in the main libcgroup repository.</p>
+<h2><a class="anchor" id="autotoc_md8"></a>
+Submitting via GitHub Pull Requests</h2>
+<p>See <a href="https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request">this guide</a> if you've never done this before. </p>
+</div></div><!-- contents -->
+</div><!-- PageDoc -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/md_README.html b/md_README.html
new file mode 100644 (file)
index 0000000..9bc63e0
--- /dev/null
@@ -0,0 +1,77 @@
+<!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>libcgroup: README</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="PageDoc"><div class="header">
+  <div class="headertitle">
+<div class="title">README </div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p><a href="https://github.com/libcgroup/libcgroup/actions"><img src="https://github.com/libcgroup/libcgroup/workflows/Continuous%20Integration/badge.svg?branch=main" alt="Build Status" style="pointer-events: none;" class="inline"/></a> <a href="https://coveralls.io/github/libcgroup/libcgroup"><img src="https://coveralls.io/repos/github/libcgroup/libcgroup/badge.png" alt="Coverage Status" class="inline"/></a></p>
+<p>The entire libcgroup README is available [here](README). </p>
+</div></div><!-- contents -->
+</div><!-- PageDoc -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/menu.js b/menu.js
new file mode 100644 (file)
index 0000000..2fe2214
--- /dev/null
+++ b/menu.js
@@ -0,0 +1,51 @@
+/*
+ @licstart  The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend  The above is the entire license notice for the JavaScript code in this file
+ */
+function initMenu(relPath,searchEnabled,serverSide,searchPage,search) {
+  function makeTree(data,relPath) {
+    var result='';
+    if ('children' in data) {
+      result+='<ul>';
+      for (var i in data.children) {
+        result+='<li><a href="'+relPath+data.children[i].url+'">'+
+                                data.children[i].text+'</a>'+
+                                makeTree(data.children[i],relPath)+'</li>';
+      }
+      result+='</ul>';
+    }
+    return result;
+  }
+
+  $('#main-nav').append(makeTree(menudata,relPath));
+  $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu');
+  if (searchEnabled) {
+    if (serverSide) {
+      $('#main-menu').append('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><div class="left"><form id="FSearchBox" action="'+relPath+searchPage+'" method="get"><img id="MSearchSelect" src="'+relPath+'search/mag.svg" alt=""/><input type="text" id="MSearchField" name="query" value="'+search+'" size="20" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)"></form></div><div class="right"></div></div></li>');
+    } else {
+      $('#main-menu').append('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><span class="left"><img id="MSearchSelect" src="'+relPath+'search/mag_sel.svg" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/><input type="text" id="MSearchField" value="'+search+'" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/></span><span class="right"><a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="'+relPath+'search/close.svg" alt=""/></a></span></div></li>');
+    }
+  }
+  $('#main-menu').smartmenus();
+}
+/* @license-end */
diff --git a/menudata.js b/menudata.js
new file mode 100644 (file)
index 0000000..f543bf1
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ @licstart  The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend  The above is the entire license notice for the JavaScript code in this file
+*/
+var menudata={children:[
+{text:"Main Page",url:"index.html"},
+{text:"Related Pages",url:"pages.html"},
+{text:"Modules",url:"modules.html"},
+{text:"Data Structures",url:"annotated.html",children:[
+{text:"Data Structures",url:"annotated.html"},
+{text:"Data Structure Index",url:"classes.html"},
+{text:"Data Fields",url:"functions.html",children:[
+{text:"All",url:"functions.html"},
+{text:"Variables",url:"functions_vars.html"}]}]},
+{text:"Files",url:"files.html",children:[
+{text:"File List",url:"files.html"}]}]}
diff --git a/modules.html b/modules.html
new file mode 100644 (file)
index 0000000..f0c40ba
--- /dev/null
@@ -0,0 +1,85 @@
+<!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>libcgroup: Modules</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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 -->
+<!-- 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="headertitle">
+<div class="title">Modules</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all modules:</div><div class="directory">
+<table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__group__config.html" target="_self">5. Configuration</a></td><td class="desc"></td></tr>
+<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__group__errors.html" target="_self">6. Error handling</a></td><td class="desc"></td></tr>
+<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__group__groups.html" target="_self">2. Group manipulation API</a></td><td class="desc"></td></tr>
+<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__group__init.html" target="_self">1. Initialization</a></td><td class="desc"></td></tr>
+<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__group__iterators.html" target="_self">3. Iterators</a></td><td class="desc"></td></tr>
+<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__group__log.html" target="_self">7. Logging</a></td><td class="desc"></td></tr>
+<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__group__tasks.html" target="_self">4. Manipulation with tasks</a></td><td class="desc"></td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/nav_f.png b/nav_f.png
new file mode 100644 (file)
index 0000000..72a58a5
Binary files /dev/null and b/nav_f.png differ
diff --git a/nav_g.png b/nav_g.png
new file mode 100644 (file)
index 0000000..2093a23
Binary files /dev/null and b/nav_g.png differ
diff --git a/nav_h.png b/nav_h.png
new file mode 100644 (file)
index 0000000..33389b1
Binary files /dev/null and b/nav_h.png differ
diff --git a/open.png b/open.png
new file mode 100644 (file)
index 0000000..30f75c7
Binary files /dev/null and b/open.png differ
diff --git a/pages.html b/pages.html
new file mode 100644 (file)
index 0000000..61fed5c
--- /dev/null
@@ -0,0 +1,81 @@
+<!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>libcgroup: Related Pages</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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 -->
+<!-- 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="headertitle">
+<div class="title">Related Pages</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all related documentation pages:</div><div class="directory">
+<table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="md_CONTRIBUTING.html" target="_self">How to Contribute to the libcgroup Project</a></td><td class="desc"></td></tr>
+<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="md_README.html" target="_self">README</a></td><td class="desc"></td></tr>
+<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="todo.html" target="_self">Todo List</a></td><td class="desc"></td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/search/all_0.html b/search/all_0.html
new file mode 100644 (file)
index 0000000..1ec5b2d
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/all_0.js b/search/all_0.js
new file mode 100644 (file)
index 0000000..89285fe
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['1_2e_20initialization_0',['1. Initialization',['../group__group__init.html',1,'']]]
+];
diff --git a/search/all_1.html b/search/all_1.html
new file mode 100644 (file)
index 0000000..9f80e90
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_1.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/all_1.js b/search/all_1.js
new file mode 100644 (file)
index 0000000..4e22f30
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['2_2e_20group_20manipulation_20api_1',['2. Group manipulation API',['../group__group__groups.html',1,'']]]
+];
diff --git a/search/all_10.html b/search/all_10.html
new file mode 100644 (file)
index 0000000..3bf1196
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_10.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/all_10.js b/search/all_10.js
new file mode 100644 (file)
index 0000000..efb7dbc
--- /dev/null
@@ -0,0 +1,7 @@
+var searchData=
+[
+  ['name_144',['name',['../structcgroup__mount__point.html#a849ccf1e77fffd5d45304c6adf0d2100',1,'cgroup_mount_point::name()'],['../structcontroller__data.html#a5474be4d8cc4553c94ca81c6a93f5a18',1,'controller_data::name()'],['../structcg__mount__table__s.html#aa9b2cc62fb6cb35334f3d85d660c9fa6',1,'cg_mount_table_s::name()']]],
+  ['no_5fperms_145',['NO_PERMS',['../group__group__groups.html#gad4ffad2eccf9fcbfa8a551e269e0ad58',1,'groups.h']]],
+  ['no_5fuid_5fgid_146',['NO_UID_GID',['../group__group__groups.html#ga2a7954a987e3fbf8eabcc94cf381353e',1,'groups.h']]],
+  ['num_5fcgroups_147',['num_cgroups',['../structcontroller__data.html#acd075c0bb48062bf720b68d0a30116eb',1,'controller_data']]]
+];
diff --git a/search/all_11.html b/search/all_11.html
new file mode 100644 (file)
index 0000000..c9f79d2
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_11.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/all_11.js b/search/all_11.js
new file mode 100644 (file)
index 0000000..7ba9e30
--- /dev/null
@@ -0,0 +1,6 @@
+var searchData=
+[
+  ['parent_148',['parent',['../structcgroup__file__info.html#a739c7f87593e36d8589d3ffa80b57059',1,'cgroup_file_info']]],
+  ['parent_5finfo_149',['parent_info',['../structparent__info.html',1,'']]],
+  ['path_150',['path',['../structcgroup__file__info.html#a801424e68139c930e40ea24be4d96a68',1,'cgroup_file_info::path()'],['../structcgroup__mount__point.html#ad1e89dfc02cfd7341e2296086a4f251e',1,'cgroup_mount_point::path()']]]
+];
diff --git a/search/all_12.html b/search/all_12.html
new file mode 100644 (file)
index 0000000..ab93472
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_12.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/all_12.js b/search/all_12.js
new file mode 100644 (file)
index 0000000..03bfe7a
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['readme_151',['README',['../md_README.html',1,'']]]
+];
diff --git a/search/all_13.html b/search/all_13.html
new file mode 100644 (file)
index 0000000..51172c2
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_13.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/all_13.js b/search/all_13.js
new file mode 100644 (file)
index 0000000..543b3fc
--- /dev/null
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['todo_20list_152',['Todo List',['../todo.html',1,'']]],
+  ['type_153',['type',['../structcgroup__file__info.html#a955506601f440d05cb11e4ee6b455c55',1,'cgroup_file_info']]]
+];
diff --git a/search/all_14.html b/search/all_14.html
new file mode 100644 (file)
index 0000000..afecf56
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_14.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/all_14.js b/search/all_14.js
new file mode 100644 (file)
index 0000000..8339dcd
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['unchanged_5fpid_154',['unchanged_pid',['../structunchanged__pid.html',1,'']]]
+];
diff --git a/search/all_2.html b/search/all_2.html
new file mode 100644 (file)
index 0000000..02cfffc
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_2.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/all_2.js b/search/all_2.js
new file mode 100644 (file)
index 0000000..f1ff63e
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['3_2e_20iterators_2',['3. Iterators',['../group__group__iterators.html',1,'']]]
+];
diff --git a/search/all_3.html b/search/all_3.html
new file mode 100644 (file)
index 0000000..39767b8
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_3.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/all_3.js b/search/all_3.js
new file mode 100644 (file)
index 0000000..5023853
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['4_2e_20manipulation_20with_20tasks_3',['4. Manipulation with tasks',['../group__group__tasks.html',1,'']]]
+];
diff --git a/search/all_4.html b/search/all_4.html
new file mode 100644 (file)
index 0000000..fc40463
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_4.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/all_4.js b/search/all_4.js
new file mode 100644 (file)
index 0000000..0c78faa
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['5_2e_20configuration_4',['5. Configuration',['../group__group__config.html',1,'']]]
+];
diff --git a/search/all_5.html b/search/all_5.html
new file mode 100644 (file)
index 0000000..9dd9344
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_5.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/all_5.js b/search/all_5.js
new file mode 100644 (file)
index 0000000..785cf56
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['6_2e_20error_20handling_5',['6. Error handling',['../group__group__errors.html',1,'']]]
+];
diff --git a/search/all_6.html b/search/all_6.html
new file mode 100644 (file)
index 0000000..f1e516d
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_6.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/all_6.js b/search/all_6.js
new file mode 100644 (file)
index 0000000..ef106f4
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['7_2e_20logging_6',['7. Logging',['../group__group__log.html',1,'']]]
+];
diff --git a/search/all_7.html b/search/all_7.html
new file mode 100644 (file)
index 0000000..8ddbf6c
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_7.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/all_7.js b/search/all_7.js
new file mode 100644 (file)
index 0000000..31d2661
--- /dev/null
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['array_5fparent_5finfo_7',['array_parent_info',['../structarray__parent__info.html',1,'']]],
+  ['array_5funchanged_8',['array_unchanged',['../structarray__unchanged.html',1,'']]]
+];
diff --git a/search/all_8.html b/search/all_8.html
new file mode 100644 (file)
index 0000000..83c55ae
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_8.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/all_8.js b/search/all_8.js
new file mode 100644 (file)
index 0000000..7f9eb3c
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['black_5flist_5ftype_9',['black_list_type',['../structblack__list__type.html',1,'']]]
+];
diff --git a/search/all_9.html b/search/all_9.html
new file mode 100644 (file)
index 0000000..1e263c1
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_9.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/all_9.js b/search/all_9.js
new file mode 100644 (file)
index 0000000..5e1c27d
--- /dev/null
@@ -0,0 +1,121 @@
+var searchData=
+[
+  ['cg_5fchmod_5frecursive_10',['cg_chmod_recursive',['../group__group__groups.html#gaef0bf6cd480f2dcb5e964de151a27dd1',1,'cg_chmod_recursive(struct cgroup *cgroup, mode_t dir_mode, int dirm_change, mode_t file_mode, int filem_change):&#160;api.c'],['../group__group__groups.html#gaef0bf6cd480f2dcb5e964de151a27dd1',1,'cg_chmod_recursive(struct cgroup *cgroup, mode_t dir_mode, int dirm_change, mode_t file_mode, int filem_change):&#160;api.c']]],
+  ['cg_5fmount_5fpoint_11',['cg_mount_point',['../structcg__mount__point.html',1,'']]],
+  ['cg_5fmount_5ftable_5fs_12',['cg_mount_table_s',['../structcg__mount__table__s.html',1,'']]],
+  ['cg_5fvalue_5fmax_13',['CG_VALUE_MAX',['../group__group__iterators.html#ga55d2eac2af703794651d344c073566f5',1,'iterators.h']]],
+  ['cgroup_14',['cgroup',['../structcgroup.html',1,'']]],
+  ['cgroup_5fadd_5fall_5fcontrollers_15',['cgroup_add_all_controllers',['../group__group__groups.html#gae870d271b789b5c54c2e3d35de3cd6f9',1,'cgroup_add_all_controllers(struct cgroup *cgroup):&#160;wrapper.c'],['../group__group__groups.html#gae870d271b789b5c54c2e3d35de3cd6f9',1,'cgroup_add_all_controllers(struct cgroup *cgroup):&#160;wrapper.c']]],
+  ['cgroup_5fadd_5fcontroller_16',['cgroup_add_controller',['../group__group__groups.html#gaa2f9c2ac75fd7e56e5ec6fb970304130',1,'cgroup_add_controller(struct cgroup *cgroup, const char *name):&#160;wrapper.c'],['../group__group__groups.html#gaa2f9c2ac75fd7e56e5ec6fb970304130',1,'cgroup_add_controller(struct cgroup *cgroup, const char *name):&#160;wrapper.c']]],
+  ['cgroup_5fadd_5fvalue_5fbool_17',['cgroup_add_value_bool',['../group__group__groups.html#ga4b191a600f84b00ea7afd12c01d918f3',1,'cgroup_add_value_bool(struct cgroup_controller *controller, const char *name, bool value):&#160;wrapper.c'],['../group__group__groups.html#ga4b191a600f84b00ea7afd12c01d918f3',1,'cgroup_add_value_bool(struct cgroup_controller *controller, const char *name, bool value):&#160;wrapper.c']]],
+  ['cgroup_5fadd_5fvalue_5fint64_18',['cgroup_add_value_int64',['../group__group__groups.html#ga6c973bb5ce99e7a91def2032f23d7087',1,'cgroup_add_value_int64(struct cgroup_controller *controller, const char *name, int64_t value):&#160;wrapper.c'],['../group__group__groups.html#ga6c973bb5ce99e7a91def2032f23d7087',1,'cgroup_add_value_int64(struct cgroup_controller *controller, const char *name, int64_t value):&#160;wrapper.c']]],
+  ['cgroup_5fadd_5fvalue_5fstring_19',['cgroup_add_value_string',['../group__group__groups.html#ga4817c68ab791c09c07b663c29b3fb029',1,'cgroup_add_value_string(struct cgroup_controller *controller, const char *name, const char *value):&#160;wrapper.c'],['../group__group__groups.html#ga4817c68ab791c09c07b663c29b3fb029',1,'cgroup_add_value_string(struct cgroup_controller *controller, const char *name, const char *value):&#160;wrapper.c']]],
+  ['cgroup_5fadd_5fvalue_5fuint64_20',['cgroup_add_value_uint64',['../group__group__groups.html#gad9d2216205b96278c626122f8d5e63bb',1,'cgroup_add_value_uint64(struct cgroup_controller *controller, const char *name, u_int64_t value):&#160;wrapper.c'],['../group__group__groups.html#gad9d2216205b96278c626122f8d5e63bb',1,'cgroup_add_value_uint64(struct cgroup_controller *controller, const char *name, u_int64_t value):&#160;wrapper.c']]],
+  ['cgroup_5fattach_5ftask_21',['cgroup_attach_task',['../group__group__tasks.html#ga43414ac2b1fc73bbb46b6278c7500188',1,'cgroup_attach_task(struct cgroup *cgroup):&#160;api.c'],['../group__group__tasks.html#ga43414ac2b1fc73bbb46b6278c7500188',1,'cgroup_attach_task(struct cgroup *cgroup):&#160;api.c']]],
+  ['cgroup_5fattach_5ftask_5fpid_22',['cgroup_attach_task_pid',['../group__group__tasks.html#ga9c7532681986d156ac3f6bac1fcf6aab',1,'cgroup_attach_task_pid(struct cgroup *cgroup, pid_t tid):&#160;api.c'],['../group__group__tasks.html#ga9c7532681986d156ac3f6bac1fcf6aab',1,'cgroup_attach_task_pid(struct cgroup *cgroup, pid_t tid):&#160;api.c']]],
+  ['cgroup_5fchange_5fall_5fcgroups_23',['cgroup_change_all_cgroups',['../group__group__tasks.html#gafc69658b012b6f1c11ba078ffccd70a2',1,'cgroup_change_all_cgroups(void):&#160;api.c'],['../group__group__tasks.html#gafc69658b012b6f1c11ba078ffccd70a2',1,'cgroup_change_all_cgroups(void):&#160;api.c']]],
+  ['cgroup_5fchange_5fcgroup_5fflags_24',['cgroup_change_cgroup_flags',['../group__group__tasks.html#ga368e7b8e19b3943ab6fb50e76a09e6ea',1,'cgroup_change_cgroup_flags(uid_t uid, gid_t gid, const char *procname, pid_t pid, int flags):&#160;api.c'],['../group__group__tasks.html#ga368e7b8e19b3943ab6fb50e76a09e6ea',1,'cgroup_change_cgroup_flags(uid_t uid, gid_t gid, const char *procname, pid_t pid, int flags):&#160;api.c']]],
+  ['cgroup_5fchange_5fcgroup_5fpath_25',['cgroup_change_cgroup_path',['../group__group__tasks.html#ga2d4677baef780c003fc6fba6b5dc78f2',1,'cgroup_change_cgroup_path(const char *path, pid_t pid, const char *const controllers[]):&#160;api.c'],['../group__group__tasks.html#ga2d4677baef780c003fc6fba6b5dc78f2',1,'cgroup_change_cgroup_path(const char *dest, pid_t pid, const char *const controllers[]):&#160;api.c']]],
+  ['cgroup_5fchange_5fcgroup_5fuid_5fgid_26',['cgroup_change_cgroup_uid_gid',['../group__group__tasks.html#ga5eab78a922dbacd368360f03c70146be',1,'cgroup_change_cgroup_uid_gid(uid_t uid, gid_t gid, pid_t pid):&#160;api.c'],['../group__group__tasks.html#ga5eab78a922dbacd368360f03c70146be',1,'cgroup_change_cgroup_uid_gid(uid_t uid, gid_t gid, pid_t pid):&#160;api.c']]],
+  ['cgroup_5fchange_5fcgroup_5fuid_5fgid_5fflags_27',['cgroup_change_cgroup_uid_gid_flags',['../group__group__tasks.html#gae472183a7c9a37826ef15c77014c47fb',1,'cgroup_change_cgroup_uid_gid_flags(uid_t uid, gid_t gid, pid_t pid, int flags):&#160;api.c'],['../group__group__tasks.html#gae472183a7c9a37826ef15c77014c47fb',1,'cgroup_change_cgroup_uid_gid_flags(uid_t uid, gid_t gid, pid_t pid, int flags):&#160;api.c']]],
+  ['cgroup_5fcompare_5fcgroup_28',['cgroup_compare_cgroup',['../group__group__groups.html#ga86898b59e50335f99fe84a11fa38d3fc',1,'cgroup_compare_cgroup(struct cgroup *cgroup_a, struct cgroup *cgroup_b):&#160;wrapper.c'],['../group__group__groups.html#ga86898b59e50335f99fe84a11fa38d3fc',1,'cgroup_compare_cgroup(struct cgroup *cgroup_a, struct cgroup *cgroup_b):&#160;wrapper.c']]],
+  ['cgroup_5fcompare_5fcontrollers_29',['cgroup_compare_controllers',['../group__group__groups.html#gab1725c50c49cec4b0bdad1f26b150ca7',1,'cgroup_compare_controllers(struct cgroup_controller *cgca, struct cgroup_controller *cgcb):&#160;wrapper.c'],['../group__group__groups.html#gab1725c50c49cec4b0bdad1f26b150ca7',1,'cgroup_compare_controllers(struct cgroup_controller *cgca, struct cgroup_controller *cgcb):&#160;wrapper.c']]],
+  ['cgroup_5fconfig_5fcreate_5ftemplate_5fgroup_30',['cgroup_config_create_template_group',['../group__group__config.html#ga72066260cd31ceed7ecc1a648eba37f2',1,'cgroup_config_create_template_group(struct cgroup *cgroup, char *template_name, int flags):&#160;config.c'],['../group__group__config.html#ga72066260cd31ceed7ecc1a648eba37f2',1,'cgroup_config_create_template_group(struct cgroup *cgroup, char *template_name, int flags):&#160;config.c']]],
+  ['cgroup_5fconfig_5fload_5fconfig_31',['cgroup_config_load_config',['../group__group__config.html#ga8adfaca013333acf922a167f55b84140',1,'cgroup_config_load_config(const char *pathname):&#160;config.c'],['../group__group__config.html#ga8adfaca013333acf922a167f55b84140',1,'cgroup_config_load_config(const char *pathname):&#160;config.c']]],
+  ['cgroup_5fconfig_5fset_5fdefault_32',['cgroup_config_set_default',['../group__group__config.html#ga2d3a252b2c0c61c8f64cb1fc41e370ea',1,'cgroup_config_set_default(struct cgroup *new_default):&#160;config.c'],['../group__group__config.html#ga2d3a252b2c0c61c8f64cb1fc41e370ea',1,'cgroup_config_set_default(struct cgroup *new_default):&#160;config.c']]],
+  ['cgroup_5fconfig_5funload_5fconfig_33',['cgroup_config_unload_config',['../group__group__config.html#gaff77affa0b80ccf507b4b46cc0a8c085',1,'cgroup_config_unload_config(const char *pathname, int flags):&#160;config.c'],['../group__group__config.html#gaff77affa0b80ccf507b4b46cc0a8c085',1,'cgroup_config_unload_config(const char *pathname, int flags):&#160;config.c']]],
+  ['cgroup_5fcontroller_34',['cgroup_controller',['../structcgroup__controller.html',1,'']]],
+  ['cgroup_5fcopy_5fcgroup_35',['cgroup_copy_cgroup',['../group__group__groups.html#gaa981a95e0917d3167601a4c1b392336a',1,'cgroup_copy_cgroup(struct cgroup *dst, struct cgroup *src):&#160;api.c'],['../group__group__groups.html#gaa981a95e0917d3167601a4c1b392336a',1,'cgroup_copy_cgroup(struct cgroup *dst, struct cgroup *src):&#160;api.c']]],
+  ['cgroup_5fcreate_5fcgroup_36',['cgroup_create_cgroup',['../group__group__groups.html#gadb8e13df6064841d3c9707960f782fa7',1,'cgroup_create_cgroup(struct cgroup *cgroup, int ignore_ownership):&#160;api.c'],['../group__group__groups.html#gadb8e13df6064841d3c9707960f782fa7',1,'cgroup_create_cgroup(struct cgroup *cgroup, int ignore_ownership):&#160;api.c']]],
+  ['cgroup_5fcreate_5fcgroup_5ffrom_5fparent_37',['cgroup_create_cgroup_from_parent',['../group__group__groups.html#ga90e1ce96f3cb540f7e82d076dd938f62',1,'cgroup_create_cgroup_from_parent(struct cgroup *cgroup, int ignore_ownership):&#160;api.c'],['../group__group__groups.html#ga90e1ce96f3cb540f7e82d076dd938f62',1,'cgroup_create_cgroup_from_parent(struct cgroup *cgroup, int ignore_ownership):&#160;api.c']]],
+  ['cgroup_5fdelete_5fcgroup_38',['cgroup_delete_cgroup',['../group__group__groups.html#ga1dca18434e5d6be30c28c556da94f565',1,'cgroup_delete_cgroup(struct cgroup *cgroup, int ignore_migration):&#160;api.c'],['../group__group__groups.html#ga1dca18434e5d6be30c28c556da94f565',1,'cgroup_delete_cgroup(struct cgroup *cgroup, int ignore_migration):&#160;api.c']]],
+  ['cgroup_5fdelete_5fcgroup_5fext_39',['cgroup_delete_cgroup_ext',['../group__group__groups.html#ga860c1ec70189c969b2c8373fc1e96d36',1,'cgroup_delete_cgroup_ext(struct cgroup *cgroup, int flags):&#160;api.c'],['../group__group__groups.html#ga860c1ec70189c969b2c8373fc1e96d36',1,'cgroup_delete_cgroup_ext(struct cgroup *cgroup, int flags):&#160;api.c']]],
+  ['cgroup_5fdictionary_40',['cgroup_dictionary',['../structcgroup__dictionary.html',1,'']]],
+  ['cgroup_5fdictionary_5fitem_41',['cgroup_dictionary_item',['../structcgroup__dictionary__item.html',1,'']]],
+  ['cgroup_5fdictionary_5fiterator_42',['cgroup_dictionary_iterator',['../structcgroup__dictionary__iterator.html',1,'']]],
+  ['cgroup_5ffile_5finfo_43',['cgroup_file_info',['../structcgroup__file__info.html',1,'']]],
+  ['cgroup_5ffile_5ftype_44',['cgroup_file_type',['../group__group__iterators.html#ga608b4aa32e2db58fed34771a6a272444',1,'iterators.h']]],
+  ['cgroup_5ffile_5ftype_5fdir_45',['CGROUP_FILE_TYPE_DIR',['../group__group__iterators.html#gga608b4aa32e2db58fed34771a6a272444a5418798fc4bf9634429c6af167a0e7c3',1,'iterators.h']]],
+  ['cgroup_5ffile_5ftype_5ffile_46',['CGROUP_FILE_TYPE_FILE',['../group__group__iterators.html#gga608b4aa32e2db58fed34771a6a272444ad925cc45f1b34fe80e14fc6b05269740',1,'iterators.h']]],
+  ['cgroup_5ffile_5ftype_5fother_47',['CGROUP_FILE_TYPE_OTHER',['../group__group__iterators.html#gga608b4aa32e2db58fed34771a6a272444a24e202c59f318e63ad8cafcc1b4b102b',1,'iterators.h']]],
+  ['cgroup_5ffree_48',['cgroup_free',['../group__group__groups.html#gab20fdb1ae479f8baac482336abf73900',1,'cgroup_free(struct cgroup **cgroup):&#160;wrapper.c'],['../group__group__groups.html#gab20fdb1ae479f8baac482336abf73900',1,'cgroup_free(struct cgroup **cgroup):&#160;wrapper.c']]],
+  ['cgroup_5ffree_5fcontrollers_49',['cgroup_free_controllers',['../group__group__groups.html#ga92d27c9ff0d655838642a7aa68497596',1,'cgroup_free_controllers(struct cgroup *cgroup):&#160;wrapper.c'],['../group__group__groups.html#ga92d27c9ff0d655838642a7aa68497596',1,'cgroup_free_controllers(struct cgroup *cgroup):&#160;wrapper.c']]],
+  ['cgroup_5fget_5fall_5fcontroller_5fbegin_50',['cgroup_get_all_controller_begin',['../group__group__iterators.html#gad48ef653388ca6739a9b6bbb9d7da82e',1,'cgroup_get_all_controller_begin(void **handle, struct controller_data *info):&#160;api.c'],['../group__group__iterators.html#gad48ef653388ca6739a9b6bbb9d7da82e',1,'cgroup_get_all_controller_begin(void **handle, struct controller_data *info):&#160;api.c']]],
+  ['cgroup_5fget_5fall_5fcontroller_5fend_51',['cgroup_get_all_controller_end',['../group__group__iterators.html#ga0c467d42a2c9a916a0edd339a6d7afc8',1,'cgroup_get_all_controller_end(void **handle):&#160;api.c'],['../group__group__iterators.html#ga0c467d42a2c9a916a0edd339a6d7afc8',1,'cgroup_get_all_controller_end(void **handle):&#160;api.c']]],
+  ['cgroup_5fget_5fall_5fcontroller_5fnext_52',['cgroup_get_all_controller_next',['../group__group__iterators.html#ga3d98a04b29b1fe409db1114b7aa76809',1,'cgroup_get_all_controller_next(void **handle, struct controller_data *info):&#160;api.c'],['../group__group__iterators.html#ga3d98a04b29b1fe409db1114b7aa76809',1,'cgroup_get_all_controller_next(void **handle, struct controller_data *info):&#160;api.c']]],
+  ['cgroup_5fget_5fcgroup_53',['cgroup_get_cgroup',['../group__group__groups.html#gad4ba31fe5a8bba63b33b1ea339b849e6',1,'cgroup_get_cgroup(struct cgroup *cgroup):&#160;api.c'],['../group__group__groups.html#gad4ba31fe5a8bba63b33b1ea339b849e6',1,'cgroup_get_cgroup(struct cgroup *cgroup):&#160;api.c']]],
+  ['cgroup_5fget_5fcgroup_5fname_54',['cgroup_get_cgroup_name',['../group__group__groups.html#gac9b5ff481de08ba8fdfcbd42940d2cbf',1,'cgroup_get_cgroup_name(struct cgroup *cgroup):&#160;wrapper.c'],['../group__group__groups.html#gac9b5ff481de08ba8fdfcbd42940d2cbf',1,'cgroup_get_cgroup_name(struct cgroup *cgroup):&#160;wrapper.c']]],
+  ['cgroup_5fget_5fcontroller_55',['cgroup_get_controller',['../group__group__groups.html#ga8335b0aec59c8f845639a7404affce05',1,'cgroup_get_controller(struct cgroup *cgroup, const char *name):&#160;wrapper.c'],['../group__group__groups.html#ga8335b0aec59c8f845639a7404affce05',1,'cgroup_get_controller(struct cgroup *cgroup, const char *name):&#160;wrapper.c']]],
+  ['cgroup_5fget_5fcontroller_5fbegin_56',['cgroup_get_controller_begin',['../group__group__iterators.html#ga5f9f21138f9b18912a16b21a45b53c44',1,'cgroup_get_controller_begin(void **handle, struct cgroup_mount_point *info):&#160;api.c'],['../group__group__iterators.html#ga5f9f21138f9b18912a16b21a45b53c44',1,'cgroup_get_controller_begin(void **handle, struct cgroup_mount_point *info):&#160;api.c']]],
+  ['cgroup_5fget_5fcontroller_5fend_57',['cgroup_get_controller_end',['../group__group__iterators.html#gab485cda2bc9640bacbf61f1953ae750c',1,'cgroup_get_controller_end(void **handle):&#160;api.c'],['../group__group__iterators.html#gab485cda2bc9640bacbf61f1953ae750c',1,'cgroup_get_controller_end(void **handle):&#160;api.c']]],
+  ['cgroup_5fget_5fcontroller_5fnext_58',['cgroup_get_controller_next',['../group__group__iterators.html#ga926b70423b6c087c21a14670cd23cd7d',1,'cgroup_get_controller_next(void **handle, struct cgroup_mount_point *info):&#160;api.c'],['../group__group__iterators.html#ga926b70423b6c087c21a14670cd23cd7d',1,'cgroup_get_controller_next(void **handle, struct cgroup_mount_point *info):&#160;api.c']]],
+  ['cgroup_5fget_5fcurrent_5fcontroller_5fpath_59',['cgroup_get_current_controller_path',['../group__group__tasks.html#ga6f2c17b99cf2526cb46df4769eb3f46e',1,'cgroup_get_current_controller_path(pid_t pid, const char *controller, char **current_path):&#160;api.c'],['../group__group__tasks.html#ga6f2c17b99cf2526cb46df4769eb3f46e',1,'cgroup_get_current_controller_path(pid_t pid, const char *controller, char **current_path):&#160;api.c']]],
+  ['cgroup_5fget_5flast_5ferrno_60',['cgroup_get_last_errno',['../group__group__errors.html#ga29057c4aec05bef2b6bf2855ae5d5d46',1,'cgroup_get_last_errno(void):&#160;api.c'],['../group__group__errors.html#ga29057c4aec05bef2b6bf2855ae5d5d46',1,'cgroup_get_last_errno(void):&#160;api.c']]],
+  ['cgroup_5fget_5fprocs_61',['cgroup_get_procs',['../group__group__groups.html#ga08a4fe913d59f61a39e61b8b02537dc2',1,'cgroup_get_procs(char *name, char *controller, pid_t **pids, int *size):&#160;api.c'],['../group__group__groups.html#ga08a4fe913d59f61a39e61b8b02537dc2',1,'cgroup_get_procs(char *name, char *controller, pid_t **pids, int *size):&#160;api.c']]],
+  ['cgroup_5fget_5fsubsys_5fmount_5fpoint_62',['cgroup_get_subsys_mount_point',['../group__group__init.html#ga4f061b353321b81869057970d96f09f7',1,'cgroup_get_subsys_mount_point(const char *controller, char **mount_point):&#160;api.c'],['../group__group__init.html#ga4f061b353321b81869057970d96f09f7',1,'cgroup_get_subsys_mount_point(const char *controller, char **mount_point):&#160;api.c']]],
+  ['cgroup_5fget_5fsubsys_5fmount_5fpoint_5fbegin_63',['cgroup_get_subsys_mount_point_begin',['../group__group__iterators.html#ga18a3c6fe7da42b9da96ce34dce1e31b8',1,'cgroup_get_subsys_mount_point_begin(const char *controller, void **handle, char *path):&#160;api.c'],['../group__group__iterators.html#ga18a3c6fe7da42b9da96ce34dce1e31b8',1,'cgroup_get_subsys_mount_point_begin(const char *controller, void **handle, char *path):&#160;api.c']]],
+  ['cgroup_5fget_5fsubsys_5fmount_5fpoint_5fend_64',['cgroup_get_subsys_mount_point_end',['../group__group__iterators.html#ga9c9b0f1921c205bd25bfc6c1d20486eb',1,'cgroup_get_subsys_mount_point_end(void **handle):&#160;api.c'],['../group__group__iterators.html#ga9c9b0f1921c205bd25bfc6c1d20486eb',1,'cgroup_get_subsys_mount_point_end(void **handle):&#160;api.c']]],
+  ['cgroup_5fget_5fsubsys_5fmount_5fpoint_5fnext_65',['cgroup_get_subsys_mount_point_next',['../group__group__iterators.html#ga3d66997158cb8a334317923ad94cc789',1,'cgroup_get_subsys_mount_point_next(void **handle, char *path):&#160;api.c'],['../group__group__iterators.html#ga3d66997158cb8a334317923ad94cc789',1,'cgroup_get_subsys_mount_point_next(void **handle, char *path):&#160;api.c']]],
+  ['cgroup_5fget_5ftask_5fbegin_66',['cgroup_get_task_begin',['../group__group__iterators.html#gad7218154192f733120e1025cc19d0a36',1,'cgroup_get_task_begin(const char *cgroup, const char *controller, void **handle, pid_t *pid):&#160;api.c'],['../group__group__iterators.html#gad7218154192f733120e1025cc19d0a36',1,'cgroup_get_task_begin(const char *cgroup, const char *controller, void **handle, pid_t *pid):&#160;api.c']]],
+  ['cgroup_5fget_5ftask_5fend_67',['cgroup_get_task_end',['../group__group__iterators.html#gaeb955e5f4da551268380b1271d478816',1,'cgroup_get_task_end(void **handle):&#160;api.c'],['../group__group__iterators.html#gaeb955e5f4da551268380b1271d478816',1,'cgroup_get_task_end(void **handle):&#160;api.c']]],
+  ['cgroup_5fget_5ftask_5fnext_68',['cgroup_get_task_next',['../group__group__iterators.html#gaf3a0364682b7449ddccfb0862bbb565e',1,'cgroup_get_task_next(void **handle, pid_t *pid):&#160;api.c'],['../group__group__iterators.html#gaf3a0364682b7449ddccfb0862bbb565e',1,'cgroup_get_task_next(void **handle, pid_t *pid):&#160;api.c']]],
+  ['cgroup_5fget_5fuid_5fgid_69',['cgroup_get_uid_gid',['../group__group__groups.html#ga007d21c304d9cc6e948dc0ae51ecfa86',1,'cgroup_get_uid_gid(struct cgroup *cgroup, uid_t *tasks_uid, gid_t *tasks_gid, uid_t *control_uid, gid_t *control_gid):&#160;wrapper.c'],['../group__group__groups.html#ga007d21c304d9cc6e948dc0ae51ecfa86',1,'cgroup_get_uid_gid(struct cgroup *cgroup, uid_t *tasks_uid, gid_t *tasks_gid, uid_t *control_uid, gid_t *control_gid):&#160;wrapper.c']]],
+  ['cgroup_5fget_5fvalue_5fbool_70',['cgroup_get_value_bool',['../group__group__groups.html#gab95007148eac89b7e935d93a4524787b',1,'cgroup_get_value_bool(struct cgroup_controller *controller, const char *name, bool *value):&#160;wrapper.c'],['../group__group__groups.html#gab95007148eac89b7e935d93a4524787b',1,'cgroup_get_value_bool(struct cgroup_controller *controller, const char *name, bool *value):&#160;wrapper.c']]],
+  ['cgroup_5fget_5fvalue_5fint64_71',['cgroup_get_value_int64',['../group__group__groups.html#ga0fe9b05f26b3cab21fc446c9a2700526',1,'cgroup_get_value_int64(struct cgroup_controller *controller, const char *name, int64_t *value):&#160;wrapper.c'],['../group__group__groups.html#ga0fe9b05f26b3cab21fc446c9a2700526',1,'cgroup_get_value_int64(struct cgroup_controller *controller, const char *name, int64_t *value):&#160;wrapper.c']]],
+  ['cgroup_5fget_5fvalue_5fname_72',['cgroup_get_value_name',['../group__group__groups.html#ga16ca75fd16eda7cfc642421111e9a331',1,'cgroup_get_value_name(struct cgroup_controller *controller, int index):&#160;wrapper.c'],['../group__group__groups.html#ga16ca75fd16eda7cfc642421111e9a331',1,'cgroup_get_value_name(struct cgroup_controller *controller, int index):&#160;wrapper.c']]],
+  ['cgroup_5fget_5fvalue_5fname_5fcount_73',['cgroup_get_value_name_count',['../group__group__groups.html#ga25115085978ce2a8d671e7876cc49c1d',1,'cgroup_get_value_name_count(struct cgroup_controller *controller):&#160;wrapper.c'],['../group__group__groups.html#ga25115085978ce2a8d671e7876cc49c1d',1,'cgroup_get_value_name_count(struct cgroup_controller *controller):&#160;wrapper.c']]],
+  ['cgroup_5fget_5fvalue_5fstring_74',['cgroup_get_value_string',['../group__group__groups.html#gafaa51e5ffe09f8ad05585a1d3b6f7fa9',1,'cgroup_get_value_string(struct cgroup_controller *controller, const char *name, char **value):&#160;wrapper.c'],['../group__group__groups.html#gafaa51e5ffe09f8ad05585a1d3b6f7fa9',1,'cgroup_get_value_string(struct cgroup_controller *controller, const char *name, char **value):&#160;wrapper.c']]],
+  ['cgroup_5fget_5fvalue_5fuint64_75',['cgroup_get_value_uint64',['../group__group__groups.html#ga951861259c0373895bfb637fce337312',1,'cgroup_get_value_uint64(struct cgroup_controller *controller, const char *name, u_int64_t *value):&#160;wrapper.c'],['../group__group__groups.html#ga951861259c0373895bfb637fce337312',1,'cgroup_get_value_uint64(struct cgroup_controller *controller, const char *name, u_int64_t *value):&#160;wrapper.c']]],
+  ['cgroup_5fgroup_5fspec_76',['cgroup_group_spec',['../structcgroup__group__spec.html',1,'']]],
+  ['cgroup_5finit_77',['cgroup_init',['../group__group__init.html#ga37740e2f5f298edf13e18fcd7632b75a',1,'cgroup_init(void):&#160;api.c'],['../group__group__init.html#ga37740e2f5f298edf13e18fcd7632b75a',1,'cgroup_init(void):&#160;api.c']]],
+  ['cgroup_5finit_5frules_5fcache_78',['cgroup_init_rules_cache',['../group__group__tasks.html#gad7fa5a2c4db08d31da5bfbecaf482d3d',1,'cgroup_init_rules_cache(void):&#160;api.c'],['../group__group__tasks.html#gad7fa5a2c4db08d31da5bfbecaf482d3d',1,'cgroup_init_rules_cache(void):&#160;api.c']]],
+  ['cgroup_5finit_5ftemplates_5fcache_79',['cgroup_init_templates_cache',['../group__group__config.html#ga6f8c41bb920565e674787fe6dabaef00',1,'cgroup_init_templates_cache(char *pathname):&#160;config.c'],['../group__group__config.html#ga6f8c41bb920565e674787fe6dabaef00',1,'cgroup_init_templates_cache(char *pathname):&#160;config.c']]],
+  ['cgroup_5fload_5ftemplates_5fcache_5ffrom_5ffiles_80',['cgroup_load_templates_cache_from_files',['../group__group__config.html#ga924860998c37da53cababe24163fc89b',1,'cgroup_load_templates_cache_from_files(int *file_index):&#160;config.c'],['../group__group__config.html#ga924860998c37da53cababe24163fc89b',1,'cgroup_load_templates_cache_from_files(int *file_index):&#160;config.c']]],
+  ['cgroup_5flog_81',['cgroup_log',['../group__group__log.html#gab514ad5d83422ddfe479bdf651e80958',1,'cgroup_log(int loglevel, const char *fmt,...):&#160;log.c'],['../group__group__log.html#gab514ad5d83422ddfe479bdf651e80958',1,'cgroup_log(int level, const char *fmt,...):&#160;log.c']]],
+  ['cgroup_5flog_5fdebug_82',['CGROUP_LOG_DEBUG',['../group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aa86b4157fb38d9f8053c6b7429bd26c72',1,'log.h']]],
+  ['cgroup_5flog_5ferror_83',['CGROUP_LOG_ERROR',['../group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aa4dd44215cd3553e79dbf91eb9ca418a2',1,'log.h']]],
+  ['cgroup_5flog_5finfo_84',['CGROUP_LOG_INFO',['../group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aad66ab51dba078ffc3b1c6d397053f9e2',1,'log.h']]],
+  ['cgroup_5flog_5flevel_85',['cgroup_log_level',['../group__group__log.html#ga98b7aea5d23411e70c7e3da54d90233a',1,'log.h']]],
+  ['cgroup_5flog_5fwarning_86',['CGROUP_LOG_WARNING',['../group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aaa99ec9e854a543901bddf854d1960057',1,'log.h']]],
+  ['cgroup_5fmodify_5fcgroup_87',['cgroup_modify_cgroup',['../group__group__groups.html#ga31ba5e865ae8d58b4453c0ef06d2c071',1,'cgroup_modify_cgroup(struct cgroup *cgroup):&#160;api.c'],['../group__group__groups.html#ga31ba5e865ae8d58b4453c0ef06d2c071',1,'cgroup_modify_cgroup(struct cgroup *cgroup):&#160;api.c']]],
+  ['cgroup_5fmount_5fpoint_88',['cgroup_mount_point',['../structcgroup__mount__point.html',1,'']]],
+  ['cgroup_5fnew_5fcgroup_89',['cgroup_new_cgroup',['../group__group__groups.html#ga6cd4733e5982ac2c92ee3cb3dbd10a31',1,'cgroup_new_cgroup(const char *name):&#160;wrapper.c'],['../group__group__groups.html#ga6cd4733e5982ac2c92ee3cb3dbd10a31',1,'cgroup_new_cgroup(const char *name):&#160;wrapper.c']]],
+  ['cgroup_5fparse_5flog_5flevel_5fstr_90',['cgroup_parse_log_level_str',['../group__group__log.html#gaa364a06aee0e99228a1e6a26b25a9794',1,'cgroup_parse_log_level_str(const char *levelstr):&#160;log.c'],['../group__group__log.html#gaa364a06aee0e99228a1e6a26b25a9794',1,'cgroup_parse_log_level_str(const char *levelstr):&#160;log.c']]],
+  ['cgroup_5fprint_5frules_5fconfig_91',['cgroup_print_rules_config',['../group__group__tasks.html#gac4e3f29cfbdc3d77f08c9fe60857274a',1,'cgroup_print_rules_config(FILE *fp):&#160;api.c'],['../group__group__tasks.html#gac4e3f29cfbdc3d77f08c9fe60857274a',1,'cgroup_print_rules_config(FILE *fp):&#160;api.c']]],
+  ['cgroup_5fread_5fstats_5fbegin_92',['cgroup_read_stats_begin',['../group__group__iterators.html#ga1138e47f124f0f634586db5e0c4ae5de',1,'cgroup_read_stats_begin(const char *controller, const char *path, void **handle, struct cgroup_stat *stat):&#160;api.c'],['../group__group__iterators.html#ga1138e47f124f0f634586db5e0c4ae5de',1,'cgroup_read_stats_begin(const char *controller, const char *path, void **handle, struct cgroup_stat *cgroup_stat):&#160;api.c']]],
+  ['cgroup_5fread_5fstats_5fend_93',['cgroup_read_stats_end',['../group__group__iterators.html#gaba386d9db6cadc6ad85c2552f63447bb',1,'cgroup_read_stats_end(void **handle):&#160;api.c'],['../group__group__iterators.html#gaba386d9db6cadc6ad85c2552f63447bb',1,'cgroup_read_stats_end(void **handle):&#160;api.c']]],
+  ['cgroup_5fread_5fstats_5fnext_94',['cgroup_read_stats_next',['../group__group__iterators.html#gaf95587508fc15d74fd5ed0df58024be7',1,'cgroup_read_stats_next(void **handle, struct cgroup_stat *cgroup_stat):&#160;api.c'],['../group__group__iterators.html#gaf95587508fc15d74fd5ed0df58024be7',1,'cgroup_read_stats_next(void **handle, struct cgroup_stat *stat):&#160;api.c']]],
+  ['cgroup_5fread_5fvalue_5fbegin_95',['cgroup_read_value_begin',['../group__group__iterators.html#ga73edb115af6779644d3371b12cf09140',1,'cgroup_read_value_begin(const char *controller, const char *path, char *name, void **handle, char *buffer, int max):&#160;api.c'],['../group__group__iterators.html#ga73edb115af6779644d3371b12cf09140',1,'cgroup_read_value_begin(const char *controller, const char *path, char *name, void **handle, char *buffer, int max):&#160;api.c']]],
+  ['cgroup_5fread_5fvalue_5fend_96',['cgroup_read_value_end',['../group__group__iterators.html#gad348f041e283860cbf6bcea567e23a21',1,'cgroup_read_value_end(void **handle):&#160;api.c'],['../group__group__iterators.html#gad348f041e283860cbf6bcea567e23a21',1,'cgroup_read_value_end(void **handle):&#160;api.c']]],
+  ['cgroup_5fread_5fvalue_5fnext_97',['cgroup_read_value_next',['../group__group__iterators.html#gaced2fe331f19d599a3270db2440847cc',1,'cgroup_read_value_next(void **handle, char *buffer, int max):&#160;api.c'],['../group__group__iterators.html#gaced2fe331f19d599a3270db2440847cc',1,'cgroup_read_value_next(void **handle, char *buffer, int max):&#160;api.c']]],
+  ['cgroup_5fregister_5funchanged_5fprocess_98',['cgroup_register_unchanged_process',['../group__group__tasks.html#ga64f7967d6d5edfff9afddaa6a6974b1c',1,'cgroup_register_unchanged_process(pid_t pid, int flags):&#160;api.c'],['../group__group__tasks.html#ga64f7967d6d5edfff9afddaa6a6974b1c',1,'cgroup_register_unchanged_process(pid_t pid, int flags):&#160;api.c']]],
+  ['cgroup_5freload_5fcached_5frules_99',['cgroup_reload_cached_rules',['../group__group__tasks.html#gaf81ebd9cb5575c75b4c85f385ebda1ce',1,'cgroup_reload_cached_rules(void):&#160;api.c'],['../group__group__tasks.html#gaf81ebd9cb5575c75b4c85f385ebda1ce',1,'cgroup_reload_cached_rules(void):&#160;api.c']]],
+  ['cgroup_5freload_5fcached_5ftemplates_100',['cgroup_reload_cached_templates',['../group__group__config.html#ga89fe0d7943b29cc10d57b07abcdfa7b5',1,'cgroup_reload_cached_templates(char *pathname):&#160;config.c'],['../group__group__config.html#ga89fe0d7943b29cc10d57b07abcdfa7b5',1,'cgroup_reload_cached_templates(char *pathname):&#160;config.c']]],
+  ['cgroup_5frule_101',['cgroup_rule',['../structcgroup__rule.html',1,'']]],
+  ['cgroup_5frule_5flist_102',['cgroup_rule_list',['../structcgroup__rule__list.html',1,'']]],
+  ['cgroup_5frules_5fdata_103',['cgroup_rules_data',['../structcgroup__rules__data.html',1,'']]],
+  ['cgroup_5fset_5fdefault_5flogger_104',['cgroup_set_default_logger',['../group__group__log.html#gab1457ce518dcde0b9f3c14ec9efa2de7',1,'cgroup_set_default_logger(int loglevel):&#160;log.c'],['../group__group__log.html#gab1457ce518dcde0b9f3c14ec9efa2de7',1,'cgroup_set_default_logger(int level):&#160;log.c']]],
+  ['cgroup_5fset_5flogger_105',['cgroup_set_logger',['../group__group__log.html#ga76d7032206f9b9d1c0be1a71a68c43d0',1,'cgroup_set_logger(cgroup_logger_callback logger, int loglevel, void *userdata):&#160;log.c'],['../group__group__log.html#ga76d7032206f9b9d1c0be1a71a68c43d0',1,'cgroup_set_logger(cgroup_logger_callback logger, int loglevel, void *userdata):&#160;log.c']]],
+  ['cgroup_5fset_5floglevel_106',['cgroup_set_loglevel',['../group__group__log.html#gaac5fe2352800ff62465a5abe649d5b8c',1,'cgroup_set_loglevel(int loglevel):&#160;log.c'],['../group__group__log.html#gaac5fe2352800ff62465a5abe649d5b8c',1,'cgroup_set_loglevel(int loglevel):&#160;log.c']]],
+  ['cgroup_5fset_5fpermissions_107',['cgroup_set_permissions',['../group__group__groups.html#gaa0400f1ff2fba7fbb6db82d97039d92b',1,'cgroup_set_permissions(struct cgroup *cgroup, mode_t control_dperm, mode_t control_fperm, mode_t task_fperm):&#160;api.c'],['../group__group__groups.html#gaa0400f1ff2fba7fbb6db82d97039d92b',1,'cgroup_set_permissions(struct cgroup *cgroup, mode_t control_dperm, mode_t control_fperm, mode_t task_fperm):&#160;api.c']]],
+  ['cgroup_5fset_5fuid_5fgid_108',['cgroup_set_uid_gid',['../group__group__groups.html#ga53b9e13e30660c805ab5773d69397a43',1,'cgroup_set_uid_gid(struct cgroup *cgroup, uid_t tasks_uid, gid_t tasks_gid, uid_t control_uid, gid_t control_gid):&#160;wrapper.c'],['../group__group__groups.html#ga53b9e13e30660c805ab5773d69397a43',1,'cgroup_set_uid_gid(struct cgroup *cgroup, uid_t tasks_uid, gid_t tasks_gid, uid_t control_uid, gid_t control_gid):&#160;wrapper.c']]],
+  ['cgroup_5fset_5fvalue_5fbool_109',['cgroup_set_value_bool',['../group__group__groups.html#gafb24892bc221cffee0f5fe07f64d54d7',1,'cgroup_set_value_bool(struct cgroup_controller *controller, const char *name, bool value):&#160;wrapper.c'],['../group__group__groups.html#gafb24892bc221cffee0f5fe07f64d54d7',1,'cgroup_set_value_bool(struct cgroup_controller *controller, const char *name, bool value):&#160;wrapper.c']]],
+  ['cgroup_5fset_5fvalue_5fint64_110',['cgroup_set_value_int64',['../group__group__groups.html#gaa5c39e51035cc43dd26a3c620441a956',1,'cgroup_set_value_int64(struct cgroup_controller *controller, const char *name, int64_t value):&#160;wrapper.c'],['../group__group__groups.html#gaa5c39e51035cc43dd26a3c620441a956',1,'cgroup_set_value_int64(struct cgroup_controller *controller, const char *name, int64_t value):&#160;wrapper.c']]],
+  ['cgroup_5fset_5fvalue_5fstring_111',['cgroup_set_value_string',['../group__group__groups.html#ga938febc02b59cbeb8e4ceb2dc7fdac82',1,'cgroup_set_value_string(struct cgroup_controller *controller, const char *name, const char *value):&#160;wrapper.c'],['../group__group__groups.html#ga938febc02b59cbeb8e4ceb2dc7fdac82',1,'cgroup_set_value_string(struct cgroup_controller *controller, const char *name, const char *value):&#160;wrapper.c']]],
+  ['cgroup_5fset_5fvalue_5fuint64_112',['cgroup_set_value_uint64',['../group__group__groups.html#gade01aa1fe30ccc968af9fe8a3bc821e5',1,'cgroup_set_value_uint64(struct cgroup_controller *controller, const char *name, u_int64_t value):&#160;wrapper.c'],['../group__group__groups.html#gade01aa1fe30ccc968af9fe8a3bc821e5',1,'cgroup_set_value_uint64(struct cgroup_controller *controller, const char *name, u_int64_t value):&#160;wrapper.c']]],
+  ['cgroup_5fstat_113',['cgroup_stat',['../structcgroup__stat.html',1,'']]],
+  ['cgroup_5fstrerror_114',['cgroup_strerror',['../group__group__errors.html#gaeae1d51db8528c89d84501c745020e6b',1,'cgroup_strerror(int code):&#160;api.c'],['../group__group__errors.html#gaeae1d51db8528c89d84501c745020e6b',1,'cgroup_strerror(int code):&#160;api.c']]],
+  ['cgroup_5fstring_5flist_115',['cgroup_string_list',['../structcgroup__string__list.html',1,'']]],
+  ['cgroup_5ftemplates_5fcache_5fset_5fsource_5ffiles_116',['cgroup_templates_cache_set_source_files',['../group__group__config.html#gacb09024dc469a1a1ff8cdebd8d0ab422',1,'cgroup_templates_cache_set_source_files(struct cgroup_string_list *tmpl_files):&#160;config.c'],['../group__group__config.html#gacb09024dc469a1a1ff8cdebd8d0ab422',1,'cgroup_templates_cache_set_source_files(struct cgroup_string_list *tmpl_files):&#160;config.c']]],
+  ['cgroup_5ftree_5fhandle_117',['cgroup_tree_handle',['../structcgroup__tree__handle.html',1,'']]],
+  ['cgroup_5funload_5fcgroups_118',['cgroup_unload_cgroups',['../group__group__config.html#ga85b285712354faca495193075035938d',1,'cgroup_unload_cgroups(void):&#160;config.c'],['../group__group__config.html#ga85b285712354faca495193075035938d',1,'cgroup_unload_cgroups(void):&#160;config.c']]],
+  ['cgroup_5fwalk_5ftree_5fbegin_119',['cgroup_walk_tree_begin',['../group__group__iterators.html#ga7b19f10c06abb96d8c8ae88a04888a68',1,'cgroup_walk_tree_begin(const char *controller, const char *base_path, int depth, void **handle, struct cgroup_file_info *info, int *base_level):&#160;api.c'],['../group__group__iterators.html#ga7b19f10c06abb96d8c8ae88a04888a68',1,'cgroup_walk_tree_begin(const char *controller, const char *base_path, int depth, void **handle, struct cgroup_file_info *info, int *base_level):&#160;api.c']]],
+  ['cgroup_5fwalk_5ftree_5fend_120',['cgroup_walk_tree_end',['../group__group__iterators.html#ga09a70990837a58e506a264f8c50d4cde',1,'cgroup_walk_tree_end(void **handle):&#160;api.c'],['../group__group__iterators.html#ga09a70990837a58e506a264f8c50d4cde',1,'cgroup_walk_tree_end(void **handle):&#160;api.c']]],
+  ['cgroup_5fwalk_5ftree_5fnext_121',['cgroup_walk_tree_next',['../group__group__iterators.html#ga527f5499b0aa04d325074435baebdff1',1,'cgroup_walk_tree_next(int depth, void **handle, struct cgroup_file_info *info, int base_level):&#160;api.c'],['../group__group__iterators.html#ga527f5499b0aa04d325074435baebdff1',1,'cgroup_walk_tree_next(int depth, void **handle, struct cgroup_file_info *info, int base_level):&#160;api.c']]],
+  ['cgroup_5fwalk_5ftree_5fset_5fflags_122',['cgroup_walk_tree_set_flags',['../group__group__iterators.html#ga645ec7a6206dffb32667e7a0e148edc8',1,'cgroup_walk_tree_set_flags(void **handle, int flags):&#160;api.c'],['../group__group__iterators.html#ga645ec7a6206dffb32667e7a0e148edc8',1,'cgroup_walk_tree_set_flags(void **handle, int flags):&#160;api.c']]],
+  ['cgroup_5fwalk_5ftype_123',['cgroup_walk_type',['../group__group__iterators.html#ga29a572cbc0c07e2b02dfa0f1ac0067d3',1,'iterators.h']]],
+  ['cgroup_5fwalk_5ftype_5fpost_5fdir_124',['CGROUP_WALK_TYPE_POST_DIR',['../group__group__iterators.html#gga29a572cbc0c07e2b02dfa0f1ac0067d3abf3c31227768960bd6622d2562aae3e1',1,'iterators.h']]],
+  ['cgroup_5fwalk_5ftype_5fpre_5fdir_125',['CGROUP_WALK_TYPE_PRE_DIR',['../group__group__iterators.html#gga29a572cbc0c07e2b02dfa0f1ac0067d3af865296e6a0e55cff574fbb132b9f913',1,'iterators.h']]],
+  ['control_5fvalue_126',['control_value',['../structcontrol__value.html',1,'']]],
+  ['controller_5fdata_127',['controller_data',['../structcontroller__data.html',1,'']]]
+];
diff --git a/search/all_a.html b/search/all_a.html
new file mode 100644 (file)
index 0000000..3a6cac1
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_a.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/all_a.js b/search/all_a.js
new file mode 100644 (file)
index 0000000..3659b19
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['depth_128',['depth',['../structcgroup__file__info.html#ad56dca35266f0f5f5c2666b946d72709',1,'cgroup_file_info']]]
+];
diff --git a/search/all_b.html b/search/all_b.html
new file mode 100644 (file)
index 0000000..130deb4
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_b.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/all_b.js b/search/all_b.js
new file mode 100644 (file)
index 0000000..22a3e5e
--- /dev/null
@@ -0,0 +1,13 @@
+var searchData=
+[
+  ['ecgconfigparsefail_129',['ECGCONFIGPARSEFAIL',['../group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55baf808b0e31be4bfbe8a21f800f913f9c0',1,'error.h']]],
+  ['ecgeof_130',['ECGEOF',['../group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba2724c2f0af0d3e3cea66027f6bf2e436',1,'error.h']]],
+  ['ecgnonempty_131',['ECGNONEMPTY',['../group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba94dbe90328ef8a212633ec464b9b9b11',1,'error.h']]],
+  ['ecgother_132',['ECGOTHER',['../group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba88111f9ca2e967cbf7565724444c0193',1,'error.h']]],
+  ['ecgroupmultimounted_133',['ECGROUPMULTIMOUNTED',['../group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba24a6584dd4238475a4e247bdf6956def',1,'error.h']]],
+  ['ecgroupnorules_134',['ECGROUPNORULES',['../group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba7c23c1a7cbfb7e8e9c66dd96b5c66d21',1,'error.h']]],
+  ['ecgroupparsefail_135',['ECGROUPPARSEFAIL',['../group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55bac62bda67f3029c39ef456100008b1f39',1,'error.h']]],
+  ['ecgrulesparsefail_136',['ECGRULESPARSEFAIL',['../group__group__errors.html#ga515eba7218b187ffe263b7d9ecb3ac1b',1,'error.h']]],
+  ['enabled_137',['enabled',['../structcontroller__data.html#a24be412cfb6c19f7a13a4bff9e55206e',1,'controller_data']]],
+  ['ext_5fcgroup_5frecord_138',['ext_cgroup_record',['../structext__cgroup__record.html',1,'']]]
+];
diff --git a/search/all_c.html b/search/all_c.html
new file mode 100644 (file)
index 0000000..3dd5af0
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_c.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/all_c.js b/search/all_c.js
new file mode 100644 (file)
index 0000000..a40885f
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['full_5fpath_139',['full_path',['../structcgroup__file__info.html#a4c61dc7f726ba0784ff8c71473dbc6e6',1,'cgroup_file_info']]]
+];
diff --git a/search/all_d.html b/search/all_d.html
new file mode 100644 (file)
index 0000000..af7f2f0
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_d.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/all_d.js b/search/all_d.js
new file mode 100644 (file)
index 0000000..a136367
--- /dev/null
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['hierarchy_140',['hierarchy',['../structcontroller__data.html#a25e316f55473ca2b333b0d7e0ca644b4',1,'controller_data']]],
+  ['how_20to_20contribute_20to_20the_20libcgroup_20project_141',['How to Contribute to the libcgroup Project',['../md_CONTRIBUTING.html',1,'']]]
+];
diff --git a/search/all_e.html b/search/all_e.html
new file mode 100644 (file)
index 0000000..e25df42
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_e.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/all_e.js b/search/all_e.js
new file mode 100644 (file)
index 0000000..4202531
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['libcgroup_142',['libcgroup',['../index.html',1,'']]]
+];
diff --git a/search/all_f.html b/search/all_f.html
new file mode 100644 (file)
index 0000000..b23da6c
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_f.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/all_f.js b/search/all_f.js
new file mode 100644 (file)
index 0000000..cfc39d8
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['mount_143',['mount',['../structcg__mount__table__s.html#a9704fa3ec3674f6d433345ea52b6aeef',1,'cg_mount_table_s']]]
+];
diff --git a/search/classes_0.html b/search/classes_0.html
new file mode 100644 (file)
index 0000000..af8159e
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/classes_0.js b/search/classes_0.js
new file mode 100644 (file)
index 0000000..682df07
--- /dev/null
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['array_5fparent_5finfo_155',['array_parent_info',['../structarray__parent__info.html',1,'']]],
+  ['array_5funchanged_156',['array_unchanged',['../structarray__unchanged.html',1,'']]]
+];
diff --git a/search/classes_1.html b/search/classes_1.html
new file mode 100644 (file)
index 0000000..576e916
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_1.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/classes_1.js b/search/classes_1.js
new file mode 100644 (file)
index 0000000..0eb0e16
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['black_5flist_5ftype_157',['black_list_type',['../structblack__list__type.html',1,'']]]
+];
diff --git a/search/classes_2.html b/search/classes_2.html
new file mode 100644 (file)
index 0000000..956405e
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_2.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/classes_2.js b/search/classes_2.js
new file mode 100644 (file)
index 0000000..298768c
--- /dev/null
@@ -0,0 +1,21 @@
+var searchData=
+[
+  ['cg_5fmount_5fpoint_158',['cg_mount_point',['../structcg__mount__point.html',1,'']]],
+  ['cg_5fmount_5ftable_5fs_159',['cg_mount_table_s',['../structcg__mount__table__s.html',1,'']]],
+  ['cgroup_160',['cgroup',['../structcgroup.html',1,'']]],
+  ['cgroup_5fcontroller_161',['cgroup_controller',['../structcgroup__controller.html',1,'']]],
+  ['cgroup_5fdictionary_162',['cgroup_dictionary',['../structcgroup__dictionary.html',1,'']]],
+  ['cgroup_5fdictionary_5fitem_163',['cgroup_dictionary_item',['../structcgroup__dictionary__item.html',1,'']]],
+  ['cgroup_5fdictionary_5fiterator_164',['cgroup_dictionary_iterator',['../structcgroup__dictionary__iterator.html',1,'']]],
+  ['cgroup_5ffile_5finfo_165',['cgroup_file_info',['../structcgroup__file__info.html',1,'']]],
+  ['cgroup_5fgroup_5fspec_166',['cgroup_group_spec',['../structcgroup__group__spec.html',1,'']]],
+  ['cgroup_5fmount_5fpoint_167',['cgroup_mount_point',['../structcgroup__mount__point.html',1,'']]],
+  ['cgroup_5frule_168',['cgroup_rule',['../structcgroup__rule.html',1,'']]],
+  ['cgroup_5frule_5flist_169',['cgroup_rule_list',['../structcgroup__rule__list.html',1,'']]],
+  ['cgroup_5frules_5fdata_170',['cgroup_rules_data',['../structcgroup__rules__data.html',1,'']]],
+  ['cgroup_5fstat_171',['cgroup_stat',['../structcgroup__stat.html',1,'']]],
+  ['cgroup_5fstring_5flist_172',['cgroup_string_list',['../structcgroup__string__list.html',1,'']]],
+  ['cgroup_5ftree_5fhandle_173',['cgroup_tree_handle',['../structcgroup__tree__handle.html',1,'']]],
+  ['control_5fvalue_174',['control_value',['../structcontrol__value.html',1,'']]],
+  ['controller_5fdata_175',['controller_data',['../structcontroller__data.html',1,'']]]
+];
diff --git a/search/classes_3.html b/search/classes_3.html
new file mode 100644 (file)
index 0000000..d33343b
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_3.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/classes_3.js b/search/classes_3.js
new file mode 100644 (file)
index 0000000..4f3c659
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['ext_5fcgroup_5frecord_176',['ext_cgroup_record',['../structext__cgroup__record.html',1,'']]]
+];
diff --git a/search/classes_4.html b/search/classes_4.html
new file mode 100644 (file)
index 0000000..8430b07
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_4.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/classes_4.js b/search/classes_4.js
new file mode 100644 (file)
index 0000000..f401d73
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['parent_5finfo_177',['parent_info',['../structparent__info.html',1,'']]]
+];
diff --git a/search/classes_5.html b/search/classes_5.html
new file mode 100644 (file)
index 0000000..c2f1b76
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_5.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/classes_5.js b/search/classes_5.js
new file mode 100644 (file)
index 0000000..931696c
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['unchanged_5fpid_178',['unchanged_pid',['../structunchanged__pid.html',1,'']]]
+];
diff --git a/search/close.svg b/search/close.svg
new file mode 100644 (file)
index 0000000..a933eea
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   viewBox="0 0 11 11"
+   height="11"
+   width="11"
+   id="svg2"
+   version="1.1">
+  <metadata
+     id="metadata8">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs6" />
+  <path
+     id="path12"
+     d="M 5.5 0.5 A 5 5 0 0 0 0.5 5.5 A 5 5 0 0 0 5.5 10.5 A 5 5 0 0 0 10.5 5.5 A 5 5 0 0 0 5.5 0.5 z M 3.5820312 3 A 0.58291923 0.58291923 0 0 1 4 3.1757812 L 5.5 4.6757812 L 7 3.1757812 A 0.58291923 0.58291923 0 0 1 7.4003906 3 A 0.58291923 0.58291923 0 0 1 7.8242188 4 L 6.3242188 5.5 L 7.8242188 7 A 0.58291923 0.58291923 0 1 1 7 7.8242188 L 5.5 6.3242188 L 4 7.8242188 A 0.58291923 0.58291923 0 1 1 3.1757812 7 L 4.6757812 5.5 L 3.1757812 4 A 0.58291923 0.58291923 0 0 1 3.5820312 3 z "
+     style="stroke-width:1.09870648;fill:#bababa;fill-opacity:1" />
+</svg>
diff --git a/search/enums_0.html b/search/enums_0.html
new file mode 100644 (file)
index 0000000..141fff5
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="enums_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/enums_0.js b/search/enums_0.js
new file mode 100644 (file)
index 0000000..d4d54df
--- /dev/null
@@ -0,0 +1,6 @@
+var searchData=
+[
+  ['cgroup_5ffile_5ftype_276',['cgroup_file_type',['../group__group__iterators.html#ga608b4aa32e2db58fed34771a6a272444',1,'iterators.h']]],
+  ['cgroup_5flog_5flevel_277',['cgroup_log_level',['../group__group__log.html#ga98b7aea5d23411e70c7e3da54d90233a',1,'log.h']]],
+  ['cgroup_5fwalk_5ftype_278',['cgroup_walk_type',['../group__group__iterators.html#ga29a572cbc0c07e2b02dfa0f1ac0067d3',1,'iterators.h']]]
+];
diff --git a/search/enumvalues_0.html b/search/enumvalues_0.html
new file mode 100644 (file)
index 0000000..0d131d9
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="enumvalues_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/enumvalues_0.js b/search/enumvalues_0.js
new file mode 100644 (file)
index 0000000..9db91ae
--- /dev/null
@@ -0,0 +1,12 @@
+var searchData=
+[
+  ['cgroup_5ffile_5ftype_5fdir_279',['CGROUP_FILE_TYPE_DIR',['../group__group__iterators.html#gga608b4aa32e2db58fed34771a6a272444a5418798fc4bf9634429c6af167a0e7c3',1,'iterators.h']]],
+  ['cgroup_5ffile_5ftype_5ffile_280',['CGROUP_FILE_TYPE_FILE',['../group__group__iterators.html#gga608b4aa32e2db58fed34771a6a272444ad925cc45f1b34fe80e14fc6b05269740',1,'iterators.h']]],
+  ['cgroup_5ffile_5ftype_5fother_281',['CGROUP_FILE_TYPE_OTHER',['../group__group__iterators.html#gga608b4aa32e2db58fed34771a6a272444a24e202c59f318e63ad8cafcc1b4b102b',1,'iterators.h']]],
+  ['cgroup_5flog_5fdebug_282',['CGROUP_LOG_DEBUG',['../group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aa86b4157fb38d9f8053c6b7429bd26c72',1,'log.h']]],
+  ['cgroup_5flog_5ferror_283',['CGROUP_LOG_ERROR',['../group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aa4dd44215cd3553e79dbf91eb9ca418a2',1,'log.h']]],
+  ['cgroup_5flog_5finfo_284',['CGROUP_LOG_INFO',['../group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aad66ab51dba078ffc3b1c6d397053f9e2',1,'log.h']]],
+  ['cgroup_5flog_5fwarning_285',['CGROUP_LOG_WARNING',['../group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aaa99ec9e854a543901bddf854d1960057',1,'log.h']]],
+  ['cgroup_5fwalk_5ftype_5fpost_5fdir_286',['CGROUP_WALK_TYPE_POST_DIR',['../group__group__iterators.html#gga29a572cbc0c07e2b02dfa0f1ac0067d3abf3c31227768960bd6622d2562aae3e1',1,'iterators.h']]],
+  ['cgroup_5fwalk_5ftype_5fpre_5fdir_287',['CGROUP_WALK_TYPE_PRE_DIR',['../group__group__iterators.html#gga29a572cbc0c07e2b02dfa0f1ac0067d3af865296e6a0e55cff574fbb132b9f913',1,'iterators.h']]]
+];
diff --git a/search/enumvalues_1.html b/search/enumvalues_1.html
new file mode 100644 (file)
index 0000000..cd9187a
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="enumvalues_1.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/enumvalues_1.js b/search/enumvalues_1.js
new file mode 100644 (file)
index 0000000..f8a5caa
--- /dev/null
@@ -0,0 +1,10 @@
+var searchData=
+[
+  ['ecgconfigparsefail_288',['ECGCONFIGPARSEFAIL',['../group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55baf808b0e31be4bfbe8a21f800f913f9c0',1,'error.h']]],
+  ['ecgeof_289',['ECGEOF',['../group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba2724c2f0af0d3e3cea66027f6bf2e436',1,'error.h']]],
+  ['ecgnonempty_290',['ECGNONEMPTY',['../group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba94dbe90328ef8a212633ec464b9b9b11',1,'error.h']]],
+  ['ecgother_291',['ECGOTHER',['../group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba88111f9ca2e967cbf7565724444c0193',1,'error.h']]],
+  ['ecgroupmultimounted_292',['ECGROUPMULTIMOUNTED',['../group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba24a6584dd4238475a4e247bdf6956def',1,'error.h']]],
+  ['ecgroupnorules_293',['ECGROUPNORULES',['../group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55ba7c23c1a7cbfb7e8e9c66dd96b5c66d21',1,'error.h']]],
+  ['ecgroupparsefail_294',['ECGROUPPARSEFAIL',['../group__group__errors.html#gga06fc87d81c62e9abb8790b6e5713c55bac62bda67f3029c39ef456100008b1f39',1,'error.h']]]
+];
diff --git a/search/functions_0.html b/search/functions_0.html
new file mode 100644 (file)
index 0000000..eb4c501
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/functions_0.js b/search/functions_0.js
new file mode 100644 (file)
index 0000000..10dc0f8
--- /dev/null
@@ -0,0 +1,90 @@
+var searchData=
+[
+  ['cg_5fchmod_5frecursive_179',['cg_chmod_recursive',['../group__group__groups.html#gaef0bf6cd480f2dcb5e964de151a27dd1',1,'cg_chmod_recursive(struct cgroup *cgroup, mode_t dir_mode, int dirm_change, mode_t file_mode, int filem_change):&#160;api.c'],['../group__group__groups.html#gaef0bf6cd480f2dcb5e964de151a27dd1',1,'cg_chmod_recursive(struct cgroup *cgroup, mode_t dir_mode, int dirm_change, mode_t file_mode, int filem_change):&#160;api.c']]],
+  ['cgroup_5fadd_5fall_5fcontrollers_180',['cgroup_add_all_controllers',['../group__group__groups.html#gae870d271b789b5c54c2e3d35de3cd6f9',1,'cgroup_add_all_controllers(struct cgroup *cgroup):&#160;wrapper.c'],['../group__group__groups.html#gae870d271b789b5c54c2e3d35de3cd6f9',1,'cgroup_add_all_controllers(struct cgroup *cgroup):&#160;wrapper.c']]],
+  ['cgroup_5fadd_5fcontroller_181',['cgroup_add_controller',['../group__group__groups.html#gaa2f9c2ac75fd7e56e5ec6fb970304130',1,'cgroup_add_controller(struct cgroup *cgroup, const char *name):&#160;wrapper.c'],['../group__group__groups.html#gaa2f9c2ac75fd7e56e5ec6fb970304130',1,'cgroup_add_controller(struct cgroup *cgroup, const char *name):&#160;wrapper.c']]],
+  ['cgroup_5fadd_5fvalue_5fbool_182',['cgroup_add_value_bool',['../group__group__groups.html#ga4b191a600f84b00ea7afd12c01d918f3',1,'cgroup_add_value_bool(struct cgroup_controller *controller, const char *name, bool value):&#160;wrapper.c'],['../group__group__groups.html#ga4b191a600f84b00ea7afd12c01d918f3',1,'cgroup_add_value_bool(struct cgroup_controller *controller, const char *name, bool value):&#160;wrapper.c']]],
+  ['cgroup_5fadd_5fvalue_5fint64_183',['cgroup_add_value_int64',['../group__group__groups.html#ga6c973bb5ce99e7a91def2032f23d7087',1,'cgroup_add_value_int64(struct cgroup_controller *controller, const char *name, int64_t value):&#160;wrapper.c'],['../group__group__groups.html#ga6c973bb5ce99e7a91def2032f23d7087',1,'cgroup_add_value_int64(struct cgroup_controller *controller, const char *name, int64_t value):&#160;wrapper.c']]],
+  ['cgroup_5fadd_5fvalue_5fstring_184',['cgroup_add_value_string',['../group__group__groups.html#ga4817c68ab791c09c07b663c29b3fb029',1,'cgroup_add_value_string(struct cgroup_controller *controller, const char *name, const char *value):&#160;wrapper.c'],['../group__group__groups.html#ga4817c68ab791c09c07b663c29b3fb029',1,'cgroup_add_value_string(struct cgroup_controller *controller, const char *name, const char *value):&#160;wrapper.c']]],
+  ['cgroup_5fadd_5fvalue_5fuint64_185',['cgroup_add_value_uint64',['../group__group__groups.html#gad9d2216205b96278c626122f8d5e63bb',1,'cgroup_add_value_uint64(struct cgroup_controller *controller, const char *name, u_int64_t value):&#160;wrapper.c'],['../group__group__groups.html#gad9d2216205b96278c626122f8d5e63bb',1,'cgroup_add_value_uint64(struct cgroup_controller *controller, const char *name, u_int64_t value):&#160;wrapper.c']]],
+  ['cgroup_5fattach_5ftask_186',['cgroup_attach_task',['../group__group__tasks.html#ga43414ac2b1fc73bbb46b6278c7500188',1,'cgroup_attach_task(struct cgroup *cgroup):&#160;api.c'],['../group__group__tasks.html#ga43414ac2b1fc73bbb46b6278c7500188',1,'cgroup_attach_task(struct cgroup *cgroup):&#160;api.c']]],
+  ['cgroup_5fattach_5ftask_5fpid_187',['cgroup_attach_task_pid',['../group__group__tasks.html#ga9c7532681986d156ac3f6bac1fcf6aab',1,'cgroup_attach_task_pid(struct cgroup *cgroup, pid_t tid):&#160;api.c'],['../group__group__tasks.html#ga9c7532681986d156ac3f6bac1fcf6aab',1,'cgroup_attach_task_pid(struct cgroup *cgroup, pid_t tid):&#160;api.c']]],
+  ['cgroup_5fchange_5fall_5fcgroups_188',['cgroup_change_all_cgroups',['../group__group__tasks.html#gafc69658b012b6f1c11ba078ffccd70a2',1,'cgroup_change_all_cgroups(void):&#160;api.c'],['../group__group__tasks.html#gafc69658b012b6f1c11ba078ffccd70a2',1,'cgroup_change_all_cgroups(void):&#160;api.c']]],
+  ['cgroup_5fchange_5fcgroup_5fflags_189',['cgroup_change_cgroup_flags',['../group__group__tasks.html#ga368e7b8e19b3943ab6fb50e76a09e6ea',1,'cgroup_change_cgroup_flags(uid_t uid, gid_t gid, const char *procname, pid_t pid, int flags):&#160;api.c'],['../group__group__tasks.html#ga368e7b8e19b3943ab6fb50e76a09e6ea',1,'cgroup_change_cgroup_flags(uid_t uid, gid_t gid, const char *procname, pid_t pid, int flags):&#160;api.c']]],
+  ['cgroup_5fchange_5fcgroup_5fpath_190',['cgroup_change_cgroup_path',['../group__group__tasks.html#ga2d4677baef780c003fc6fba6b5dc78f2',1,'cgroup_change_cgroup_path(const char *path, pid_t pid, const char *const controllers[]):&#160;api.c'],['../group__group__tasks.html#ga2d4677baef780c003fc6fba6b5dc78f2',1,'cgroup_change_cgroup_path(const char *dest, pid_t pid, const char *const controllers[]):&#160;api.c']]],
+  ['cgroup_5fchange_5fcgroup_5fuid_5fgid_191',['cgroup_change_cgroup_uid_gid',['../group__group__tasks.html#ga5eab78a922dbacd368360f03c70146be',1,'cgroup_change_cgroup_uid_gid(uid_t uid, gid_t gid, pid_t pid):&#160;api.c'],['../group__group__tasks.html#ga5eab78a922dbacd368360f03c70146be',1,'cgroup_change_cgroup_uid_gid(uid_t uid, gid_t gid, pid_t pid):&#160;api.c']]],
+  ['cgroup_5fchange_5fcgroup_5fuid_5fgid_5fflags_192',['cgroup_change_cgroup_uid_gid_flags',['../group__group__tasks.html#gae472183a7c9a37826ef15c77014c47fb',1,'cgroup_change_cgroup_uid_gid_flags(uid_t uid, gid_t gid, pid_t pid, int flags):&#160;api.c'],['../group__group__tasks.html#gae472183a7c9a37826ef15c77014c47fb',1,'cgroup_change_cgroup_uid_gid_flags(uid_t uid, gid_t gid, pid_t pid, int flags):&#160;api.c']]],
+  ['cgroup_5fcompare_5fcgroup_193',['cgroup_compare_cgroup',['../group__group__groups.html#ga86898b59e50335f99fe84a11fa38d3fc',1,'cgroup_compare_cgroup(struct cgroup *cgroup_a, struct cgroup *cgroup_b):&#160;wrapper.c'],['../group__group__groups.html#ga86898b59e50335f99fe84a11fa38d3fc',1,'cgroup_compare_cgroup(struct cgroup *cgroup_a, struct cgroup *cgroup_b):&#160;wrapper.c']]],
+  ['cgroup_5fcompare_5fcontrollers_194',['cgroup_compare_controllers',['../group__group__groups.html#gab1725c50c49cec4b0bdad1f26b150ca7',1,'cgroup_compare_controllers(struct cgroup_controller *cgca, struct cgroup_controller *cgcb):&#160;wrapper.c'],['../group__group__groups.html#gab1725c50c49cec4b0bdad1f26b150ca7',1,'cgroup_compare_controllers(struct cgroup_controller *cgca, struct cgroup_controller *cgcb):&#160;wrapper.c']]],
+  ['cgroup_5fconfig_5fcreate_5ftemplate_5fgroup_195',['cgroup_config_create_template_group',['../group__group__config.html#ga72066260cd31ceed7ecc1a648eba37f2',1,'cgroup_config_create_template_group(struct cgroup *cgroup, char *template_name, int flags):&#160;config.c'],['../group__group__config.html#ga72066260cd31ceed7ecc1a648eba37f2',1,'cgroup_config_create_template_group(struct cgroup *cgroup, char *template_name, int flags):&#160;config.c']]],
+  ['cgroup_5fconfig_5fload_5fconfig_196',['cgroup_config_load_config',['../group__group__config.html#ga8adfaca013333acf922a167f55b84140',1,'cgroup_config_load_config(const char *pathname):&#160;config.c'],['../group__group__config.html#ga8adfaca013333acf922a167f55b84140',1,'cgroup_config_load_config(const char *pathname):&#160;config.c']]],
+  ['cgroup_5fconfig_5fset_5fdefault_197',['cgroup_config_set_default',['../group__group__config.html#ga2d3a252b2c0c61c8f64cb1fc41e370ea',1,'cgroup_config_set_default(struct cgroup *new_default):&#160;config.c'],['../group__group__config.html#ga2d3a252b2c0c61c8f64cb1fc41e370ea',1,'cgroup_config_set_default(struct cgroup *new_default):&#160;config.c']]],
+  ['cgroup_5fconfig_5funload_5fconfig_198',['cgroup_config_unload_config',['../group__group__config.html#gaff77affa0b80ccf507b4b46cc0a8c085',1,'cgroup_config_unload_config(const char *pathname, int flags):&#160;config.c'],['../group__group__config.html#gaff77affa0b80ccf507b4b46cc0a8c085',1,'cgroup_config_unload_config(const char *pathname, int flags):&#160;config.c']]],
+  ['cgroup_5fcopy_5fcgroup_199',['cgroup_copy_cgroup',['../group__group__groups.html#gaa981a95e0917d3167601a4c1b392336a',1,'cgroup_copy_cgroup(struct cgroup *dst, struct cgroup *src):&#160;api.c'],['../group__group__groups.html#gaa981a95e0917d3167601a4c1b392336a',1,'cgroup_copy_cgroup(struct cgroup *dst, struct cgroup *src):&#160;api.c']]],
+  ['cgroup_5fcreate_5fcgroup_200',['cgroup_create_cgroup',['../group__group__groups.html#gadb8e13df6064841d3c9707960f782fa7',1,'cgroup_create_cgroup(struct cgroup *cgroup, int ignore_ownership):&#160;api.c'],['../group__group__groups.html#gadb8e13df6064841d3c9707960f782fa7',1,'cgroup_create_cgroup(struct cgroup *cgroup, int ignore_ownership):&#160;api.c']]],
+  ['cgroup_5fcreate_5fcgroup_5ffrom_5fparent_201',['cgroup_create_cgroup_from_parent',['../group__group__groups.html#ga90e1ce96f3cb540f7e82d076dd938f62',1,'cgroup_create_cgroup_from_parent(struct cgroup *cgroup, int ignore_ownership):&#160;api.c'],['../group__group__groups.html#ga90e1ce96f3cb540f7e82d076dd938f62',1,'cgroup_create_cgroup_from_parent(struct cgroup *cgroup, int ignore_ownership):&#160;api.c']]],
+  ['cgroup_5fdelete_5fcgroup_202',['cgroup_delete_cgroup',['../group__group__groups.html#ga1dca18434e5d6be30c28c556da94f565',1,'cgroup_delete_cgroup(struct cgroup *cgroup, int ignore_migration):&#160;api.c'],['../group__group__groups.html#ga1dca18434e5d6be30c28c556da94f565',1,'cgroup_delete_cgroup(struct cgroup *cgroup, int ignore_migration):&#160;api.c']]],
+  ['cgroup_5fdelete_5fcgroup_5fext_203',['cgroup_delete_cgroup_ext',['../group__group__groups.html#ga860c1ec70189c969b2c8373fc1e96d36',1,'cgroup_delete_cgroup_ext(struct cgroup *cgroup, int flags):&#160;api.c'],['../group__group__groups.html#ga860c1ec70189c969b2c8373fc1e96d36',1,'cgroup_delete_cgroup_ext(struct cgroup *cgroup, int flags):&#160;api.c']]],
+  ['cgroup_5ffree_204',['cgroup_free',['../group__group__groups.html#gab20fdb1ae479f8baac482336abf73900',1,'cgroup_free(struct cgroup **cgroup):&#160;wrapper.c'],['../group__group__groups.html#gab20fdb1ae479f8baac482336abf73900',1,'cgroup_free(struct cgroup **cgroup):&#160;wrapper.c']]],
+  ['cgroup_5ffree_5fcontrollers_205',['cgroup_free_controllers',['../group__group__groups.html#ga92d27c9ff0d655838642a7aa68497596',1,'cgroup_free_controllers(struct cgroup *cgroup):&#160;wrapper.c'],['../group__group__groups.html#ga92d27c9ff0d655838642a7aa68497596',1,'cgroup_free_controllers(struct cgroup *cgroup):&#160;wrapper.c']]],
+  ['cgroup_5fget_5fall_5fcontroller_5fbegin_206',['cgroup_get_all_controller_begin',['../group__group__iterators.html#gad48ef653388ca6739a9b6bbb9d7da82e',1,'cgroup_get_all_controller_begin(void **handle, struct controller_data *info):&#160;api.c'],['../group__group__iterators.html#gad48ef653388ca6739a9b6bbb9d7da82e',1,'cgroup_get_all_controller_begin(void **handle, struct controller_data *info):&#160;api.c']]],
+  ['cgroup_5fget_5fall_5fcontroller_5fend_207',['cgroup_get_all_controller_end',['../group__group__iterators.html#ga0c467d42a2c9a916a0edd339a6d7afc8',1,'cgroup_get_all_controller_end(void **handle):&#160;api.c'],['../group__group__iterators.html#ga0c467d42a2c9a916a0edd339a6d7afc8',1,'cgroup_get_all_controller_end(void **handle):&#160;api.c']]],
+  ['cgroup_5fget_5fall_5fcontroller_5fnext_208',['cgroup_get_all_controller_next',['../group__group__iterators.html#ga3d98a04b29b1fe409db1114b7aa76809',1,'cgroup_get_all_controller_next(void **handle, struct controller_data *info):&#160;api.c'],['../group__group__iterators.html#ga3d98a04b29b1fe409db1114b7aa76809',1,'cgroup_get_all_controller_next(void **handle, struct controller_data *info):&#160;api.c']]],
+  ['cgroup_5fget_5fcgroup_209',['cgroup_get_cgroup',['../group__group__groups.html#gad4ba31fe5a8bba63b33b1ea339b849e6',1,'cgroup_get_cgroup(struct cgroup *cgroup):&#160;api.c'],['../group__group__groups.html#gad4ba31fe5a8bba63b33b1ea339b849e6',1,'cgroup_get_cgroup(struct cgroup *cgroup):&#160;api.c']]],
+  ['cgroup_5fget_5fcgroup_5fname_210',['cgroup_get_cgroup_name',['../group__group__groups.html#gac9b5ff481de08ba8fdfcbd42940d2cbf',1,'cgroup_get_cgroup_name(struct cgroup *cgroup):&#160;wrapper.c'],['../group__group__groups.html#gac9b5ff481de08ba8fdfcbd42940d2cbf',1,'cgroup_get_cgroup_name(struct cgroup *cgroup):&#160;wrapper.c']]],
+  ['cgroup_5fget_5fcontroller_211',['cgroup_get_controller',['../group__group__groups.html#ga8335b0aec59c8f845639a7404affce05',1,'cgroup_get_controller(struct cgroup *cgroup, const char *name):&#160;wrapper.c'],['../group__group__groups.html#ga8335b0aec59c8f845639a7404affce05',1,'cgroup_get_controller(struct cgroup *cgroup, const char *name):&#160;wrapper.c']]],
+  ['cgroup_5fget_5fcontroller_5fbegin_212',['cgroup_get_controller_begin',['../group__group__iterators.html#ga5f9f21138f9b18912a16b21a45b53c44',1,'cgroup_get_controller_begin(void **handle, struct cgroup_mount_point *info):&#160;api.c'],['../group__group__iterators.html#ga5f9f21138f9b18912a16b21a45b53c44',1,'cgroup_get_controller_begin(void **handle, struct cgroup_mount_point *info):&#160;api.c']]],
+  ['cgroup_5fget_5fcontroller_5fend_213',['cgroup_get_controller_end',['../group__group__iterators.html#gab485cda2bc9640bacbf61f1953ae750c',1,'cgroup_get_controller_end(void **handle):&#160;api.c'],['../group__group__iterators.html#gab485cda2bc9640bacbf61f1953ae750c',1,'cgroup_get_controller_end(void **handle):&#160;api.c']]],
+  ['cgroup_5fget_5fcontroller_5fnext_214',['cgroup_get_controller_next',['../group__group__iterators.html#ga926b70423b6c087c21a14670cd23cd7d',1,'cgroup_get_controller_next(void **handle, struct cgroup_mount_point *info):&#160;api.c'],['../group__group__iterators.html#ga926b70423b6c087c21a14670cd23cd7d',1,'cgroup_get_controller_next(void **handle, struct cgroup_mount_point *info):&#160;api.c']]],
+  ['cgroup_5fget_5fcurrent_5fcontroller_5fpath_215',['cgroup_get_current_controller_path',['../group__group__tasks.html#ga6f2c17b99cf2526cb46df4769eb3f46e',1,'cgroup_get_current_controller_path(pid_t pid, const char *controller, char **current_path):&#160;api.c'],['../group__group__tasks.html#ga6f2c17b99cf2526cb46df4769eb3f46e',1,'cgroup_get_current_controller_path(pid_t pid, const char *controller, char **current_path):&#160;api.c']]],
+  ['cgroup_5fget_5flast_5ferrno_216',['cgroup_get_last_errno',['../group__group__errors.html#ga29057c4aec05bef2b6bf2855ae5d5d46',1,'cgroup_get_last_errno(void):&#160;api.c'],['../group__group__errors.html#ga29057c4aec05bef2b6bf2855ae5d5d46',1,'cgroup_get_last_errno(void):&#160;api.c']]],
+  ['cgroup_5fget_5fprocs_217',['cgroup_get_procs',['../group__group__groups.html#ga08a4fe913d59f61a39e61b8b02537dc2',1,'cgroup_get_procs(char *name, char *controller, pid_t **pids, int *size):&#160;api.c'],['../group__group__groups.html#ga08a4fe913d59f61a39e61b8b02537dc2',1,'cgroup_get_procs(char *name, char *controller, pid_t **pids, int *size):&#160;api.c']]],
+  ['cgroup_5fget_5fsubsys_5fmount_5fpoint_218',['cgroup_get_subsys_mount_point',['../group__group__init.html#ga4f061b353321b81869057970d96f09f7',1,'cgroup_get_subsys_mount_point(const char *controller, char **mount_point):&#160;api.c'],['../group__group__init.html#ga4f061b353321b81869057970d96f09f7',1,'cgroup_get_subsys_mount_point(const char *controller, char **mount_point):&#160;api.c']]],
+  ['cgroup_5fget_5fsubsys_5fmount_5fpoint_5fbegin_219',['cgroup_get_subsys_mount_point_begin',['../group__group__iterators.html#ga18a3c6fe7da42b9da96ce34dce1e31b8',1,'cgroup_get_subsys_mount_point_begin(const char *controller, void **handle, char *path):&#160;api.c'],['../group__group__iterators.html#ga18a3c6fe7da42b9da96ce34dce1e31b8',1,'cgroup_get_subsys_mount_point_begin(const char *controller, void **handle, char *path):&#160;api.c']]],
+  ['cgroup_5fget_5fsubsys_5fmount_5fpoint_5fend_220',['cgroup_get_subsys_mount_point_end',['../group__group__iterators.html#ga9c9b0f1921c205bd25bfc6c1d20486eb',1,'cgroup_get_subsys_mount_point_end(void **handle):&#160;api.c'],['../group__group__iterators.html#ga9c9b0f1921c205bd25bfc6c1d20486eb',1,'cgroup_get_subsys_mount_point_end(void **handle):&#160;api.c']]],
+  ['cgroup_5fget_5fsubsys_5fmount_5fpoint_5fnext_221',['cgroup_get_subsys_mount_point_next',['../group__group__iterators.html#ga3d66997158cb8a334317923ad94cc789',1,'cgroup_get_subsys_mount_point_next(void **handle, char *path):&#160;api.c'],['../group__group__iterators.html#ga3d66997158cb8a334317923ad94cc789',1,'cgroup_get_subsys_mount_point_next(void **handle, char *path):&#160;api.c']]],
+  ['cgroup_5fget_5ftask_5fbegin_222',['cgroup_get_task_begin',['../group__group__iterators.html#gad7218154192f733120e1025cc19d0a36',1,'cgroup_get_task_begin(const char *cgroup, const char *controller, void **handle, pid_t *pid):&#160;api.c'],['../group__group__iterators.html#gad7218154192f733120e1025cc19d0a36',1,'cgroup_get_task_begin(const char *cgroup, const char *controller, void **handle, pid_t *pid):&#160;api.c']]],
+  ['cgroup_5fget_5ftask_5fend_223',['cgroup_get_task_end',['../group__group__iterators.html#gaeb955e5f4da551268380b1271d478816',1,'cgroup_get_task_end(void **handle):&#160;api.c'],['../group__group__iterators.html#gaeb955e5f4da551268380b1271d478816',1,'cgroup_get_task_end(void **handle):&#160;api.c']]],
+  ['cgroup_5fget_5ftask_5fnext_224',['cgroup_get_task_next',['../group__group__iterators.html#gaf3a0364682b7449ddccfb0862bbb565e',1,'cgroup_get_task_next(void **handle, pid_t *pid):&#160;api.c'],['../group__group__iterators.html#gaf3a0364682b7449ddccfb0862bbb565e',1,'cgroup_get_task_next(void **handle, pid_t *pid):&#160;api.c']]],
+  ['cgroup_5fget_5fuid_5fgid_225',['cgroup_get_uid_gid',['../group__group__groups.html#ga007d21c304d9cc6e948dc0ae51ecfa86',1,'cgroup_get_uid_gid(struct cgroup *cgroup, uid_t *tasks_uid, gid_t *tasks_gid, uid_t *control_uid, gid_t *control_gid):&#160;wrapper.c'],['../group__group__groups.html#ga007d21c304d9cc6e948dc0ae51ecfa86',1,'cgroup_get_uid_gid(struct cgroup *cgroup, uid_t *tasks_uid, gid_t *tasks_gid, uid_t *control_uid, gid_t *control_gid):&#160;wrapper.c']]],
+  ['cgroup_5fget_5fvalue_5fbool_226',['cgroup_get_value_bool',['../group__group__groups.html#gab95007148eac89b7e935d93a4524787b',1,'cgroup_get_value_bool(struct cgroup_controller *controller, const char *name, bool *value):&#160;wrapper.c'],['../group__group__groups.html#gab95007148eac89b7e935d93a4524787b',1,'cgroup_get_value_bool(struct cgroup_controller *controller, const char *name, bool *value):&#160;wrapper.c']]],
+  ['cgroup_5fget_5fvalue_5fint64_227',['cgroup_get_value_int64',['../group__group__groups.html#ga0fe9b05f26b3cab21fc446c9a2700526',1,'cgroup_get_value_int64(struct cgroup_controller *controller, const char *name, int64_t *value):&#160;wrapper.c'],['../group__group__groups.html#ga0fe9b05f26b3cab21fc446c9a2700526',1,'cgroup_get_value_int64(struct cgroup_controller *controller, const char *name, int64_t *value):&#160;wrapper.c']]],
+  ['cgroup_5fget_5fvalue_5fname_228',['cgroup_get_value_name',['../group__group__groups.html#ga16ca75fd16eda7cfc642421111e9a331',1,'cgroup_get_value_name(struct cgroup_controller *controller, int index):&#160;wrapper.c'],['../group__group__groups.html#ga16ca75fd16eda7cfc642421111e9a331',1,'cgroup_get_value_name(struct cgroup_controller *controller, int index):&#160;wrapper.c']]],
+  ['cgroup_5fget_5fvalue_5fname_5fcount_229',['cgroup_get_value_name_count',['../group__group__groups.html#ga25115085978ce2a8d671e7876cc49c1d',1,'cgroup_get_value_name_count(struct cgroup_controller *controller):&#160;wrapper.c'],['../group__group__groups.html#ga25115085978ce2a8d671e7876cc49c1d',1,'cgroup_get_value_name_count(struct cgroup_controller *controller):&#160;wrapper.c']]],
+  ['cgroup_5fget_5fvalue_5fstring_230',['cgroup_get_value_string',['../group__group__groups.html#gafaa51e5ffe09f8ad05585a1d3b6f7fa9',1,'cgroup_get_value_string(struct cgroup_controller *controller, const char *name, char **value):&#160;wrapper.c'],['../group__group__groups.html#gafaa51e5ffe09f8ad05585a1d3b6f7fa9',1,'cgroup_get_value_string(struct cgroup_controller *controller, const char *name, char **value):&#160;wrapper.c']]],
+  ['cgroup_5fget_5fvalue_5fuint64_231',['cgroup_get_value_uint64',['../group__group__groups.html#ga951861259c0373895bfb637fce337312',1,'cgroup_get_value_uint64(struct cgroup_controller *controller, const char *name, u_int64_t *value):&#160;wrapper.c'],['../group__group__groups.html#ga951861259c0373895bfb637fce337312',1,'cgroup_get_value_uint64(struct cgroup_controller *controller, const char *name, u_int64_t *value):&#160;wrapper.c']]],
+  ['cgroup_5finit_232',['cgroup_init',['../group__group__init.html#ga37740e2f5f298edf13e18fcd7632b75a',1,'cgroup_init(void):&#160;api.c'],['../group__group__init.html#ga37740e2f5f298edf13e18fcd7632b75a',1,'cgroup_init(void):&#160;api.c']]],
+  ['cgroup_5finit_5frules_5fcache_233',['cgroup_init_rules_cache',['../group__group__tasks.html#gad7fa5a2c4db08d31da5bfbecaf482d3d',1,'cgroup_init_rules_cache(void):&#160;api.c'],['../group__group__tasks.html#gad7fa5a2c4db08d31da5bfbecaf482d3d',1,'cgroup_init_rules_cache(void):&#160;api.c']]],
+  ['cgroup_5finit_5ftemplates_5fcache_234',['cgroup_init_templates_cache',['../group__group__config.html#ga6f8c41bb920565e674787fe6dabaef00',1,'cgroup_init_templates_cache(char *pathname):&#160;config.c'],['../group__group__config.html#ga6f8c41bb920565e674787fe6dabaef00',1,'cgroup_init_templates_cache(char *pathname):&#160;config.c']]],
+  ['cgroup_5fload_5ftemplates_5fcache_5ffrom_5ffiles_235',['cgroup_load_templates_cache_from_files',['../group__group__config.html#ga924860998c37da53cababe24163fc89b',1,'cgroup_load_templates_cache_from_files(int *file_index):&#160;config.c'],['../group__group__config.html#ga924860998c37da53cababe24163fc89b',1,'cgroup_load_templates_cache_from_files(int *file_index):&#160;config.c']]],
+  ['cgroup_5flog_236',['cgroup_log',['../group__group__log.html#gab514ad5d83422ddfe479bdf651e80958',1,'cgroup_log(int loglevel, const char *fmt,...):&#160;log.c'],['../group__group__log.html#gab514ad5d83422ddfe479bdf651e80958',1,'cgroup_log(int level, const char *fmt,...):&#160;log.c']]],
+  ['cgroup_5fmodify_5fcgroup_237',['cgroup_modify_cgroup',['../group__group__groups.html#ga31ba5e865ae8d58b4453c0ef06d2c071',1,'cgroup_modify_cgroup(struct cgroup *cgroup):&#160;api.c'],['../group__group__groups.html#ga31ba5e865ae8d58b4453c0ef06d2c071',1,'cgroup_modify_cgroup(struct cgroup *cgroup):&#160;api.c']]],
+  ['cgroup_5fnew_5fcgroup_238',['cgroup_new_cgroup',['../group__group__groups.html#ga6cd4733e5982ac2c92ee3cb3dbd10a31',1,'cgroup_new_cgroup(const char *name):&#160;wrapper.c'],['../group__group__groups.html#ga6cd4733e5982ac2c92ee3cb3dbd10a31',1,'cgroup_new_cgroup(const char *name):&#160;wrapper.c']]],
+  ['cgroup_5fparse_5flog_5flevel_5fstr_239',['cgroup_parse_log_level_str',['../group__group__log.html#gaa364a06aee0e99228a1e6a26b25a9794',1,'cgroup_parse_log_level_str(const char *levelstr):&#160;log.c'],['../group__group__log.html#gaa364a06aee0e99228a1e6a26b25a9794',1,'cgroup_parse_log_level_str(const char *levelstr):&#160;log.c']]],
+  ['cgroup_5fprint_5frules_5fconfig_240',['cgroup_print_rules_config',['../group__group__tasks.html#gac4e3f29cfbdc3d77f08c9fe60857274a',1,'cgroup_print_rules_config(FILE *fp):&#160;api.c'],['../group__group__tasks.html#gac4e3f29cfbdc3d77f08c9fe60857274a',1,'cgroup_print_rules_config(FILE *fp):&#160;api.c']]],
+  ['cgroup_5fread_5fstats_5fbegin_241',['cgroup_read_stats_begin',['../group__group__iterators.html#ga1138e47f124f0f634586db5e0c4ae5de',1,'cgroup_read_stats_begin(const char *controller, const char *path, void **handle, struct cgroup_stat *stat):&#160;api.c'],['../group__group__iterators.html#ga1138e47f124f0f634586db5e0c4ae5de',1,'cgroup_read_stats_begin(const char *controller, const char *path, void **handle, struct cgroup_stat *cgroup_stat):&#160;api.c']]],
+  ['cgroup_5fread_5fstats_5fend_242',['cgroup_read_stats_end',['../group__group__iterators.html#gaba386d9db6cadc6ad85c2552f63447bb',1,'cgroup_read_stats_end(void **handle):&#160;api.c'],['../group__group__iterators.html#gaba386d9db6cadc6ad85c2552f63447bb',1,'cgroup_read_stats_end(void **handle):&#160;api.c']]],
+  ['cgroup_5fread_5fstats_5fnext_243',['cgroup_read_stats_next',['../group__group__iterators.html#gaf95587508fc15d74fd5ed0df58024be7',1,'cgroup_read_stats_next(void **handle, struct cgroup_stat *stat):&#160;api.c'],['../group__group__iterators.html#gaf95587508fc15d74fd5ed0df58024be7',1,'cgroup_read_stats_next(void **handle, struct cgroup_stat *cgroup_stat):&#160;api.c']]],
+  ['cgroup_5fread_5fvalue_5fbegin_244',['cgroup_read_value_begin',['../group__group__iterators.html#ga73edb115af6779644d3371b12cf09140',1,'cgroup_read_value_begin(const char *controller, const char *path, char *name, void **handle, char *buffer, int max):&#160;api.c'],['../group__group__iterators.html#ga73edb115af6779644d3371b12cf09140',1,'cgroup_read_value_begin(const char *controller, const char *path, char *name, void **handle, char *buffer, int max):&#160;api.c']]],
+  ['cgroup_5fread_5fvalue_5fend_245',['cgroup_read_value_end',['../group__group__iterators.html#gad348f041e283860cbf6bcea567e23a21',1,'cgroup_read_value_end(void **handle):&#160;api.c'],['../group__group__iterators.html#gad348f041e283860cbf6bcea567e23a21',1,'cgroup_read_value_end(void **handle):&#160;api.c']]],
+  ['cgroup_5fread_5fvalue_5fnext_246',['cgroup_read_value_next',['../group__group__iterators.html#gaced2fe331f19d599a3270db2440847cc',1,'cgroup_read_value_next(void **handle, char *buffer, int max):&#160;api.c'],['../group__group__iterators.html#gaced2fe331f19d599a3270db2440847cc',1,'cgroup_read_value_next(void **handle, char *buffer, int max):&#160;api.c']]],
+  ['cgroup_5fregister_5funchanged_5fprocess_247',['cgroup_register_unchanged_process',['../group__group__tasks.html#ga64f7967d6d5edfff9afddaa6a6974b1c',1,'cgroup_register_unchanged_process(pid_t pid, int flags):&#160;api.c'],['../group__group__tasks.html#ga64f7967d6d5edfff9afddaa6a6974b1c',1,'cgroup_register_unchanged_process(pid_t pid, int flags):&#160;api.c']]],
+  ['cgroup_5freload_5fcached_5frules_248',['cgroup_reload_cached_rules',['../group__group__tasks.html#gaf81ebd9cb5575c75b4c85f385ebda1ce',1,'cgroup_reload_cached_rules(void):&#160;api.c'],['../group__group__tasks.html#gaf81ebd9cb5575c75b4c85f385ebda1ce',1,'cgroup_reload_cached_rules(void):&#160;api.c']]],
+  ['cgroup_5freload_5fcached_5ftemplates_249',['cgroup_reload_cached_templates',['../group__group__config.html#ga89fe0d7943b29cc10d57b07abcdfa7b5',1,'cgroup_reload_cached_templates(char *pathname):&#160;config.c'],['../group__group__config.html#ga89fe0d7943b29cc10d57b07abcdfa7b5',1,'cgroup_reload_cached_templates(char *pathname):&#160;config.c']]],
+  ['cgroup_5fset_5fdefault_5flogger_250',['cgroup_set_default_logger',['../group__group__log.html#gab1457ce518dcde0b9f3c14ec9efa2de7',1,'cgroup_set_default_logger(int level):&#160;log.c'],['../group__group__log.html#gab1457ce518dcde0b9f3c14ec9efa2de7',1,'cgroup_set_default_logger(int loglevel):&#160;log.c']]],
+  ['cgroup_5fset_5flogger_251',['cgroup_set_logger',['../group__group__log.html#ga76d7032206f9b9d1c0be1a71a68c43d0',1,'cgroup_set_logger(cgroup_logger_callback logger, int loglevel, void *userdata):&#160;log.c'],['../group__group__log.html#ga76d7032206f9b9d1c0be1a71a68c43d0',1,'cgroup_set_logger(cgroup_logger_callback logger, int loglevel, void *userdata):&#160;log.c']]],
+  ['cgroup_5fset_5floglevel_252',['cgroup_set_loglevel',['../group__group__log.html#gaac5fe2352800ff62465a5abe649d5b8c',1,'cgroup_set_loglevel(int loglevel):&#160;log.c'],['../group__group__log.html#gaac5fe2352800ff62465a5abe649d5b8c',1,'cgroup_set_loglevel(int loglevel):&#160;log.c']]],
+  ['cgroup_5fset_5fpermissions_253',['cgroup_set_permissions',['../group__group__groups.html#gaa0400f1ff2fba7fbb6db82d97039d92b',1,'cgroup_set_permissions(struct cgroup *cgroup, mode_t control_dperm, mode_t control_fperm, mode_t task_fperm):&#160;api.c'],['../group__group__groups.html#gaa0400f1ff2fba7fbb6db82d97039d92b',1,'cgroup_set_permissions(struct cgroup *cgroup, mode_t control_dperm, mode_t control_fperm, mode_t task_fperm):&#160;api.c']]],
+  ['cgroup_5fset_5fuid_5fgid_254',['cgroup_set_uid_gid',['../group__group__groups.html#ga53b9e13e30660c805ab5773d69397a43',1,'cgroup_set_uid_gid(struct cgroup *cgroup, uid_t tasks_uid, gid_t tasks_gid, uid_t control_uid, gid_t control_gid):&#160;wrapper.c'],['../group__group__groups.html#ga53b9e13e30660c805ab5773d69397a43',1,'cgroup_set_uid_gid(struct cgroup *cgroup, uid_t tasks_uid, gid_t tasks_gid, uid_t control_uid, gid_t control_gid):&#160;wrapper.c']]],
+  ['cgroup_5fset_5fvalue_5fbool_255',['cgroup_set_value_bool',['../group__group__groups.html#gafb24892bc221cffee0f5fe07f64d54d7',1,'cgroup_set_value_bool(struct cgroup_controller *controller, const char *name, bool value):&#160;wrapper.c'],['../group__group__groups.html#gafb24892bc221cffee0f5fe07f64d54d7',1,'cgroup_set_value_bool(struct cgroup_controller *controller, const char *name, bool value):&#160;wrapper.c']]],
+  ['cgroup_5fset_5fvalue_5fint64_256',['cgroup_set_value_int64',['../group__group__groups.html#gaa5c39e51035cc43dd26a3c620441a956',1,'cgroup_set_value_int64(struct cgroup_controller *controller, const char *name, int64_t value):&#160;wrapper.c'],['../group__group__groups.html#gaa5c39e51035cc43dd26a3c620441a956',1,'cgroup_set_value_int64(struct cgroup_controller *controller, const char *name, int64_t value):&#160;wrapper.c']]],
+  ['cgroup_5fset_5fvalue_5fstring_257',['cgroup_set_value_string',['../group__group__groups.html#ga938febc02b59cbeb8e4ceb2dc7fdac82',1,'cgroup_set_value_string(struct cgroup_controller *controller, const char *name, const char *value):&#160;wrapper.c'],['../group__group__groups.html#ga938febc02b59cbeb8e4ceb2dc7fdac82',1,'cgroup_set_value_string(struct cgroup_controller *controller, const char *name, const char *value):&#160;wrapper.c']]],
+  ['cgroup_5fset_5fvalue_5fuint64_258',['cgroup_set_value_uint64',['../group__group__groups.html#gade01aa1fe30ccc968af9fe8a3bc821e5',1,'cgroup_set_value_uint64(struct cgroup_controller *controller, const char *name, u_int64_t value):&#160;wrapper.c'],['../group__group__groups.html#gade01aa1fe30ccc968af9fe8a3bc821e5',1,'cgroup_set_value_uint64(struct cgroup_controller *controller, const char *name, u_int64_t value):&#160;wrapper.c']]],
+  ['cgroup_5fstrerror_259',['cgroup_strerror',['../group__group__errors.html#gaeae1d51db8528c89d84501c745020e6b',1,'cgroup_strerror(int code):&#160;api.c'],['../group__group__errors.html#gaeae1d51db8528c89d84501c745020e6b',1,'cgroup_strerror(int code):&#160;api.c']]],
+  ['cgroup_5ftemplates_5fcache_5fset_5fsource_5ffiles_260',['cgroup_templates_cache_set_source_files',['../group__group__config.html#gacb09024dc469a1a1ff8cdebd8d0ab422',1,'cgroup_templates_cache_set_source_files(struct cgroup_string_list *tmpl_files):&#160;config.c'],['../group__group__config.html#gacb09024dc469a1a1ff8cdebd8d0ab422',1,'cgroup_templates_cache_set_source_files(struct cgroup_string_list *tmpl_files):&#160;config.c']]],
+  ['cgroup_5funload_5fcgroups_261',['cgroup_unload_cgroups',['../group__group__config.html#ga85b285712354faca495193075035938d',1,'cgroup_unload_cgroups(void):&#160;config.c'],['../group__group__config.html#ga85b285712354faca495193075035938d',1,'cgroup_unload_cgroups(void):&#160;config.c']]],
+  ['cgroup_5fwalk_5ftree_5fbegin_262',['cgroup_walk_tree_begin',['../group__group__iterators.html#ga7b19f10c06abb96d8c8ae88a04888a68',1,'cgroup_walk_tree_begin(const char *controller, const char *base_path, int depth, void **handle, struct cgroup_file_info *info, int *base_level):&#160;api.c'],['../group__group__iterators.html#ga7b19f10c06abb96d8c8ae88a04888a68',1,'cgroup_walk_tree_begin(const char *controller, const char *base_path, int depth, void **handle, struct cgroup_file_info *info, int *base_level):&#160;api.c']]],
+  ['cgroup_5fwalk_5ftree_5fend_263',['cgroup_walk_tree_end',['../group__group__iterators.html#ga09a70990837a58e506a264f8c50d4cde',1,'cgroup_walk_tree_end(void **handle):&#160;api.c'],['../group__group__iterators.html#ga09a70990837a58e506a264f8c50d4cde',1,'cgroup_walk_tree_end(void **handle):&#160;api.c']]],
+  ['cgroup_5fwalk_5ftree_5fnext_264',['cgroup_walk_tree_next',['../group__group__iterators.html#ga527f5499b0aa04d325074435baebdff1',1,'cgroup_walk_tree_next(int depth, void **handle, struct cgroup_file_info *info, int base_level):&#160;api.c'],['../group__group__iterators.html#ga527f5499b0aa04d325074435baebdff1',1,'cgroup_walk_tree_next(int depth, void **handle, struct cgroup_file_info *info, int base_level):&#160;api.c']]],
+  ['cgroup_5fwalk_5ftree_5fset_5fflags_265',['cgroup_walk_tree_set_flags',['../group__group__iterators.html#ga645ec7a6206dffb32667e7a0e148edc8',1,'cgroup_walk_tree_set_flags(void **handle, int flags):&#160;api.c'],['../group__group__iterators.html#ga645ec7a6206dffb32667e7a0e148edc8',1,'cgroup_walk_tree_set_flags(void **handle, int flags):&#160;api.c']]]
+];
diff --git a/search/groups_0.html b/search/groups_0.html
new file mode 100644 (file)
index 0000000..c600b49
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/groups_0.js b/search/groups_0.js
new file mode 100644 (file)
index 0000000..98e8c7f
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['1_2e_20initialization_295',['1. Initialization',['../group__group__init.html',1,'']]]
+];
diff --git a/search/groups_1.html b/search/groups_1.html
new file mode 100644 (file)
index 0000000..2eb3550
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_1.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/groups_1.js b/search/groups_1.js
new file mode 100644 (file)
index 0000000..f45c026
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['2_2e_20group_20manipulation_20api_296',['2. Group manipulation API',['../group__group__groups.html',1,'']]]
+];
diff --git a/search/groups_2.html b/search/groups_2.html
new file mode 100644 (file)
index 0000000..12f4af7
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_2.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/groups_2.js b/search/groups_2.js
new file mode 100644 (file)
index 0000000..415c51c
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['3_2e_20iterators_297',['3. Iterators',['../group__group__iterators.html',1,'']]]
+];
diff --git a/search/groups_3.html b/search/groups_3.html
new file mode 100644 (file)
index 0000000..5e235b5
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_3.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/groups_3.js b/search/groups_3.js
new file mode 100644 (file)
index 0000000..57eee47
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['4_2e_20manipulation_20with_20tasks_298',['4. Manipulation with tasks',['../group__group__tasks.html',1,'']]]
+];
diff --git a/search/groups_4.html b/search/groups_4.html
new file mode 100644 (file)
index 0000000..99405e1
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_4.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/groups_4.js b/search/groups_4.js
new file mode 100644 (file)
index 0000000..19a6d88
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['5_2e_20configuration_299',['5. Configuration',['../group__group__config.html',1,'']]]
+];
diff --git a/search/groups_5.html b/search/groups_5.html
new file mode 100644 (file)
index 0000000..583f5f5
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_5.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/groups_5.js b/search/groups_5.js
new file mode 100644 (file)
index 0000000..19f256c
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['6_2e_20error_20handling_300',['6. Error handling',['../group__group__errors.html',1,'']]]
+];
diff --git a/search/groups_6.html b/search/groups_6.html
new file mode 100644 (file)
index 0000000..df6a310
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_6.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/groups_6.js b/search/groups_6.js
new file mode 100644 (file)
index 0000000..731e9ca
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['7_2e_20logging_301',['7. Logging',['../group__group__log.html',1,'']]]
+];
diff --git a/search/mag_sel.svg b/search/mag_sel.svg
new file mode 100644 (file)
index 0000000..03626f6
--- /dev/null
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="svg2"
+   width="20"
+   height="19"
+   viewBox="0 0 20 19"
+   sodipodi:docname="mag_sel.svg"
+   inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
+  <metadata
+     id="metadata8">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs6" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1920"
+     inkscape:window-height="2096"
+     id="namedview4"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="32"
+     inkscape:cx="5.9792688"
+     inkscape:cy="1.1436277"
+     inkscape:window-x="1920"
+     inkscape:window-y="27"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2" />
+  <circle
+     style="fill:#000000;fill-opacity:0;stroke:#656565;stroke-width:1.4;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+     id="path4611"
+     cx="5.5"
+     cy="8.5"
+     r="3.5" />
+  <path
+     style="fill:#656565;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     d="M 11,7 13.5,10 16,7 Z"
+     id="path4609"
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="cccc" />
+  <path
+     style="fill:none;stroke:#656565;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     d="m 8.1085854,11.109059 2.7823556,2.782356"
+     id="path4630"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/search/nomatches.html b/search/nomatches.html
new file mode 100644 (file)
index 0000000..2b9360b
--- /dev/null
@@ -0,0 +1,13 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</body>
+</html>
diff --git a/search/pages_0.html b/search/pages_0.html
new file mode 100644 (file)
index 0000000..8517b48
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="pages_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/pages_0.js b/search/pages_0.js
new file mode 100644 (file)
index 0000000..a633ce5
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['how_20to_20contribute_20to_20the_20libcgroup_20project_302',['How to Contribute to the libcgroup Project',['../md_CONTRIBUTING.html',1,'']]]
+];
diff --git a/search/pages_1.html b/search/pages_1.html
new file mode 100644 (file)
index 0000000..a0fb679
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="pages_1.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/pages_1.js b/search/pages_1.js
new file mode 100644 (file)
index 0000000..a8765e3
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['libcgroup_303',['libcgroup',['../index.html',1,'']]]
+];
diff --git a/search/pages_2.html b/search/pages_2.html
new file mode 100644 (file)
index 0000000..084edfd
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="pages_2.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/pages_2.js b/search/pages_2.js
new file mode 100644 (file)
index 0000000..1d64172
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['readme_304',['README',['../md_README.html',1,'']]]
+];
diff --git a/search/pages_3.html b/search/pages_3.html
new file mode 100644 (file)
index 0000000..c0b45b0
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="pages_3.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/pages_3.js b/search/pages_3.js
new file mode 100644 (file)
index 0000000..e0c6178
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['todo_20list_305',['Todo List',['../todo.html',1,'']]]
+];
diff --git a/search/search.css b/search/search.css
new file mode 100644 (file)
index 0000000..9074198
--- /dev/null
@@ -0,0 +1,257 @@
+/*---------------- Search Box */
+
+#MSearchBox {
+    white-space : nowrap;
+    background: white;
+    border-radius: 0.65em;
+    box-shadow: inset 0.5px 0.5px 3px 0px #555;
+    z-index: 102;
+}
+
+#MSearchBox .left {
+    display: inline-block;
+    vertical-align: middle;
+    height: 1.4em;
+}
+
+#MSearchSelect {
+    display: inline-block;
+    vertical-align: middle;
+    height: 1.4em;
+    padding: 0 0 0 0.3em;
+    margin: 0;
+}
+
+#MSearchField {
+    display: inline-block;
+    vertical-align: middle;
+    width: 7.5em;
+    height: 1.1em;
+    margin: 0 0.15em;
+    padding: 0;
+    line-height: 1em;
+    border:none;
+    color: #909090;
+    outline: none;
+    font-family: Arial, Verdana, sans-serif;
+    -webkit-border-radius: 0px;
+    border-radius: 0px;
+    background: none;
+}
+
+
+#MSearchBox .right {
+    display: inline-block;
+    vertical-align: middle;
+    width: 1.4em;
+    height: 1.4em;
+}
+
+#MSearchClose {
+    display: none;
+    font-size: inherit;
+    background : none;
+    border: none;
+    margin: 0;
+    padding: 0;
+    outline: none;
+
+}
+
+#MSearchCloseImg {
+    height: 1.4em;
+    padding: 0.3em;
+    margin: 0;
+}
+
+.MSearchBoxActive #MSearchField {
+    color: #000000;
+}
+
+#main-menu > li:last-child {
+    /* This <li> object is the parent of the search bar */
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    height: 36px;
+    margin-right: 1em;
+}
+
+/*---------------- Search filter selection */
+
+#MSearchSelectWindow {
+    display: none;
+    position: absolute;
+    left: 0; top: 0;
+    border: 1px solid #90A5CE;
+    background-color: #F9FAFC;
+    z-index: 10001;
+    padding-top: 4px;
+    padding-bottom: 4px;
+    -moz-border-radius: 4px;
+    -webkit-border-top-left-radius: 4px;
+    -webkit-border-top-right-radius: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+.SelectItem {
+    font: 8pt Arial, Verdana, sans-serif;
+    padding-left:  2px;
+    padding-right: 12px;
+    border: 0px;
+}
+
+span.SelectionMark {
+    margin-right: 4px;
+    font-family: monospace;
+    outline-style: none;
+    text-decoration: none;
+}
+
+a.SelectItem {
+    display: block;
+    outline-style: none;
+    color: #000000; 
+    text-decoration: none;
+    padding-left:   6px;
+    padding-right: 12px;
+}
+
+a.SelectItem:focus,
+a.SelectItem:active {
+    color: #000000; 
+    outline-style: none;
+    text-decoration: none;
+}
+
+a.SelectItem:hover {
+    color: #FFFFFF;
+    background-color: #3D578C;
+    outline-style: none;
+    text-decoration: none;
+    cursor: pointer;
+    display: block;
+}
+
+/*---------------- Search results window */
+
+iframe#MSearchResults {
+    width: 60ex;
+    height: 15em;
+}
+
+#MSearchResultsWindow {
+    display: none;
+    position: absolute;
+    left: 0; top: 0;
+    border: 1px solid #000;
+    background-color: #EEF1F7;
+    z-index:10000;
+}
+
+/* ----------------------------------- */
+
+
+#SRIndex {
+    clear:both; 
+    padding-bottom: 15px;
+}
+
+.SREntry {
+    font-size: 10pt;
+    padding-left: 1ex;
+}
+
+.SRPage .SREntry {
+    font-size: 8pt;
+    padding: 1px 5px;
+}
+
+body.SRPage {
+    margin: 5px 2px;
+}
+
+.SRChildren {
+    padding-left: 3ex; padding-bottom: .5em 
+}
+
+.SRPage .SRChildren {
+    display: none;
+}
+
+.SRSymbol {
+    font-weight: bold; 
+    color: #425E97;
+    font-family: Arial, Verdana, sans-serif;
+    text-decoration: none;
+    outline: none;
+}
+
+a.SRScope {
+    display: block;
+    color: #425E97; 
+    font-family: Arial, Verdana, sans-serif;
+    text-decoration: none;
+    outline: none;
+}
+
+a.SRSymbol:focus, a.SRSymbol:active,
+a.SRScope:focus, a.SRScope:active {
+    text-decoration: underline;
+}
+
+span.SRScope {
+    padding-left: 4px;
+    font-family: Arial, Verdana, sans-serif;
+}
+
+.SRPage .SRStatus {
+    padding: 2px 5px;
+    font-size: 8pt;
+    font-style: italic;
+    font-family: Arial, Verdana, sans-serif;
+}
+
+.SRResult {
+    display: none;
+}
+
+div.searchresults {
+    margin-left: 10px;
+    margin-right: 10px;
+}
+
+/*---------------- External search page results */
+
+.searchresult {
+    background-color: #F0F3F8;
+}
+
+.pages b {
+   color: white;
+   padding: 5px 5px 3px 5px;
+   background-image: url("../tab_a.png");
+   background-repeat: repeat-x;
+   text-shadow: 0 1px 1px #000000;
+}
+
+.pages {
+    line-height: 17px;
+    margin-left: 4px;
+    text-decoration: none;
+}
+
+.hl {
+    font-weight: bold;
+}
+
+#searchresults {
+    margin-bottom: 20px;
+}
+
+.searchpages {
+    margin-top: 10px;
+}
+
diff --git a/search/search.js b/search/search.js
new file mode 100644 (file)
index 0000000..fb226f7
--- /dev/null
@@ -0,0 +1,816 @@
+/*
+ @licstart  The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend  The above is the entire license notice for the JavaScript code in this file
+ */
+function convertToId(search)
+{
+  var result = '';
+  for (i=0;i<search.length;i++)
+  {
+    var c = search.charAt(i);
+    var cn = c.charCodeAt(0);
+    if (c.match(/[a-z0-9\u0080-\uFFFF]/))
+    {
+      result+=c;
+    }
+    else if (cn<16)
+    {
+      result+="_0"+cn.toString(16);
+    }
+    else
+    {
+      result+="_"+cn.toString(16);
+    }
+  }
+  return result;
+}
+
+function getXPos(item)
+{
+  var x = 0;
+  if (item.offsetWidth)
+  {
+    while (item && item!=document.body)
+    {
+      x   += item.offsetLeft;
+      item = item.offsetParent;
+    }
+  }
+  return x;
+}
+
+function getYPos(item)
+{
+  var y = 0;
+  if (item.offsetWidth)
+  {
+     while (item && item!=document.body)
+     {
+       y   += item.offsetTop;
+       item = item.offsetParent;
+     }
+  }
+  return y;
+}
+
+/* A class handling everything associated with the search panel.
+
+   Parameters:
+   name - The name of the global variable that will be
+          storing this instance.  Is needed to be able to set timeouts.
+   resultPath - path to use for external files
+*/
+function SearchBox(name, resultsPath, inFrame, label, extension)
+{
+  if (!name || !resultsPath) {  alert("Missing parameters to SearchBox."); }
+  if (!extension || extension == "") { extension = ".html"; }
+
+  // ---------- Instance variables
+  this.name                  = name;
+  this.resultsPath           = resultsPath;
+  this.keyTimeout            = 0;
+  this.keyTimeoutLength      = 500;
+  this.closeSelectionTimeout = 300;
+  this.lastSearchValue       = "";
+  this.lastResultsPage       = "";
+  this.hideTimeout           = 0;
+  this.searchIndex           = 0;
+  this.searchActive          = false;
+  this.insideFrame           = inFrame;
+  this.searchLabel           = label;
+  this.extension             = extension;
+
+  // ----------- DOM Elements
+
+  this.DOMSearchField = function()
+  {  return document.getElementById("MSearchField");  }
+
+  this.DOMSearchSelect = function()
+  {  return document.getElementById("MSearchSelect");  }
+
+  this.DOMSearchSelectWindow = function()
+  {  return document.getElementById("MSearchSelectWindow");  }
+
+  this.DOMPopupSearchResults = function()
+  {  return document.getElementById("MSearchResults");  }
+
+  this.DOMPopupSearchResultsWindow = function()
+  {  return document.getElementById("MSearchResultsWindow");  }
+
+  this.DOMSearchClose = function()
+  {  return document.getElementById("MSearchClose"); }
+
+  this.DOMSearchBox = function()
+  {  return document.getElementById("MSearchBox");  }
+
+  // ------------ Event Handlers
+
+  // Called when focus is added or removed from the search field.
+  this.OnSearchFieldFocus = function(isActive)
+  {
+    this.Activate(isActive);
+  }
+
+  this.OnSearchSelectShow = function()
+  {
+    var searchSelectWindow = this.DOMSearchSelectWindow();
+    var searchField        = this.DOMSearchSelect();
+
+    if (this.insideFrame)
+    {
+      var left = getXPos(searchField);
+      var top  = getYPos(searchField);
+      left += searchField.offsetWidth + 6;
+      top += searchField.offsetHeight;
+
+      // show search selection popup
+      searchSelectWindow.style.display='block';
+      left -= searchSelectWindow.offsetWidth;
+      searchSelectWindow.style.left =  left + 'px';
+      searchSelectWindow.style.top  =  top  + 'px';
+    }
+    else
+    {
+      var left = getXPos(searchField);
+      var top  = getYPos(searchField);
+      top += searchField.offsetHeight;
+
+      // show search selection popup
+      searchSelectWindow.style.display='block';
+      searchSelectWindow.style.left =  left + 'px';
+      searchSelectWindow.style.top  =  top  + 'px';
+    }
+
+    // stop selection hide timer
+    if (this.hideTimeout)
+    {
+      clearTimeout(this.hideTimeout);
+      this.hideTimeout=0;
+    }
+    return false; // to avoid "image drag" default event
+  }
+
+  this.OnSearchSelectHide = function()
+  {
+    this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()",
+                                  this.closeSelectionTimeout);
+  }
+
+  // Called when the content of the search field is changed.
+  this.OnSearchFieldChange = function(evt)
+  {
+    if (this.keyTimeout) // kill running timer
+    {
+      clearTimeout(this.keyTimeout);
+      this.keyTimeout = 0;
+    }
+
+    var e  = (evt) ? evt : window.event; // for IE
+    if (e.keyCode==40 || e.keyCode==13)
+    {
+      if (e.shiftKey==1)
+      {
+        this.OnSearchSelectShow();
+        var win=this.DOMSearchSelectWindow();
+        for (i=0;i<win.childNodes.length;i++)
+        {
+          var child = win.childNodes[i]; // get span within a
+          if (child.className=='SelectItem')
+          {
+            child.focus();
+            return;
+          }
+        }
+        return;
+      }
+      else
+      {
+        window.frames.MSearchResults.postMessage("take_focus", "*");
+      }
+    }
+    else if (e.keyCode==27) // Escape out of the search field
+    {
+      this.DOMSearchField().blur();
+      this.DOMPopupSearchResultsWindow().style.display = 'none';
+      this.DOMSearchClose().style.display = 'none';
+      this.lastSearchValue = '';
+      this.Activate(false);
+      return;
+    }
+
+    // strip whitespaces
+    var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
+
+    if (searchValue != this.lastSearchValue) // search value has changed
+    {
+      if (searchValue != "") // non-empty search
+      {
+        // set timer for search update
+        this.keyTimeout = setTimeout(this.name + '.Search()',
+                                     this.keyTimeoutLength);
+      }
+      else // empty search field
+      {
+        this.DOMPopupSearchResultsWindow().style.display = 'none';
+        this.DOMSearchClose().style.display = 'none';
+        this.lastSearchValue = '';
+      }
+    }
+  }
+
+  this.SelectItemCount = function(id)
+  {
+    var count=0;
+    var win=this.DOMSearchSelectWindow();
+    for (i=0;i<win.childNodes.length;i++)
+    {
+      var child = win.childNodes[i]; // get span within a
+      if (child.className=='SelectItem')
+      {
+        count++;
+      }
+    }
+    return count;
+  }
+
+  this.SelectItemSet = function(id)
+  {
+    var i,j=0;
+    var win=this.DOMSearchSelectWindow();
+    for (i=0;i<win.childNodes.length;i++)
+    {
+      var child = win.childNodes[i]; // get span within a
+      if (child.className=='SelectItem')
+      {
+        var node = child.firstChild;
+        if (j==id)
+        {
+          node.innerHTML='&#8226;';
+        }
+        else
+        {
+          node.innerHTML='&#160;';
+        }
+        j++;
+      }
+    }
+  }
+
+  // Called when an search filter selection is made.
+  // set item with index id as the active item
+  this.OnSelectItem = function(id)
+  {
+    this.searchIndex = id;
+    this.SelectItemSet(id);
+    var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
+    if (searchValue!="" && this.searchActive) // something was found -> do a search
+    {
+      this.Search();
+    }
+  }
+
+  this.OnSearchSelectKey = function(evt)
+  {
+    var e = (evt) ? evt : window.event; // for IE
+    if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down
+    {
+      this.searchIndex++;
+      this.OnSelectItem(this.searchIndex);
+    }
+    else if (e.keyCode==38 && this.searchIndex>0) // Up
+    {
+      this.searchIndex--;
+      this.OnSelectItem(this.searchIndex);
+    }
+    else if (e.keyCode==13 || e.keyCode==27)
+    {
+      this.OnSelectItem(this.searchIndex);
+      this.CloseSelectionWindow();
+      this.DOMSearchField().focus();
+    }
+    return false;
+  }
+
+  // --------- Actions
+
+  // Closes the results window.
+  this.CloseResultsWindow = function()
+  {
+    this.DOMPopupSearchResultsWindow().style.display = 'none';
+    this.DOMSearchClose().style.display = 'none';
+    this.Activate(false);
+  }
+
+  this.CloseSelectionWindow = function()
+  {
+    this.DOMSearchSelectWindow().style.display = 'none';
+  }
+
+  // Performs a search.
+  this.Search = function()
+  {
+    this.keyTimeout = 0;
+
+    // strip leading whitespace
+    var searchValue = this.DOMSearchField().value.replace(/^ +/, "");
+
+    var code = searchValue.toLowerCase().charCodeAt(0);
+    var idxChar = searchValue.substr(0, 1).toLowerCase();
+    if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair
+    {
+      idxChar = searchValue.substr(0, 2);
+    }
+
+    var resultsPage;
+    var resultsPageWithSearch;
+    var hasResultsPage;
+
+    var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar);
+    if (idx!=-1)
+    {
+       var hexCode=idx.toString(16);
+       resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension;
+       resultsPageWithSearch = resultsPage+'?'+escape(searchValue);
+       hasResultsPage = true;
+    }
+    else // nothing available for this search term
+    {
+       resultsPage = this.resultsPath + '/nomatches' + this.extension;
+       resultsPageWithSearch = resultsPage;
+       hasResultsPage = false;
+    }
+
+    window.frames.MSearchResults.location = resultsPageWithSearch;
+    var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
+
+    if (domPopupSearchResultsWindow.style.display!='block')
+    {
+       var domSearchBox = this.DOMSearchBox();
+       this.DOMSearchClose().style.display = 'inline-block';
+       if (this.insideFrame)
+       {
+         var domPopupSearchResults = this.DOMPopupSearchResults();
+         domPopupSearchResultsWindow.style.position = 'relative';
+         domPopupSearchResultsWindow.style.display  = 'block';
+         var width = document.body.clientWidth - 8; // the -8 is for IE :-(
+         domPopupSearchResultsWindow.style.width    = width + 'px';
+         domPopupSearchResults.style.width          = width + 'px';
+       }
+       else
+       {
+         var domPopupSearchResults = this.DOMPopupSearchResults();
+         var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth;
+         var top  = getYPos(domSearchBox) + 20;  // domSearchBox.offsetHeight + 1;
+         domPopupSearchResultsWindow.style.display = 'block';
+         left -= domPopupSearchResults.offsetWidth;
+         domPopupSearchResultsWindow.style.top     = top  + 'px';
+         domPopupSearchResultsWindow.style.left    = left + 'px';
+       }
+    }
+
+    this.lastSearchValue = searchValue;
+    this.lastResultsPage = resultsPage;
+  }
+
+  // -------- Activation Functions
+
+  // Activates or deactivates the search panel, resetting things to
+  // their default values if necessary.
+  this.Activate = function(isActive)
+  {
+    if (isActive || // open it
+        this.DOMPopupSearchResultsWindow().style.display == 'block'
+       )
+    {
+      this.DOMSearchBox().className = 'MSearchBoxActive';
+
+      var searchField = this.DOMSearchField();
+
+      if (searchField.value == this.searchLabel) // clear "Search" term upon entry
+      {
+        searchField.value = '';
+        this.searchActive = true;
+      }
+    }
+    else if (!isActive) // directly remove the panel
+    {
+      this.DOMSearchBox().className = 'MSearchBoxInactive';
+      this.DOMSearchField().value   = this.searchLabel;
+      this.searchActive             = false;
+      this.lastSearchValue          = ''
+      this.lastResultsPage          = '';
+    }
+  }
+}
+
+// -----------------------------------------------------------------------
+
+// The class that handles everything on the search results page.
+function SearchResults(name)
+{
+    // The number of matches from the last run of <Search()>.
+    this.lastMatchCount = 0;
+    this.lastKey = 0;
+    this.repeatOn = false;
+
+    // Toggles the visibility of the passed element ID.
+    this.FindChildElement = function(id)
+    {
+      var parentElement = document.getElementById(id);
+      var element = parentElement.firstChild;
+
+      while (element && element!=parentElement)
+      {
+        if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren')
+        {
+          return element;
+        }
+
+        if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes())
+        {
+           element = element.firstChild;
+        }
+        else if (element.nextSibling)
+        {
+           element = element.nextSibling;
+        }
+        else
+        {
+          do
+          {
+            element = element.parentNode;
+          }
+          while (element && element!=parentElement && !element.nextSibling);
+
+          if (element && element!=parentElement)
+          {
+            element = element.nextSibling;
+          }
+        }
+      }
+    }
+
+    this.Toggle = function(id)
+    {
+      var element = this.FindChildElement(id);
+      if (element)
+      {
+        if (element.style.display == 'block')
+        {
+          element.style.display = 'none';
+        }
+        else
+        {
+          element.style.display = 'block';
+        }
+      }
+    }
+
+    // Searches for the passed string.  If there is no parameter,
+    // it takes it from the URL query.
+    //
+    // Always returns true, since other documents may try to call it
+    // and that may or may not be possible.
+    this.Search = function(search)
+    {
+      if (!search) // get search word from URL
+      {
+        search = window.location.search;
+        search = search.substring(1);  // Remove the leading '?'
+        search = unescape(search);
+      }
+
+      search = search.replace(/^ +/, ""); // strip leading spaces
+      search = search.replace(/ +$/, ""); // strip trailing spaces
+      search = search.toLowerCase();
+      search = convertToId(search);
+
+      var resultRows = document.getElementsByTagName("div");
+      var matches = 0;
+
+      var i = 0;
+      while (i < resultRows.length)
+      {
+        var row = resultRows.item(i);
+        if (row.className == "SRResult")
+        {
+          var rowMatchName = row.id.toLowerCase();
+          rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_'
+
+          if (search.length<=rowMatchName.length &&
+             rowMatchName.substr(0, search.length)==search)
+          {
+            row.style.display = 'block';
+            matches++;
+          }
+          else
+          {
+            row.style.display = 'none';
+          }
+        }
+        i++;
+      }
+      document.getElementById("Searching").style.display='none';
+      if (matches == 0) // no results
+      {
+        document.getElementById("NoMatches").style.display='block';
+      }
+      else // at least one result
+      {
+        document.getElementById("NoMatches").style.display='none';
+      }
+      this.lastMatchCount = matches;
+      return true;
+    }
+
+    // return the first item with index index or higher that is visible
+    this.NavNext = function(index)
+    {
+      var focusItem;
+      while (1)
+      {
+        var focusName = 'Item'+index;
+        focusItem = document.getElementById(focusName);
+        if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
+        {
+          break;
+        }
+        else if (!focusItem) // last element
+        {
+          break;
+        }
+        focusItem=null;
+        index++;
+      }
+      return focusItem;
+    }
+
+    this.NavPrev = function(index)
+    {
+      var focusItem;
+      while (1)
+      {
+        var focusName = 'Item'+index;
+        focusItem = document.getElementById(focusName);
+        if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
+        {
+          break;
+        }
+        else if (!focusItem) // last element
+        {
+          break;
+        }
+        focusItem=null;
+        index--;
+      }
+      return focusItem;
+    }
+
+    this.ProcessKeys = function(e)
+    {
+      if (e.type == "keydown")
+      {
+        this.repeatOn = false;
+        this.lastKey = e.keyCode;
+      }
+      else if (e.type == "keypress")
+      {
+        if (!this.repeatOn)
+        {
+          if (this.lastKey) this.repeatOn = true;
+          return false; // ignore first keypress after keydown
+        }
+      }
+      else if (e.type == "keyup")
+      {
+        this.lastKey = 0;
+        this.repeatOn = false;
+      }
+      return this.lastKey!=0;
+    }
+
+    this.Nav = function(evt,itemIndex)
+    {
+      var e  = (evt) ? evt : window.event; // for IE
+      if (e.keyCode==13) return true;
+      if (!this.ProcessKeys(e)) return false;
+
+      if (this.lastKey==38) // Up
+      {
+        var newIndex = itemIndex-1;
+        var focusItem = this.NavPrev(newIndex);
+        if (focusItem)
+        {
+          var child = this.FindChildElement(focusItem.parentNode.parentNode.id);
+          if (child && child.style.display == 'block') // children visible
+          {
+            var n=0;
+            var tmpElem;
+            while (1) // search for last child
+            {
+              tmpElem = document.getElementById('Item'+newIndex+'_c'+n);
+              if (tmpElem)
+              {
+                focusItem = tmpElem;
+              }
+              else // found it!
+              {
+                break;
+              }
+              n++;
+            }
+          }
+        }
+        if (focusItem)
+        {
+          focusItem.focus();
+        }
+        else // return focus to search field
+        {
+           parent.document.getElementById("MSearchField").focus();
+        }
+      }
+      else if (this.lastKey==40) // Down
+      {
+        var newIndex = itemIndex+1;
+        var focusItem;
+        var item = document.getElementById('Item'+itemIndex);
+        var elem = this.FindChildElement(item.parentNode.parentNode.id);
+        if (elem && elem.style.display == 'block') // children visible
+        {
+          focusItem = document.getElementById('Item'+itemIndex+'_c0');
+        }
+        if (!focusItem) focusItem = this.NavNext(newIndex);
+        if (focusItem)  focusItem.focus();
+      }
+      else if (this.lastKey==39) // Right
+      {
+        var item = document.getElementById('Item'+itemIndex);
+        var elem = this.FindChildElement(item.parentNode.parentNode.id);
+        if (elem) elem.style.display = 'block';
+      }
+      else if (this.lastKey==37) // Left
+      {
+        var item = document.getElementById('Item'+itemIndex);
+        var elem = this.FindChildElement(item.parentNode.parentNode.id);
+        if (elem) elem.style.display = 'none';
+      }
+      else if (this.lastKey==27) // Escape
+      {
+        parent.searchBox.CloseResultsWindow();
+        parent.document.getElementById("MSearchField").focus();
+      }
+      else if (this.lastKey==13) // Enter
+      {
+        return true;
+      }
+      return false;
+    }
+
+    this.NavChild = function(evt,itemIndex,childIndex)
+    {
+      var e  = (evt) ? evt : window.event; // for IE
+      if (e.keyCode==13) return true;
+      if (!this.ProcessKeys(e)) return false;
+
+      if (this.lastKey==38) // Up
+      {
+        if (childIndex>0)
+        {
+          var newIndex = childIndex-1;
+          document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();
+        }
+        else // already at first child, jump to parent
+        {
+          document.getElementById('Item'+itemIndex).focus();
+        }
+      }
+      else if (this.lastKey==40) // Down
+      {
+        var newIndex = childIndex+1;
+        var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);
+        if (!elem) // last child, jump to parent next parent
+        {
+          elem = this.NavNext(itemIndex+1);
+        }
+        if (elem)
+        {
+          elem.focus();
+        }
+      }
+      else if (this.lastKey==27) // Escape
+      {
+        parent.searchBox.CloseResultsWindow();
+        parent.document.getElementById("MSearchField").focus();
+      }
+      else if (this.lastKey==13) // Enter
+      {
+        return true;
+      }
+      return false;
+    }
+}
+
+function setKeyActions(elem,action)
+{
+  elem.setAttribute('onkeydown',action);
+  elem.setAttribute('onkeypress',action);
+  elem.setAttribute('onkeyup',action);
+}
+
+function setClassAttr(elem,attr)
+{
+  elem.setAttribute('class',attr);
+  elem.setAttribute('className',attr);
+}
+
+function createResults()
+{
+  var results = document.getElementById("SRResults");
+  for (var e=0; e<searchData.length; e++)
+  {
+    var id = searchData[e][0];
+    var srResult = document.createElement('div');
+    srResult.setAttribute('id','SR_'+id);
+    setClassAttr(srResult,'SRResult');
+    var srEntry = document.createElement('div');
+    setClassAttr(srEntry,'SREntry');
+    var srLink = document.createElement('a');
+    srLink.setAttribute('id','Item'+e);
+    setKeyActions(srLink,'return searchResults.Nav(event,'+e+')');
+    setClassAttr(srLink,'SRSymbol');
+    srLink.innerHTML = searchData[e][1][0];
+    srEntry.appendChild(srLink);
+    if (searchData[e][1].length==2) // single result
+    {
+      srLink.setAttribute('href',searchData[e][1][1][0]);
+      if (searchData[e][1][1][1])
+      {
+       srLink.setAttribute('target','_parent');
+      }
+      var srScope = document.createElement('span');
+      setClassAttr(srScope,'SRScope');
+      srScope.innerHTML = searchData[e][1][1][2];
+      srEntry.appendChild(srScope);
+    }
+    else // multiple results
+    {
+      srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")');
+      var srChildren = document.createElement('div');
+      setClassAttr(srChildren,'SRChildren');
+      for (var c=0; c<searchData[e][1].length-1; c++)
+      {
+        var srChild = document.createElement('a');
+        srChild.setAttribute('id','Item'+e+'_c'+c);
+        setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')');
+        setClassAttr(srChild,'SRScope');
+        srChild.setAttribute('href',searchData[e][1][c+1][0]);
+        if (searchData[e][1][c+1][1])
+        {
+         srChild.setAttribute('target','_parent');
+        }
+        srChild.innerHTML = searchData[e][1][c+1][2];
+        srChildren.appendChild(srChild);
+      }
+      srEntry.appendChild(srChildren);
+    }
+    srResult.appendChild(srEntry);
+    results.appendChild(srResult);
+  }
+}
+
+function init_search()
+{
+  var results = document.getElementById("MSearchSelectWindow");
+  for (var key in indexSectionLabels)
+  {
+    var link = document.createElement('a');
+    link.setAttribute('class','SelectItem');
+    link.setAttribute('onclick','searchBox.OnSelectItem('+key+')');
+    link.href='javascript:void(0)';
+    link.innerHTML='<span class="SelectionMark">&#160;</span>'+indexSectionLabels[key];
+    results.appendChild(link);
+  }
+  searchBox.OnSelectItem(0);
+}
+/* @license-end */
diff --git a/search/search_l.png b/search/search_l.png
new file mode 100644 (file)
index 0000000..fd5f7da
Binary files /dev/null and b/search/search_l.png differ
diff --git a/search/search_m.png b/search/search_m.png
new file mode 100644 (file)
index 0000000..b429a16
Binary files /dev/null and b/search/search_m.png differ
diff --git a/search/search_r.png b/search/search_r.png
new file mode 100644 (file)
index 0000000..1af5d21
Binary files /dev/null and b/search/search_r.png differ
diff --git a/search/searchdata.js b/search/searchdata.js
new file mode 100644 (file)
index 0000000..789c86b
--- /dev/null
@@ -0,0 +1,36 @@
+var indexSectionsWithContent =
+{
+  0: "1234567abcdefhlmnprtu",
+  1: "abcepu",
+  2: "c",
+  3: "defhmnpt",
+  4: "c",
+  5: "ce",
+  6: "1234567",
+  7: "hlrt"
+};
+
+var indexSectionNames =
+{
+  0: "all",
+  1: "classes",
+  2: "functions",
+  3: "variables",
+  4: "enums",
+  5: "enumvalues",
+  6: "groups",
+  7: "pages"
+};
+
+var indexSectionLabels =
+{
+  0: "All",
+  1: "Data Structures",
+  2: "Functions",
+  3: "Variables",
+  4: "Enumerations",
+  5: "Enumerator",
+  6: "Modules",
+  7: "Pages"
+};
+
diff --git a/search/variables_0.html b/search/variables_0.html
new file mode 100644 (file)
index 0000000..1e477c0
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/variables_0.js b/search/variables_0.js
new file mode 100644 (file)
index 0000000..f0ad03a
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['depth_266',['depth',['../structcgroup__file__info.html#ad56dca35266f0f5f5c2666b946d72709',1,'cgroup_file_info']]]
+];
diff --git a/search/variables_1.html b/search/variables_1.html
new file mode 100644 (file)
index 0000000..ea73d9a
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_1.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/variables_1.js b/search/variables_1.js
new file mode 100644 (file)
index 0000000..a88aa67
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['enabled_267',['enabled',['../structcontroller__data.html#a24be412cfb6c19f7a13a4bff9e55206e',1,'controller_data']]]
+];
diff --git a/search/variables_2.html b/search/variables_2.html
new file mode 100644 (file)
index 0000000..0580462
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_2.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/variables_2.js b/search/variables_2.js
new file mode 100644 (file)
index 0000000..c4a69c8
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['full_5fpath_268',['full_path',['../structcgroup__file__info.html#a4c61dc7f726ba0784ff8c71473dbc6e6',1,'cgroup_file_info']]]
+];
diff --git a/search/variables_3.html b/search/variables_3.html
new file mode 100644 (file)
index 0000000..0d69e76
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_3.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/variables_3.js b/search/variables_3.js
new file mode 100644 (file)
index 0000000..2253547
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['hierarchy_269',['hierarchy',['../structcontroller__data.html#a25e316f55473ca2b333b0d7e0ca644b4',1,'controller_data']]]
+];
diff --git a/search/variables_4.html b/search/variables_4.html
new file mode 100644 (file)
index 0000000..a4b6506
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_4.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/variables_4.js b/search/variables_4.js
new file mode 100644 (file)
index 0000000..5c22f90
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['mount_270',['mount',['../structcg__mount__table__s.html#a9704fa3ec3674f6d433345ea52b6aeef',1,'cg_mount_table_s']]]
+];
diff --git a/search/variables_5.html b/search/variables_5.html
new file mode 100644 (file)
index 0000000..7e345d1
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_5.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/variables_5.js b/search/variables_5.js
new file mode 100644 (file)
index 0000000..f2f60bb
--- /dev/null
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['name_271',['name',['../structcgroup__mount__point.html#a849ccf1e77fffd5d45304c6adf0d2100',1,'cgroup_mount_point::name()'],['../structcontroller__data.html#a5474be4d8cc4553c94ca81c6a93f5a18',1,'controller_data::name()'],['../structcg__mount__table__s.html#aa9b2cc62fb6cb35334f3d85d660c9fa6',1,'cg_mount_table_s::name()']]],
+  ['num_5fcgroups_272',['num_cgroups',['../structcontroller__data.html#acd075c0bb48062bf720b68d0a30116eb',1,'controller_data']]]
+];
diff --git a/search/variables_6.html b/search/variables_6.html
new file mode 100644 (file)
index 0000000..7d48e75
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_6.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/variables_6.js b/search/variables_6.js
new file mode 100644 (file)
index 0000000..f3affd2
--- /dev/null
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['parent_273',['parent',['../structcgroup__file__info.html#a739c7f87593e36d8589d3ffa80b57059',1,'cgroup_file_info']]],
+  ['path_274',['path',['../structcgroup__file__info.html#a801424e68139c930e40ea24be4d96a68',1,'cgroup_file_info::path()'],['../structcgroup__mount__point.html#ad1e89dfc02cfd7341e2296086a4f251e',1,'cgroup_mount_point::path()']]]
+];
diff --git a/search/variables_7.html b/search/variables_7.html
new file mode 100644 (file)
index 0000000..5c26340
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_7.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/search/variables_7.js b/search/variables_7.js
new file mode 100644 (file)
index 0000000..b5286ca
--- /dev/null
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['type_275',['type',['../structcgroup__file__info.html#a955506601f440d05cb11e4ee6b455c55',1,'cgroup_file_info']]]
+];
diff --git a/splitbar.png b/splitbar.png
new file mode 100644 (file)
index 0000000..fe895f2
Binary files /dev/null and b/splitbar.png differ
diff --git a/structarray__parent__info.html b/structarray__parent__info.html
new file mode 100644 (file)
index 0000000..9413f57
--- /dev/null
@@ -0,0 +1,92 @@
+<!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>libcgroup: array_parent_info Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Data Fields</a>  </div>
+  <div class="headertitle">
+<div class="title">array_parent_info Struct Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:a104a0f305c8af9406d9eb079d2aab75a"><td class="memItemLeft" align="right" valign="top"><a id="a104a0f305c8af9406d9eb079d2aab75a"></a>
+int&#160;</td><td class="memItemRight" valign="bottom"><b>index</b></td></tr>
+<tr class="separator:a104a0f305c8af9406d9eb079d2aab75a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a214ba75f553bef2e98e86436bc38b16c"><td class="memItemLeft" align="right" valign="top"><a id="a214ba75f553bef2e98e86436bc38b16c"></a>
+int&#160;</td><td class="memItemRight" valign="bottom"><b>num_allocation</b></td></tr>
+<tr class="separator:a214ba75f553bef2e98e86436bc38b16c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0bdfe6014e023f42a44c27125b221ab1"><td class="memItemLeft" align="right" valign="top"><a id="a0bdfe6014e023f42a44c27125b221ab1"></a>
+struct <a class="el" href="structparent__info.html">parent_info</a> **&#160;</td><td class="memItemRight" valign="bottom"><b>parent_info</b></td></tr>
+<tr class="separator:a0bdfe6014e023f42a44c27125b221ab1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>src/daemon/cgrulesengd.c</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/structarray__unchanged.html b/structarray__unchanged.html
new file mode 100644 (file)
index 0000000..78e9902
--- /dev/null
@@ -0,0 +1,92 @@
+<!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>libcgroup: array_unchanged Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Data Fields</a>  </div>
+  <div class="headertitle">
+<div class="title">array_unchanged Struct Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:acce116399336fe5074c445f7107320df"><td class="memItemLeft" align="right" valign="top"><a id="acce116399336fe5074c445f7107320df"></a>
+int&#160;</td><td class="memItemRight" valign="bottom"><b>index</b></td></tr>
+<tr class="separator:acce116399336fe5074c445f7107320df"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1be755457cbbb2f00291e12ef1eeed45"><td class="memItemLeft" align="right" valign="top"><a id="a1be755457cbbb2f00291e12ef1eeed45"></a>
+int&#160;</td><td class="memItemRight" valign="bottom"><b>num_allocation</b></td></tr>
+<tr class="separator:a1be755457cbbb2f00291e12ef1eeed45"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a520e1e517d7e4d6bed85a83d3e182490"><td class="memItemLeft" align="right" valign="top"><a id="a520e1e517d7e4d6bed85a83d3e182490"></a>
+struct <a class="el" href="structunchanged__pid.html">unchanged_pid</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>proc</b></td></tr>
+<tr class="separator:a520e1e517d7e4d6bed85a83d3e182490"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>src/daemon/cgrulesengd.c</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/structblack__list__type.html b/structblack__list__type.html
new file mode 100644 (file)
index 0000000..ec577b6
--- /dev/null
@@ -0,0 +1,89 @@
+<!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>libcgroup: black_list_type Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Data Fields</a>  </div>
+  <div class="headertitle">
+<div class="title">black_list_type Struct Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:a5d01592707e1cbe301ef9a45be734d34"><td class="memItemLeft" align="right" valign="top"><a id="a5d01592707e1cbe301ef9a45be734d34"></a>
+char *&#160;</td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
+<tr class="separator:a5d01592707e1cbe301ef9a45be734d34"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a98ad845f0bc04eb81518cd1eb5995296"><td class="memItemLeft" align="right" valign="top"><a id="a98ad845f0bc04eb81518cd1eb5995296"></a>
+struct <a class="el" href="structblack__list__type.html">black_list_type</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
+<tr class="separator:a98ad845f0bc04eb81518cd1eb5995296"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>src/tools/cgsnapshot.c</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/structcg__mount__point.html b/structcg__mount__point.html
new file mode 100644 (file)
index 0000000..af1f52b
--- /dev/null
@@ -0,0 +1,89 @@
+<!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>libcgroup: cg_mount_point Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Data Fields</a>  </div>
+  <div class="headertitle">
+<div class="title">cg_mount_point Struct Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:aee8a194a9d3e786d0659f670c7bb73e9"><td class="memItemLeft" align="right" valign="top"><a id="aee8a194a9d3e786d0659f670c7bb73e9"></a>
+char&#160;</td><td class="memItemRight" valign="bottom"><b>path</b> [FILENAME_MAX]</td></tr>
+<tr class="separator:aee8a194a9d3e786d0659f670c7bb73e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab02da6ebd43df2768d7c8fd8556ad14c"><td class="memItemLeft" align="right" valign="top"><a id="ab02da6ebd43df2768d7c8fd8556ad14c"></a>
+struct <a class="el" href="structcg__mount__point.html">cg_mount_point</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
+<tr class="separator:ab02da6ebd43df2768d7c8fd8556ad14c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>src/<a class="el" href="libcgroup-internal_8h_source.html">libcgroup-internal.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/structcg__mount__table__s.html b/structcg__mount__table__s.html
new file mode 100644 (file)
index 0000000..11a8c5e
--- /dev/null
@@ -0,0 +1,124 @@
+<!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>libcgroup: cg_mount_table_s Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Data Fields</a>  </div>
+  <div class="headertitle">
+<div class="title">cg_mount_table_s Struct Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:aa9b2cc62fb6cb35334f3d85d660c9fa6"><td class="memItemLeft" align="right" valign="top">char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcg__mount__table__s.html#aa9b2cc62fb6cb35334f3d85d660c9fa6">name</a> [FILENAME_MAX]</td></tr>
+<tr class="separator:aa9b2cc62fb6cb35334f3d85d660c9fa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9704fa3ec3674f6d433345ea52b6aeef"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structcg__mount__point.html">cg_mount_point</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcg__mount__table__s.html#a9704fa3ec3674f6d433345ea52b6aeef">mount</a></td></tr>
+<tr class="separator:a9704fa3ec3674f6d433345ea52b6aeef"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1d69f1d8406fb81cd7978512b3f6d9a2"><td class="memItemLeft" align="right" valign="top"><a id="a1d69f1d8406fb81cd7978512b3f6d9a2"></a>
+int&#160;</td><td class="memItemRight" valign="bottom"><b>index</b></td></tr>
+<tr class="separator:a1d69f1d8406fb81cd7978512b3f6d9a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae55b944bda455b4cd08490fa86003c25"><td class="memItemLeft" align="right" valign="top"><a id="ae55b944bda455b4cd08490fa86003c25"></a>
+enum cg_version_t&#160;</td><td class="memItemRight" valign="bottom"><b>version</b></td></tr>
+<tr class="separator:ae55b944bda455b4cd08490fa86003c25"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Field Documentation</h2>
+<a id="a9704fa3ec3674f6d433345ea52b6aeef"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9704fa3ec3674f6d433345ea52b6aeef">&#9670;&nbsp;</a></span>mount</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structcg__mount__point.html">cg_mount_point</a> cg_mount_table_s::mount</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>List of mount points, at least one mount point is there for sure. </p>
+
+</div>
+</div>
+<a id="aa9b2cc62fb6cb35334f3d85d660c9fa6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa9b2cc62fb6cb35334f3d85d660c9fa6">&#9670;&nbsp;</a></span>name</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">char cg_mount_table_s::name[FILENAME_MAX]</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Controller name. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>src/<a class="el" href="libcgroup-internal_8h_source.html">libcgroup-internal.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/structcgroup.html b/structcgroup.html
new file mode 100644 (file)
index 0000000..dc6deef
--- /dev/null
@@ -0,0 +1,117 @@
+<!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>libcgroup: cgroup Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Data Fields</a>  </div>
+  <div class="headertitle">
+<div class="title">cgroup Struct Reference<div class="ingroups"><a class="el" href="group__group__groups.html">2. Group manipulation API</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>#include &lt;<a class="el" href="groups_8h_source.html">groups.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:ad030639d02c1df677211455fd276cec8"><td class="memItemLeft" align="right" valign="top"><a id="ad030639d02c1df677211455fd276cec8"></a>
+char&#160;</td><td class="memItemRight" valign="bottom"><b>name</b> [FILENAME_MAX]</td></tr>
+<tr class="separator:ad030639d02c1df677211455fd276cec8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a193f440652cde024537ef8df94baff4b"><td class="memItemLeft" align="right" valign="top"><a id="a193f440652cde024537ef8df94baff4b"></a>
+struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>controller</b> [CG_CONTROLLER_MAX]</td></tr>
+<tr class="separator:a193f440652cde024537ef8df94baff4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9cf5d357aa444ace0b50f3287ad798b2"><td class="memItemLeft" align="right" valign="top"><a id="a9cf5d357aa444ace0b50f3287ad798b2"></a>
+int&#160;</td><td class="memItemRight" valign="bottom"><b>index</b></td></tr>
+<tr class="separator:a9cf5d357aa444ace0b50f3287ad798b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a166a667bf62253c6fe5e037765b06b48"><td class="memItemLeft" align="right" valign="top"><a id="a166a667bf62253c6fe5e037765b06b48"></a>
+uid_t&#160;</td><td class="memItemRight" valign="bottom"><b>tasks_uid</b></td></tr>
+<tr class="separator:a166a667bf62253c6fe5e037765b06b48"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4dd98248e523553cb2cc79f49d0bfdc9"><td class="memItemLeft" align="right" valign="top"><a id="a4dd98248e523553cb2cc79f49d0bfdc9"></a>
+gid_t&#160;</td><td class="memItemRight" valign="bottom"><b>tasks_gid</b></td></tr>
+<tr class="separator:a4dd98248e523553cb2cc79f49d0bfdc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8b51ed0bebb232adf1a86bee627fa811"><td class="memItemLeft" align="right" valign="top"><a id="a8b51ed0bebb232adf1a86bee627fa811"></a>
+mode_t&#160;</td><td class="memItemRight" valign="bottom"><b>task_fperm</b></td></tr>
+<tr class="separator:a8b51ed0bebb232adf1a86bee627fa811"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8a49aab03bbd2fcc09effd5e810ac56d"><td class="memItemLeft" align="right" valign="top"><a id="a8a49aab03bbd2fcc09effd5e810ac56d"></a>
+uid_t&#160;</td><td class="memItemRight" valign="bottom"><b>control_uid</b></td></tr>
+<tr class="separator:a8a49aab03bbd2fcc09effd5e810ac56d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5f577bb28c1150c646a0e0346fbf34af"><td class="memItemLeft" align="right" valign="top"><a id="a5f577bb28c1150c646a0e0346fbf34af"></a>
+gid_t&#160;</td><td class="memItemRight" valign="bottom"><b>control_gid</b></td></tr>
+<tr class="separator:a5f577bb28c1150c646a0e0346fbf34af"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5b3e1c30e7e6b854cd3e1487c146634f"><td class="memItemLeft" align="right" valign="top"><a id="a5b3e1c30e7e6b854cd3e1487c146634f"></a>
+mode_t&#160;</td><td class="memItemRight" valign="bottom"><b>control_fperm</b></td></tr>
+<tr class="separator:a5b3e1c30e7e6b854cd3e1487c146634f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0d910ef50c312ca4ca095c641728c95b"><td class="memItemLeft" align="right" valign="top"><a id="a0d910ef50c312ca4ca095c641728c95b"></a>
+mode_t&#160;</td><td class="memItemRight" valign="bottom"><b>control_dperm</b></td></tr>
+<tr class="separator:a0d910ef50c312ca4ca095c641728c95b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Structure describing one or more control groups. The structure is opaque to applications. </p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>src/<a class="el" href="libcgroup-internal_8h_source.html">libcgroup-internal.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/structcgroup__controller.html b/structcgroup__controller.html
new file mode 100644 (file)
index 0000000..577ef6e
--- /dev/null
@@ -0,0 +1,99 @@
+<!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>libcgroup: cgroup_controller Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Data Fields</a>  </div>
+  <div class="headertitle">
+<div class="title">cgroup_controller Struct Reference<div class="ingroups"><a class="el" href="group__group__groups.html">2. Group manipulation API</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>#include &lt;<a class="el" href="groups_8h_source.html">groups.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:a192c36bfd8191056c32cef5d9682a98a"><td class="memItemLeft" align="right" valign="top"><a id="a192c36bfd8191056c32cef5d9682a98a"></a>
+char&#160;</td><td class="memItemRight" valign="bottom"><b>name</b> [FILENAME_MAX]</td></tr>
+<tr class="separator:a192c36bfd8191056c32cef5d9682a98a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a391b7f18461dc17d1aadb57bbf3d2bda"><td class="memItemLeft" align="right" valign="top"><a id="a391b7f18461dc17d1aadb57bbf3d2bda"></a>
+struct <a class="el" href="structcontrol__value.html">control_value</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>values</b> [CG_NV_MAX]</td></tr>
+<tr class="separator:a391b7f18461dc17d1aadb57bbf3d2bda"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af7c36bfafcff06ebde1cf8318fc1a1ec"><td class="memItemLeft" align="right" valign="top"><a id="af7c36bfafcff06ebde1cf8318fc1a1ec"></a>
+struct <a class="el" href="structcgroup.html">cgroup</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>cgroup</b></td></tr>
+<tr class="separator:af7c36bfafcff06ebde1cf8318fc1a1ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae2b6bd9e6cd54849e0ca3a0625555c77"><td class="memItemLeft" align="right" valign="top"><a id="ae2b6bd9e6cd54849e0ca3a0625555c77"></a>
+int&#160;</td><td class="memItemRight" valign="bottom"><b>index</b></td></tr>
+<tr class="separator:ae2b6bd9e6cd54849e0ca3a0625555c77"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Structure describing a controller attached to one struct <code>cgroup</code>, including parameters of the group and their values. The structure is opaque to applications. </p><dl class="section see"><dt>See also</dt><dd>groups </dd></dl>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>src/<a class="el" href="libcgroup-internal_8h_source.html">libcgroup-internal.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/structcgroup__dictionary.html b/structcgroup__dictionary.html
new file mode 100644 (file)
index 0000000..59f3572
--- /dev/null
@@ -0,0 +1,96 @@
+<!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>libcgroup: cgroup_dictionary Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Data Fields</a>  </div>
+  <div class="headertitle">
+<div class="title">cgroup_dictionary Struct Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>#include &lt;<a class="el" href="libcgroup-internal_8h_source.html">libcgroup-internal.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:ab703bb5d50eaa78f9edb64d04ed63434"><td class="memItemLeft" align="right" valign="top"><a id="ab703bb5d50eaa78f9edb64d04ed63434"></a>
+struct <a class="el" href="structcgroup__dictionary__item.html">cgroup_dictionary_item</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>head</b></td></tr>
+<tr class="separator:ab703bb5d50eaa78f9edb64d04ed63434"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a89e46210181abe754bff2d2872c91431"><td class="memItemLeft" align="right" valign="top"><a id="a89e46210181abe754bff2d2872c91431"></a>
+struct <a class="el" href="structcgroup__dictionary__item.html">cgroup_dictionary_item</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>tail</b></td></tr>
+<tr class="separator:a89e46210181abe754bff2d2872c91431"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1f0b713f324f88782e5ad5c8b4e632a7"><td class="memItemLeft" align="right" valign="top"><a id="a1f0b713f324f88782e5ad5c8b4e632a7"></a>
+int&#160;</td><td class="memItemRight" valign="bottom"><b>flags</b></td></tr>
+<tr class="separator:a1f0b713f324f88782e5ad5c8b4e632a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Dictionary of (name, value) items. The dictionary keeps its order, iterator iterates in the same order as the items were added there. It is <em>not</em> hash-style structure, it does not provide random access to its items nor quick search. This structure should be opaque to users of the dictionary, underlying data structure might change anytime and without warnings. </p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>src/<a class="el" href="libcgroup-internal_8h_source.html">libcgroup-internal.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/structcgroup__dictionary__item.html b/structcgroup__dictionary__item.html
new file mode 100644 (file)
index 0000000..0b44f5f
--- /dev/null
@@ -0,0 +1,96 @@
+<!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>libcgroup: cgroup_dictionary_item Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Data Fields</a>  </div>
+  <div class="headertitle">
+<div class="title">cgroup_dictionary_item Struct Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>#include &lt;<a class="el" href="libcgroup-internal_8h_source.html">libcgroup-internal.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:a2e42301c618155e66756acbc5d9163e1"><td class="memItemLeft" align="right" valign="top"><a id="a2e42301c618155e66756acbc5d9163e1"></a>
+const char *&#160;</td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
+<tr class="separator:a2e42301c618155e66756acbc5d9163e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a996f46806a4d0db89fb66cc0211445fa"><td class="memItemLeft" align="right" valign="top"><a id="a996f46806a4d0db89fb66cc0211445fa"></a>
+const char *&#160;</td><td class="memItemRight" valign="bottom"><b>value</b></td></tr>
+<tr class="separator:a996f46806a4d0db89fb66cc0211445fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad3cd0c13cbd942751873fec189526c96"><td class="memItemLeft" align="right" valign="top"><a id="ad3cd0c13cbd942751873fec189526c96"></a>
+struct <a class="el" href="structcgroup__dictionary__item.html">cgroup_dictionary_item</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
+<tr class="separator:ad3cd0c13cbd942751873fec189526c96"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Internal item of dictionary. Linked list is sufficient for now - we need only 'add' operation and simple iterator. In future, this might be easily rewritten to dynamic array when random access is needed, just keep in mind that the order is important and the iterator should return the items in the order they were added there. </p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>src/<a class="el" href="libcgroup-internal_8h_source.html">libcgroup-internal.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/structcgroup__dictionary__iterator.html b/structcgroup__dictionary__iterator.html
new file mode 100644 (file)
index 0000000..fee79a6
--- /dev/null
@@ -0,0 +1,90 @@
+<!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>libcgroup: cgroup_dictionary_iterator Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Data Fields</a>  </div>
+  <div class="headertitle">
+<div class="title">cgroup_dictionary_iterator Struct Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>#include &lt;<a class="el" href="libcgroup-internal_8h_source.html">libcgroup-internal.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:a0ab008d3fa46a92ead0d1f4e2bf4c667"><td class="memItemLeft" align="right" valign="top"><a id="a0ab008d3fa46a92ead0d1f4e2bf4c667"></a>
+struct <a class="el" href="structcgroup__dictionary__item.html">cgroup_dictionary_item</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>item</b></td></tr>
+<tr class="separator:a0ab008d3fa46a92ead0d1f4e2bf4c667"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Opaque iterator of an dictionary. </p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>src/<a class="el" href="libcgroup-internal_8h_source.html">libcgroup-internal.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/structcgroup__file__info.html b/structcgroup__file__info.html
new file mode 100644 (file)
index 0000000..87619d3
--- /dev/null
@@ -0,0 +1,173 @@
+<!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>libcgroup: cgroup_file_info Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Data Fields</a>  </div>
+  <div class="headertitle">
+<div class="title">cgroup_file_info Struct Reference<div class="ingroups"><a class="el" href="group__group__iterators.html">3. Iterators</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>#include &lt;<a class="el" href="iterators_8h_source.html">iterators.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:a955506601f440d05cb11e4ee6b455c55"><td class="memItemLeft" align="right" valign="top">enum <a class="el" href="group__group__iterators.html#ga608b4aa32e2db58fed34771a6a272444">cgroup_file_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcgroup__file__info.html#a955506601f440d05cb11e4ee6b455c55">type</a></td></tr>
+<tr class="separator:a955506601f440d05cb11e4ee6b455c55"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a801424e68139c930e40ea24be4d96a68"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcgroup__file__info.html#a801424e68139c930e40ea24be4d96a68">path</a></td></tr>
+<tr class="separator:a801424e68139c930e40ea24be4d96a68"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a739c7f87593e36d8589d3ffa80b57059"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcgroup__file__info.html#a739c7f87593e36d8589d3ffa80b57059">parent</a></td></tr>
+<tr class="separator:a739c7f87593e36d8589d3ffa80b57059"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4c61dc7f726ba0784ff8c71473dbc6e6"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcgroup__file__info.html#a4c61dc7f726ba0784ff8c71473dbc6e6">full_path</a></td></tr>
+<tr class="separator:a4c61dc7f726ba0784ff8c71473dbc6e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad56dca35266f0f5f5c2666b946d72709"><td class="memItemLeft" align="right" valign="top">short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcgroup__file__info.html#ad56dca35266f0f5f5c2666b946d72709">depth</a></td></tr>
+<tr class="separator:ad56dca35266f0f5f5c2666b946d72709"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Information about found directory (= a control group). </p>
+</div><h2 class="groupheader">Field Documentation</h2>
+<a id="ad56dca35266f0f5f5c2666b946d72709"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad56dca35266f0f5f5c2666b946d72709">&#9670;&nbsp;</a></span>depth</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">short cgroup_file_info::depth</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Depth of the entity, how many directories below the root of walk it is. </p>
+
+</div>
+</div>
+<a id="a4c61dc7f726ba0784ff8c71473dbc6e6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4c61dc7f726ba0784ff8c71473dbc6e6">&#9670;&nbsp;</a></span>full_path</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* cgroup_file_info::full_path</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Full path to the entity. To get path relative to the root of the walk, you must store its <code>full_path</code> (or its length) and calculate the relative path by yourself. </p>
+
+</div>
+</div>
+<a id="a739c7f87593e36d8589d3ffa80b57059"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a739c7f87593e36d8589d3ffa80b57059">&#9670;&nbsp;</a></span>parent</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* cgroup_file_info::parent</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Name of its parent. </p>
+
+</div>
+</div>
+<a id="a801424e68139c930e40ea24be4d96a68"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a801424e68139c930e40ea24be4d96a68">&#9670;&nbsp;</a></span>path</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* cgroup_file_info::path</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Name of the entity. </p>
+
+</div>
+</div>
+<a id="a955506601f440d05cb11e4ee6b455c55"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a955506601f440d05cb11e4ee6b455c55">&#9670;&nbsp;</a></span>type</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="group__group__iterators.html#ga608b4aa32e2db58fed34771a6a272444">cgroup_file_type</a> cgroup_file_info::type</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Type of the entity. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>include/libcgroup/<a class="el" href="iterators_8h_source.html">iterators.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/structcgroup__group__spec.html b/structcgroup__group__spec.html
new file mode 100644 (file)
index 0000000..ea9747b
--- /dev/null
@@ -0,0 +1,93 @@
+<!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>libcgroup: cgroup_group_spec Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Data Fields</a>  </div>
+  <div class="headertitle">
+<div class="title">cgroup_group_spec Struct Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>#include &lt;<a class="el" href="tools-common_8h_source.html">tools-common.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:a0440e6333cca594674419fa8b4a7e733"><td class="memItemLeft" align="right" valign="top"><a id="a0440e6333cca594674419fa8b4a7e733"></a>
+char&#160;</td><td class="memItemRight" valign="bottom"><b>path</b> [FILENAME_MAX]</td></tr>
+<tr class="separator:a0440e6333cca594674419fa8b4a7e733"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a26c2e69db971464e93110a0bbd589342"><td class="memItemLeft" align="right" valign="top"><a id="a26c2e69db971464e93110a0bbd589342"></a>
+char *&#160;</td><td class="memItemRight" valign="bottom"><b>controllers</b> [CG_CONTROLLER_MAX]</td></tr>
+<tr class="separator:a26c2e69db971464e93110a0bbd589342"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Auxiliary specifier of group, used to store parsed command line options. </p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>src/tools/<a class="el" href="tools-common_8h_source.html">tools-common.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/structcgroup__mount__point.html b/structcgroup__mount__point.html
new file mode 100644 (file)
index 0000000..69e60bf
--- /dev/null
@@ -0,0 +1,122 @@
+<!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>libcgroup: cgroup_mount_point Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Data Fields</a>  </div>
+  <div class="headertitle">
+<div class="title">cgroup_mount_point Struct Reference<div class="ingroups"><a class="el" href="group__group__iterators.html">3. Iterators</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>#include &lt;<a class="el" href="iterators_8h_source.html">iterators.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:a849ccf1e77fffd5d45304c6adf0d2100"><td class="memItemLeft" align="right" valign="top">char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcgroup__mount__point.html#a849ccf1e77fffd5d45304c6adf0d2100">name</a> [FILENAME_MAX]</td></tr>
+<tr class="separator:a849ccf1e77fffd5d45304c6adf0d2100"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad1e89dfc02cfd7341e2296086a4f251e"><td class="memItemLeft" align="right" valign="top">char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcgroup__mount__point.html#ad1e89dfc02cfd7341e2296086a4f251e">path</a> [FILENAME_MAX]</td></tr>
+<tr class="separator:ad1e89dfc02cfd7341e2296086a4f251e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Information about mounted controller. </p>
+</div><h2 class="groupheader">Field Documentation</h2>
+<a id="a849ccf1e77fffd5d45304c6adf0d2100"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a849ccf1e77fffd5d45304c6adf0d2100">&#9670;&nbsp;</a></span>name</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">char cgroup_mount_point::name[FILENAME_MAX]</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Name of the controller. </p>
+
+</div>
+</div>
+<a id="ad1e89dfc02cfd7341e2296086a4f251e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad1e89dfc02cfd7341e2296086a4f251e">&#9670;&nbsp;</a></span>path</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">char cgroup_mount_point::path[FILENAME_MAX]</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Mount point of the controller. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>include/libcgroup/<a class="el" href="iterators_8h_source.html">iterators.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/structcgroup__rule.html b/structcgroup__rule.html
new file mode 100644 (file)
index 0000000..fa9cd13
--- /dev/null
@@ -0,0 +1,107 @@
+<!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>libcgroup: cgroup_rule Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Data Fields</a>  </div>
+  <div class="headertitle">
+<div class="title">cgroup_rule Struct Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:ae5c16d897540848a1573f68656c7d667"><td class="memItemLeft" align="right" valign="top"><a id="ae5c16d897540848a1573f68656c7d667"></a>
+uid_t&#160;</td><td class="memItemRight" valign="bottom"><b>uid</b></td></tr>
+<tr class="separator:ae5c16d897540848a1573f68656c7d667"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2b8c21c79a9bf166b93108e730e95dc7"><td class="memItemLeft" align="right" valign="top"><a id="a2b8c21c79a9bf166b93108e730e95dc7"></a>
+gid_t&#160;</td><td class="memItemRight" valign="bottom"><b>gid</b></td></tr>
+<tr class="separator:a2b8c21c79a9bf166b93108e730e95dc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7ebe0743b85b1ec6c925888793a75c5d"><td class="memItemLeft" align="right" valign="top"><a id="a7ebe0743b85b1ec6c925888793a75c5d"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>is_ignore</b></td></tr>
+<tr class="separator:a7ebe0743b85b1ec6c925888793a75c5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abffc5fe695e4304ca5907af937aad48f"><td class="memItemLeft" align="right" valign="top"><a id="abffc5fe695e4304ca5907af937aad48f"></a>
+char *&#160;</td><td class="memItemRight" valign="bottom"><b>procname</b></td></tr>
+<tr class="separator:abffc5fe695e4304ca5907af937aad48f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abea30a7c25ba86ce19579cb2b155441e"><td class="memItemLeft" align="right" valign="top"><a id="abea30a7c25ba86ce19579cb2b155441e"></a>
+char&#160;</td><td class="memItemRight" valign="bottom"><b>username</b> [LOGIN_NAME_MAX]</td></tr>
+<tr class="separator:abea30a7c25ba86ce19579cb2b155441e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af4d44b4aa00c8448be74092d7f1dfcdb"><td class="memItemLeft" align="right" valign="top"><a id="af4d44b4aa00c8448be74092d7f1dfcdb"></a>
+char&#160;</td><td class="memItemRight" valign="bottom"><b>destination</b> [FILENAME_MAX]</td></tr>
+<tr class="separator:af4d44b4aa00c8448be74092d7f1dfcdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1c02dda41553d6db698b1d661a1def8c"><td class="memItemLeft" align="right" valign="top"><a id="a1c02dda41553d6db698b1d661a1def8c"></a>
+char *&#160;</td><td class="memItemRight" valign="bottom"><b>controllers</b> [MAX_MNT_ELEMENTS]</td></tr>
+<tr class="separator:a1c02dda41553d6db698b1d661a1def8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a66147998302a2a58a6b3fc00324703fd"><td class="memItemLeft" align="right" valign="top"><a id="a66147998302a2a58a6b3fc00324703fd"></a>
+struct <a class="el" href="structcgroup__rule.html">cgroup_rule</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
+<tr class="separator:a66147998302a2a58a6b3fc00324703fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>src/<a class="el" href="libcgroup-internal_8h_source.html">libcgroup-internal.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/structcgroup__rule__list.html b/structcgroup__rule__list.html
new file mode 100644 (file)
index 0000000..8c268de
--- /dev/null
@@ -0,0 +1,92 @@
+<!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>libcgroup: cgroup_rule_list Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Data Fields</a>  </div>
+  <div class="headertitle">
+<div class="title">cgroup_rule_list Struct Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:aa2561d560cf3dd40aad7bf8363d1ebd6"><td class="memItemLeft" align="right" valign="top"><a id="aa2561d560cf3dd40aad7bf8363d1ebd6"></a>
+struct <a class="el" href="structcgroup__rule.html">cgroup_rule</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>head</b></td></tr>
+<tr class="separator:aa2561d560cf3dd40aad7bf8363d1ebd6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a23e82aa76ca8c768224d3f1e3d6ce5a2"><td class="memItemLeft" align="right" valign="top"><a id="a23e82aa76ca8c768224d3f1e3d6ce5a2"></a>
+struct <a class="el" href="structcgroup__rule.html">cgroup_rule</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>tail</b></td></tr>
+<tr class="separator:a23e82aa76ca8c768224d3f1e3d6ce5a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa1f741c5a828925a45a2b33d7577d84c"><td class="memItemLeft" align="right" valign="top"><a id="aa1f741c5a828925a45a2b33d7577d84c"></a>
+int&#160;</td><td class="memItemRight" valign="bottom"><b>len</b></td></tr>
+<tr class="separator:aa1f741c5a828925a45a2b33d7577d84c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>src/<a class="el" href="libcgroup-internal_8h_source.html">libcgroup-internal.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/structcgroup__rules__data.html b/structcgroup__rules__data.html
new file mode 100644 (file)
index 0000000..03f0e70
--- /dev/null
@@ -0,0 +1,92 @@
+<!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>libcgroup: cgroup_rules_data Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Data Fields</a>  </div>
+  <div class="headertitle">
+<div class="title">cgroup_rules_data Struct Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:a76eba31fb4f7062c0d5b86a39bd34c6b"><td class="memItemLeft" align="right" valign="top"><a id="a76eba31fb4f7062c0d5b86a39bd34c6b"></a>
+pid_t&#160;</td><td class="memItemRight" valign="bottom"><b>pid</b></td></tr>
+<tr class="separator:a76eba31fb4f7062c0d5b86a39bd34c6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abd9d2b09e2b1e68497c809728c463393"><td class="memItemLeft" align="right" valign="top"><a id="abd9d2b09e2b1e68497c809728c463393"></a>
+struct passwd *&#160;</td><td class="memItemRight" valign="bottom"><b>pw</b></td></tr>
+<tr class="separator:abd9d2b09e2b1e68497c809728c463393"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a179b3b338954f522495b01cbe2a474ef"><td class="memItemLeft" align="right" valign="top"><a id="a179b3b338954f522495b01cbe2a474ef"></a>
+gid_t&#160;</td><td class="memItemRight" valign="bottom"><b>gid</b></td></tr>
+<tr class="separator:a179b3b338954f522495b01cbe2a474ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>src/<a class="el" href="libcgroup-internal_8h_source.html">libcgroup-internal.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/structcgroup__stat.html b/structcgroup__stat.html
new file mode 100644 (file)
index 0000000..1888f64
--- /dev/null
@@ -0,0 +1,93 @@
+<!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>libcgroup: cgroup_stat Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Data Fields</a>  </div>
+  <div class="headertitle">
+<div class="title">cgroup_stat Struct Reference<div class="ingroups"><a class="el" href="group__group__iterators.html">3. Iterators</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>#include &lt;<a class="el" href="iterators_8h_source.html">iterators.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:aab452f27ee2d2da5f75469de94f41a91"><td class="memItemLeft" align="right" valign="top"><a id="aab452f27ee2d2da5f75469de94f41a91"></a>
+char&#160;</td><td class="memItemRight" valign="bottom"><b>name</b> [FILENAME_MAX]</td></tr>
+<tr class="separator:aab452f27ee2d2da5f75469de94f41a91"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aae14ecf5d537a9247ee8de68aa43bed2"><td class="memItemLeft" align="right" valign="top"><a id="aae14ecf5d537a9247ee8de68aa43bed2"></a>
+char&#160;</td><td class="memItemRight" valign="bottom"><b>value</b> [<a class="el" href="group__group__iterators.html#ga55d2eac2af703794651d344c073566f5">CG_VALUE_MAX</a>]</td></tr>
+<tr class="separator:aae14ecf5d537a9247ee8de68aa43bed2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>One item in stats file. </p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>include/libcgroup/<a class="el" href="iterators_8h_source.html">iterators.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/structcgroup__string__list.html b/structcgroup__string__list.html
new file mode 100644 (file)
index 0000000..d74f9d3
--- /dev/null
@@ -0,0 +1,96 @@
+<!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>libcgroup: cgroup_string_list Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Data Fields</a>  </div>
+  <div class="headertitle">
+<div class="title">cgroup_string_list Struct Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>#include &lt;<a class="el" href="tools-common_8h_source.html">tools-common.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:af644a51828fa806f9596fd57e74a8b40"><td class="memItemLeft" align="right" valign="top"><a id="af644a51828fa806f9596fd57e74a8b40"></a>
+char **&#160;</td><td class="memItemRight" valign="bottom"><b>items</b></td></tr>
+<tr class="separator:af644a51828fa806f9596fd57e74a8b40"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afdf4b5417c2cf9502cf20bb022724dd0"><td class="memItemLeft" align="right" valign="top"><a id="afdf4b5417c2cf9502cf20bb022724dd0"></a>
+int&#160;</td><td class="memItemRight" valign="bottom"><b>size</b></td></tr>
+<tr class="separator:afdf4b5417c2cf9502cf20bb022724dd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7337c4f463238f341f3686c90c3f1ac5"><td class="memItemLeft" align="right" valign="top"><a id="a7337c4f463238f341f3686c90c3f1ac5"></a>
+int&#160;</td><td class="memItemRight" valign="bottom"><b>count</b></td></tr>
+<tr class="separator:a7337c4f463238f341f3686c90c3f1ac5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Simple dynamic array of strings. </p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>src/tools/<a class="el" href="tools-common_8h_source.html">tools-common.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/structcgroup__tree__handle.html b/structcgroup__tree__handle.html
new file mode 100644 (file)
index 0000000..0823bc7
--- /dev/null
@@ -0,0 +1,89 @@
+<!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>libcgroup: cgroup_tree_handle Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Data Fields</a>  </div>
+  <div class="headertitle">
+<div class="title">cgroup_tree_handle Struct Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:a06d13e3bd844440a5debe742d398bda3"><td class="memItemLeft" align="right" valign="top"><a id="a06d13e3bd844440a5debe742d398bda3"></a>
+FTS *&#160;</td><td class="memItemRight" valign="bottom"><b>fts</b></td></tr>
+<tr class="separator:a06d13e3bd844440a5debe742d398bda3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a15d834fb4119faf0481ad0bbe28696e4"><td class="memItemLeft" align="right" valign="top"><a id="a15d834fb4119faf0481ad0bbe28696e4"></a>
+int&#160;</td><td class="memItemRight" valign="bottom"><b>flags</b></td></tr>
+<tr class="separator:a15d834fb4119faf0481ad0bbe28696e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>src/<a class="el" href="libcgroup-internal_8h_source.html">libcgroup-internal.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/structcontrol__value.html b/structcontrol__value.html
new file mode 100644 (file)
index 0000000..ef122e7
--- /dev/null
@@ -0,0 +1,95 @@
+<!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>libcgroup: control_value Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Data Fields</a>  </div>
+  <div class="headertitle">
+<div class="title">control_value Struct Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:af190cf1c7f95a94d99c6c2a0ce438283"><td class="memItemLeft" align="right" valign="top"><a id="af190cf1c7f95a94d99c6c2a0ce438283"></a>
+char&#160;</td><td class="memItemRight" valign="bottom"><b>name</b> [FILENAME_MAX]</td></tr>
+<tr class="separator:af190cf1c7f95a94d99c6c2a0ce438283"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4e6a477fac54e065601188b249447458"><td class="memItemLeft" align="right" valign="top"><a id="a4e6a477fac54e065601188b249447458"></a>
+char&#160;</td><td class="memItemRight" valign="bottom"><b>value</b> [CG_CONTROL_VALUE_MAX]</td></tr>
+<tr class="separator:a4e6a477fac54e065601188b249447458"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acf3b68d761df53681c1581573801bc1e"><td class="memItemLeft" align="right" valign="top"><a id="acf3b68d761df53681c1581573801bc1e"></a>
+char *&#160;</td><td class="memItemRight" valign="bottom"><b>multiline_value</b></td></tr>
+<tr class="separator:acf3b68d761df53681c1581573801bc1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afeb6e8bc460a7077197fab8c2dd1e357"><td class="memItemLeft" align="right" valign="top"><a id="afeb6e8bc460a7077197fab8c2dd1e357"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>dirty</b></td></tr>
+<tr class="separator:afeb6e8bc460a7077197fab8c2dd1e357"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>src/<a class="el" href="libcgroup-internal_8h_source.html">libcgroup-internal.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/structcontroller__data.html b/structcontroller__data.html
new file mode 100644 (file)
index 0000000..c1e574f
--- /dev/null
@@ -0,0 +1,156 @@
+<!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>libcgroup: controller_data Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Data Fields</a>  </div>
+  <div class="headertitle">
+<div class="title">controller_data Struct Reference<div class="ingroups"><a class="el" href="group__group__iterators.html">3. Iterators</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>#include &lt;<a class="el" href="iterators_8h_source.html">iterators.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:a5474be4d8cc4553c94ca81c6a93f5a18"><td class="memItemLeft" align="right" valign="top">char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcontroller__data.html#a5474be4d8cc4553c94ca81c6a93f5a18">name</a> [FILENAME_MAX]</td></tr>
+<tr class="separator:a5474be4d8cc4553c94ca81c6a93f5a18"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a25e316f55473ca2b333b0d7e0ca644b4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcontroller__data.html#a25e316f55473ca2b333b0d7e0ca644b4">hierarchy</a></td></tr>
+<tr class="separator:a25e316f55473ca2b333b0d7e0ca644b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acd075c0bb48062bf720b68d0a30116eb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcontroller__data.html#acd075c0bb48062bf720b68d0a30116eb">num_cgroups</a></td></tr>
+<tr class="separator:acd075c0bb48062bf720b68d0a30116eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a24be412cfb6c19f7a13a4bff9e55206e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcontroller__data.html#a24be412cfb6c19f7a13a4bff9e55206e">enabled</a></td></tr>
+<tr class="separator:a24be412cfb6c19f7a13a4bff9e55206e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Detailed information about available controller. </p>
+</div><h2 class="groupheader">Field Documentation</h2>
+<a id="a24be412cfb6c19f7a13a4bff9e55206e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a24be412cfb6c19f7a13a4bff9e55206e">&#9670;&nbsp;</a></span>enabled</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int controller_data::enabled</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Enabled flag. </p>
+
+</div>
+</div>
+<a id="a25e316f55473ca2b333b0d7e0ca644b4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a25e316f55473ca2b333b0d7e0ca644b4">&#9670;&nbsp;</a></span>hierarchy</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int controller_data::hierarchy</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Hierarchy ID. Controllers with the same hierarchy ID are mounted together as one hierarchy. Controllers with ID 0 are not currently mounted anywhere. </p>
+
+</div>
+</div>
+<a id="a5474be4d8cc4553c94ca81c6a93f5a18"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5474be4d8cc4553c94ca81c6a93f5a18">&#9670;&nbsp;</a></span>name</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">char controller_data::name[FILENAME_MAX]</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Controller name. </p>
+
+</div>
+</div>
+<a id="acd075c0bb48062bf720b68d0a30116eb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acd075c0bb48062bf720b68d0a30116eb">&#9670;&nbsp;</a></span>num_cgroups</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int controller_data::num_cgroups</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Number of groups. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>include/libcgroup/<a class="el" href="iterators_8h_source.html">iterators.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/structext__cgroup__record.html b/structext__cgroup__record.html
new file mode 100644 (file)
index 0000000..51dd550
--- /dev/null
@@ -0,0 +1,92 @@
+<!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>libcgroup: ext_cgroup_record Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Data Fields</a>  </div>
+  <div class="headertitle">
+<div class="title">ext_cgroup_record Struct Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:af584e3085fe71c11d580c869e73adaaf"><td class="memItemLeft" align="right" valign="top"><a id="af584e3085fe71c11d580c869e73adaaf"></a>
+char&#160;</td><td class="memItemRight" valign="bottom"><b>name</b> [FILENAME_MAX]</td></tr>
+<tr class="separator:af584e3085fe71c11d580c869e73adaaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab928e3bb594a7a4f179346513b3a74d6"><td class="memItemLeft" align="right" valign="top"><a id="ab928e3bb594a7a4f179346513b3a74d6"></a>
+char&#160;</td><td class="memItemRight" valign="bottom"><b>controller</b> [FILENAME_MAX]</td></tr>
+<tr class="separator:ab928e3bb594a7a4f179346513b3a74d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac0ce27357d53613324114f2b29a9e057"><td class="memItemLeft" align="right" valign="top"><a id="ac0ce27357d53613324114f2b29a9e057"></a>
+int&#160;</td><td class="memItemRight" valign="bottom"><b>h_number</b></td></tr>
+<tr class="separator:ac0ce27357d53613324114f2b29a9e057"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>src/tools/cgdelete.c</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/structparent__info.html b/structparent__info.html
new file mode 100644 (file)
index 0000000..401b691
--- /dev/null
@@ -0,0 +1,89 @@
+<!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>libcgroup: parent_info Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Data Fields</a>  </div>
+  <div class="headertitle">
+<div class="title">parent_info Struct Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:afa3f57be368d34588a5d86ba70e7960a"><td class="memItemLeft" align="right" valign="top"><a id="afa3f57be368d34588a5d86ba70e7960a"></a>
+__u64&#160;</td><td class="memItemRight" valign="bottom"><b>timestamp</b></td></tr>
+<tr class="separator:afa3f57be368d34588a5d86ba70e7960a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2ab51886a7b2df1dd70fec0f8cc12fee"><td class="memItemLeft" align="right" valign="top"><a id="a2ab51886a7b2df1dd70fec0f8cc12fee"></a>
+pid_t&#160;</td><td class="memItemRight" valign="bottom"><b>pid</b></td></tr>
+<tr class="separator:a2ab51886a7b2df1dd70fec0f8cc12fee"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>src/daemon/cgrulesengd.c</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/structunchanged__pid.html b/structunchanged__pid.html
new file mode 100644 (file)
index 0000000..df206f9
--- /dev/null
@@ -0,0 +1,89 @@
+<!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>libcgroup: unchanged_pid Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Data Fields</a>  </div>
+  <div class="headertitle">
+<div class="title">unchanged_pid Struct Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:a55061a3d9aeab8cb19e400469900e07f"><td class="memItemLeft" align="right" valign="top"><a id="a55061a3d9aeab8cb19e400469900e07f"></a>
+pid_t&#160;</td><td class="memItemRight" valign="bottom"><b>pid</b></td></tr>
+<tr class="separator:a55061a3d9aeab8cb19e400469900e07f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab2e37e20d584474f0c5f18b90a0f53a2"><td class="memItemLeft" align="right" valign="top"><a id="ab2e37e20d584474f0c5f18b90a0f53a2"></a>
+int&#160;</td><td class="memItemRight" valign="bottom"><b>flags</b></td></tr>
+<tr class="separator:ab2e37e20d584474f0c5f18b90a0f53a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>src/daemon/cgrulesengd.c</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/sync_off.png b/sync_off.png
new file mode 100644 (file)
index 0000000..3b443fc
Binary files /dev/null and b/sync_off.png differ
diff --git a/sync_on.png b/sync_on.png
new file mode 100644 (file)
index 0000000..e08320f
Binary files /dev/null and b/sync_on.png differ
diff --git a/tab_a.png b/tab_a.png
new file mode 100644 (file)
index 0000000..3b725c4
Binary files /dev/null and b/tab_a.png differ
diff --git a/tab_b.png b/tab_b.png
new file mode 100644 (file)
index 0000000..e2b4a86
Binary files /dev/null and b/tab_b.png differ
diff --git a/tab_h.png b/tab_h.png
new file mode 100644 (file)
index 0000000..fd5cb70
Binary files /dev/null and b/tab_h.png differ
diff --git a/tab_s.png b/tab_s.png
new file mode 100644 (file)
index 0000000..ab478c9
Binary files /dev/null and b/tab_s.png differ
diff --git a/tabs.css b/tabs.css
new file mode 100644 (file)
index 0000000..85a0cd5
--- /dev/null
+++ b/tabs.css
@@ -0,0 +1 @@
+.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}}
\ No newline at end of file
diff --git a/tasks_8h_source.html b/tasks_8h_source.html
new file mode 100644 (file)
index 0000000..212aca8
--- /dev/null
@@ -0,0 +1,152 @@
+<!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>libcgroup: include/libcgroup/tasks.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_66a7763e2a9b96033a682558820d533e.html">libcgroup</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tasks.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#ifndef _LIBCGROUP_TASKS_H</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#define _LIBCGROUP_TASKS_H</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160; </div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="preprocessor">#ifndef _LIBCGROUP_H_INSIDE</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="preprocessor">#error &quot;Only &lt;libcgroup.h&gt; should be included directly.&quot;</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160; </div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#include &lt;libcgroup/groups.h&gt;</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160; </div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#ifndef SWIG</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="preprocessor">#include &lt;features.h&gt;</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#include &lt;stdbool.h&gt;</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160; </div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160; </div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="keyword">enum</span> cgflags {</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;    CGFLAG_USECACHE = 0x01,</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;    CGFLAG_USE_TEMPLATE_CACHE = 0x02,</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;};</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160; </div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="keyword">enum</span> cgroup_daemon_type {</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    CGROUP_DAEMON_UNCHANGE_CHILDREN       = 0x1,</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;    CGROUP_DAEMON_CANCEL_UNCHANGE_PROCESS = 0x2,</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;};</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160; </div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__tasks.html#ga43414ac2b1fc73bbb46b6278c7500188">cgroup_attach_task</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> *<a class="code" href="structcgroup.html">cgroup</a>);</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160; </div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__tasks.html#ga9c7532681986d156ac3f6bac1fcf6aab">cgroup_attach_task_pid</a>(<span class="keyword">struct</span> <a class="code" href="structcgroup.html">cgroup</a> *<a class="code" href="structcgroup.html">cgroup</a>, pid_t tid);</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160; </div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__tasks.html#ga2d4677baef780c003fc6fba6b5dc78f2">cgroup_change_cgroup_path</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, pid_t pid,</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> controllers[]);</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160; </div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__tasks.html#ga6f2c17b99cf2526cb46df4769eb3f46e">cgroup_get_current_controller_path</a>(pid_t pid, <span class="keyword">const</span> <span class="keywordtype">char</span> *controller,</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;                    <span class="keywordtype">char</span> **current_path);</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160; </div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__tasks.html#gad7fa5a2c4db08d31da5bfbecaf482d3d">cgroup_init_rules_cache</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160; </div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__tasks.html#gaf81ebd9cb5575c75b4c85f385ebda1ce">cgroup_reload_cached_rules</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160; </div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__group__tasks.html#gac4e3f29cfbdc3d77f08c9fe60857274a">cgroup_print_rules_config</a>(FILE *fp);</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160; </div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__tasks.html#gafc69658b012b6f1c11ba078ffccd70a2">cgroup_change_all_cgroups</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160; </div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__tasks.html#ga368e7b8e19b3943ab6fb50e76a09e6ea">cgroup_change_cgroup_flags</a>(uid_t uid, gid_t gid,</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *procname, pid_t pid, <span class="keywordtype">int</span> flags);</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160; </div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__tasks.html#gae472183a7c9a37826ef15c77014c47fb">cgroup_change_cgroup_uid_gid_flags</a>(uid_t uid, gid_t gid,</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;                pid_t pid, <span class="keywordtype">int</span> flags);</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160; </div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__tasks.html#ga5eab78a922dbacd368360f03c70146be">cgroup_change_cgroup_uid_gid</a>(uid_t uid, gid_t gid, pid_t pid);</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160; </div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__group__tasks.html#ga64f7967d6d5edfff9afddaa6a6974b1c">cgroup_register_unchanged_process</a>(pid_t pid, <span class="keywordtype">int</span> flags);</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160; </div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;} <span class="comment">/* extern &quot;C&quot; */</span></div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160; </div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* _LIBCGROUP_TASKS_H */</span><span class="preprocessor"></span></div>
+<div class="ttc" id="agroup__group__tasks_html_ga2d4677baef780c003fc6fba6b5dc78f2"><div class="ttname"><a href="group__group__tasks.html#ga2d4677baef780c003fc6fba6b5dc78f2">cgroup_change_cgroup_path</a></div><div class="ttdeci">int cgroup_change_cgroup_path(const char *path, pid_t pid, const char *const controllers[])</div><div class="ttdef"><b>Definition:</b> api.c:4071</div></div>
+<div class="ttc" id="agroup__group__tasks_html_ga368e7b8e19b3943ab6fb50e76a09e6ea"><div class="ttname"><a href="group__group__tasks.html#ga368e7b8e19b3943ab6fb50e76a09e6ea">cgroup_change_cgroup_flags</a></div><div class="ttdeci">int cgroup_change_cgroup_flags(uid_t uid, gid_t gid, const char *procname, pid_t pid, int flags)</div><div class="ttdef"><b>Definition:</b> api.c:3855</div></div>
+<div class="ttc" id="agroup__group__tasks_html_ga43414ac2b1fc73bbb46b6278c7500188"><div class="ttname"><a href="group__group__tasks.html#ga43414ac2b1fc73bbb46b6278c7500188">cgroup_attach_task</a></div><div class="ttdeci">int cgroup_attach_task(struct cgroup *cgroup)</div><div class="ttdef"><b>Definition:</b> api.c:1733</div></div>
+<div class="ttc" id="agroup__group__tasks_html_ga5eab78a922dbacd368360f03c70146be"><div class="ttname"><a href="group__group__tasks.html#ga5eab78a922dbacd368360f03c70146be">cgroup_change_cgroup_uid_gid</a></div><div class="ttdeci">int cgroup_change_cgroup_uid_gid(uid_t uid, gid_t gid, pid_t pid)</div><div class="ttdef"><b>Definition:</b> api.c:4059</div></div>
+<div class="ttc" id="agroup__group__tasks_html_ga64f7967d6d5edfff9afddaa6a6974b1c"><div class="ttname"><a href="group__group__tasks.html#ga64f7967d6d5edfff9afddaa6a6974b1c">cgroup_register_unchanged_process</a></div><div class="ttdeci">int cgroup_register_unchanged_process(pid_t pid, int flags)</div><div class="ttdef"><b>Definition:</b> api.c:5260</div></div>
+<div class="ttc" id="agroup__group__tasks_html_ga6f2c17b99cf2526cb46df4769eb3f46e"><div class="ttname"><a href="group__group__tasks.html#ga6f2c17b99cf2526cb46df4769eb3f46e">cgroup_get_current_controller_path</a></div><div class="ttdeci">int cgroup_get_current_controller_path(pid_t pid, const char *controller, char **current_path)</div><div class="ttdef"><b>Definition:</b> api.c:4294</div></div>
+<div class="ttc" id="agroup__group__tasks_html_ga9c7532681986d156ac3f6bac1fcf6aab"><div class="ttname"><a href="group__group__tasks.html#ga9c7532681986d156ac3f6bac1fcf6aab">cgroup_attach_task_pid</a></div><div class="ttdeci">int cgroup_attach_task_pid(struct cgroup *cgroup, pid_t tid)</div><div class="ttdef"><b>Definition:</b> api.c:1668</div></div>
+<div class="ttc" id="agroup__group__tasks_html_gac4e3f29cfbdc3d77f08c9fe60857274a"><div class="ttname"><a href="group__group__tasks.html#gac4e3f29cfbdc3d77f08c9fe60857274a">cgroup_print_rules_config</a></div><div class="ttdeci">void cgroup_print_rules_config(FILE *fp)</div><div class="ttdef"><b>Definition:</b> api.c:4186</div></div>
+<div class="ttc" id="agroup__group__tasks_html_gad7fa5a2c4db08d31da5bfbecaf482d3d"><div class="ttname"><a href="group__group__tasks.html#gad7fa5a2c4db08d31da5bfbecaf482d3d">cgroup_init_rules_cache</a></div><div class="ttdeci">int cgroup_init_rules_cache(void)</div><div class="ttdef"><b>Definition:</b> api.c:4272</div></div>
+<div class="ttc" id="agroup__group__tasks_html_gae472183a7c9a37826ef15c77014c47fb"><div class="ttname"><a href="group__group__tasks.html#gae472183a7c9a37826ef15c77014c47fb">cgroup_change_cgroup_uid_gid_flags</a></div><div class="ttdeci">int cgroup_change_cgroup_uid_gid_flags(uid_t uid, gid_t gid, pid_t pid, int flags)</div><div class="ttdef"><b>Definition:</b> api.c:4042</div></div>
+<div class="ttc" id="agroup__group__tasks_html_gaf81ebd9cb5575c75b4c85f385ebda1ce"><div class="ttname"><a href="group__group__tasks.html#gaf81ebd9cb5575c75b4c85f385ebda1ce">cgroup_reload_cached_rules</a></div><div class="ttdeci">int cgroup_reload_cached_rules(void)</div><div class="ttdef"><b>Definition:</b> api.c:4246</div></div>
+<div class="ttc" id="agroup__group__tasks_html_gafc69658b012b6f1c11ba078ffccd70a2"><div class="ttname"><a href="group__group__tasks.html#gafc69658b012b6f1c11ba078ffccd70a2">cgroup_change_all_cgroups</a></div><div class="ttdeci">int cgroup_change_all_cgroups(void)</div><div class="ttdef"><b>Definition:</b> api.c:4140</div></div>
+<div class="ttc" id="astructcgroup_html"><div class="ttname"><a href="structcgroup.html">cgroup</a></div><div class="ttdef"><b>Definition:</b> libcgroup-internal.h:106</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/todo.html b/todo.html
new file mode 100644 (file)
index 0000000..0c64eb0
--- /dev/null
+++ b/todo.html
@@ -0,0 +1,113 @@
+<!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>libcgroup: Todo List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- 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><!-- top -->
+<div class="PageDoc"><div class="header">
+  <div class="headertitle">
+<div class="title">Todo List </div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><dl class="reflist">
+<dt>Module <a class="el" href="group__group__groups.html#amgrp8b151c1f58f3f15039d7fd770cc3dab8">Basic infrastructure</a>  </dt>
+<dd><a class="anchor" id="_todo000002"></a>add some propaganda what's so great on this approach... I personally think it is broken and confusing (see TODOs below). </dd>
+<dt>Global <a class="el" href="group__group__tasks.html#ga368e7b8e19b3943ab6fb50e76a09e6ea">cgroup_change_cgroup_flags</a>  (uid_t uid, gid_t gid, const char *procname, pid_t pid, int flags)</dt>
+<dd><a class="anchor" id="_todo000017"></a>Determine thread-safeness and fix of not safe.  </dd>
+<dt>Global <a class="el" href="group__group__tasks.html#ga2d4677baef780c003fc6fba6b5dc78f2">cgroup_change_cgroup_path</a>  (const char *path, pid_t pid, const char *const controllers[])</dt>
+<dd><a class="anchor" id="_todo000015"></a>should this function be really public?  </dd>
+<dt>Global <a class="el" href="group__group__tasks.html#gae472183a7c9a37826ef15c77014c47fb">cgroup_change_cgroup_uid_gid_flags</a>  (uid_t uid, gid_t gid, pid_t pid, int flags)</dt>
+<dd><a class="anchor" id="_todo000018"></a>Determine thread-safeness and fix if not safe.  </dd>
+<dt>Global <a class="el" href="group__group__groups.html#gadb8e13df6064841d3c9707960f782fa7">cgroup_create_cgroup</a>  (struct cgroup *cgroup, int ignore_ownership)</dt>
+<dd><a class="anchor" id="_todo000005"></a>what is ignore_ownership good for?  </dd>
+<dt>Global <a class="el" href="group__group__groups.html#ga90e1ce96f3cb540f7e82d076dd938f62">cgroup_create_cgroup_from_parent</a>  (struct cgroup *cgroup, int ignore_ownership)</dt>
+<dd><p class="startdd"><a class="anchor" id="_todo000006"></a>what is this good for? Why the list of controllers added by <a class="el" href="group__group__groups.html#gaa2f9c2ac75fd7e56e5ec6fb970304130">cgroup_add_controller()</a> is not used, like in <a class="el" href="group__group__groups.html#gadb8e13df6064841d3c9707960f782fa7">cgroup_create_cgroup()</a>? I can't crate subgroup of root group in just one hierarchy with this function!</p>
+<p class="enddd"><a class="anchor" id="_todo000007"></a>what is ignore_ownership good for?  </p>
+</dd>
+<dt>Global <a class="el" href="group__group__groups.html#ga1dca18434e5d6be30c28c556da94f565">cgroup_delete_cgroup</a>  (struct cgroup *cgroup, int ignore_migration)</dt>
+<dd><a class="anchor" id="_todo000008"></a>what is ignore_migration good for? rmdir() will fail if tasks were not moved.  </dd>
+<dt>Global <a class="el" href="group__group__iterators.html#gga608b4aa32e2db58fed34771a6a272444a24e202c59f318e63ad8cafcc1b4b102b">CGROUP_FILE_TYPE_OTHER</a>  </dt>
+<dd><a class="anchor" id="_todo000014"></a>really?  </dd>
+<dt>Global <a class="el" href="group__group__groups.html#ga92d27c9ff0d655838642a7aa68497596">cgroup_free_controllers</a>  (struct cgroup *cgroup)</dt>
+<dd><a class="anchor" id="_todo000004"></a>should this function be public???  </dd>
+<dt>Global <a class="el" href="group__group__groups.html#gad4ba31fe5a8bba63b33b1ea339b849e6">cgroup_get_cgroup</a>  (struct cgroup *cgroup)</dt>
+<dd><a class="anchor" id="_todo000009"></a>what is this function good for? Why is not considered only the list of controllers attached by <a class="el" href="group__group__groups.html#gaa2f9c2ac75fd7e56e5ec6fb970304130">cgroup_add_controller()</a>? What owners will return <a class="el" href="group__group__groups.html#ga007d21c304d9cc6e948dc0ae51ecfa86">cgroup_get_uid_gid()</a> if the group is in multiple hierarchies, each with different owner of tasks file? </dd>
+<dt>Global <a class="el" href="group__group__groups.html#gafaa51e5ffe09f8ad05585a1d3b6f7fa9">cgroup_get_value_string</a>  (struct <a class="el" href="structcgroup__controller.html">cgroup_controller</a> *controller, const char *name, char **value)</dt>
+<dd><a class="anchor" id="_todo000010"></a>rephrase, it's too vague... How big is the buffer actually? </dd>
+<dt>Global <a class="el" href="group__group__tasks.html#gad7fa5a2c4db08d31da5bfbecaf482d3d">cgroup_init_rules_cache</a>  (void)</dt>
+<dd><a class="anchor" id="_todo000016"></a>add parameter with the filename?  </dd>
+<dt>Global <a class="el" href="group__group__groups.html#ga6cd4733e5982ac2c92ee3cb3dbd10a31">cgroup_new_cgroup</a>  (const char *name)</dt>
+<dd><a class="anchor" id="_todo000003"></a>suggest one preferred way, either "/foo" or "foo".  </dd>
+<dt>Global <a class="el" href="group__group__iterators.html#ga7b19f10c06abb96d8c8ae88a04888a68">cgroup_walk_tree_begin</a>  (const char *controller, const char *base_path, int depth, void **handle, struct <a class="el" href="structcgroup__file__info.html">cgroup_file_info</a> *info, int *base_level)</dt>
+<dd><a class="anchor" id="_todo000013"></a>why base_level is not hidden in **handle?  </dd>
+<dt>Module <a class="el" href="group__group__config.html#amgrp0e02ce690a683c3ba45b7ef59ad72acd">Configuration file</a>  </dt>
+<dd><a class="anchor" id="_todo000001"></a>add this description?: These functions are mostly intended to be used by internal <code>libcgroup</code> tools, however they are fully supported and applications can benefit from them.  </dd>
+<dt>Module <a class="el" href="group__group__iterators.html">group_iterators</a>  </dt>
+<dd><a class="anchor" id="_todo000012"></a>not all iterators follow this pattern, e.g. <a class="el" href="group__group__iterators.html#ga7b19f10c06abb96d8c8ae88a04888a68">cgroup_walk_tree_begin()</a> can result both in a state that <a class="el" href="group__group__iterators.html#ga09a70990837a58e506a264f8c50d4cde">cgroup_walk_tree_end()</a> is not needed and will sigsegv and in a state that <a class="el" href="group__group__iterators.html#ga09a70990837a58e506a264f8c50d4cde">cgroup_walk_tree_end()</a> is needed to free allocated memory. Complete review is needed!  </dd>
+<dt>Module <a class="el" href="group__group__init.html#amgrp61bcd96a2c1f8026527cbf2019d6e9a4">Initialization</a>  </dt>
+<dd><a class="anchor" id="_todo000011"></a>this is very bad... There should be at least way how to refresh the cache and/or an option to refresh it automatically (does kernel provide any indication, when a filesystem is mounted/unmounted?). Dtto the cleanup on exit. </dd>
+</dl>
+</div></div><!-- contents -->
+</div><!-- PageDoc -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/tools-common_8h_source.html b/tools-common_8h_source.html
new file mode 100644 (file)
index 0000000..3058dcb
--- /dev/null
@@ -0,0 +1,161 @@
+<!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>libcgroup: src/tools/tools-common.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">libcgroup
+   </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>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_1563a38af0d3a5e4a6330d6d45e9792a.html">tools</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tools-common.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Copyright Red Hat, Inc. 2009</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * Author:  Vivek Goyal &lt;vgoyal@redhat.com&gt;</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> *      Jan Safranek &lt;jsafrane@redhat.com&gt;</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify it</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * under the terms of version 2.1 of the GNU Lesser General Public License</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> * as published by the Free Software Foundation.</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> * This program is distributed in the hope that it would be useful, but</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160; </div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __TOOLS_COMMON</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160; </div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#define __TOOLS_COMMON</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160; </div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &quot;config.h&quot;</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;libcgroup.h&gt;</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &quot;../libcgroup-internal.h&quot;</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160; </div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#define cgroup_err(x...) cgroup_log(CGROUP_LOG_ERROR, x)</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#define cgroup_warn(x...) cgroup_log(CGROUP_LOG_WARNING, x)</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#define cgroup_info(x...) cgroup_log(CGROUP_LOG_INFO, x)</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#define cgroup_dbg(x...) cgroup_log(CGROUP_LOG_DEBUG, x)</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160; </div>
+<div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="structcgroup__group__spec.html">   36</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcgroup__group__spec.html">cgroup_group_spec</a> {</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;    <span class="keywordtype">char</span> path[FILENAME_MAX];</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;    <span class="keywordtype">char</span> *controllers[CG_CONTROLLER_MAX];</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;};</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160; </div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160; </div>
+<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="structcgroup__string__list.html">   45</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcgroup__string__list.html">cgroup_string_list</a> {</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    <span class="keywordtype">char</span> **items;</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    <span class="keywordtype">int</span> size;</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    <span class="keywordtype">int</span> count;</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;};</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160; </div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="keywordtype">int</span> parse_cgroup_spec(<span class="keyword">struct</span> <a class="code" href="structcgroup__group__spec.html">cgroup_group_spec</a> **cdptr, <span class="keywordtype">char</span> *optarg,</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;        <span class="keywordtype">int</span> capacity);</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160; </div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="keywordtype">void</span> cgroup_free_group_spec(<span class="keyword">struct</span> <a class="code" href="structcgroup__group__spec.html">cgroup_group_spec</a> *cl);</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160; </div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160; </div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="keywordtype">int</span> cgroup_string_list_init(<span class="keyword">struct</span> <a class="code" href="structcgroup__string__list.html">cgroup_string_list</a> *list,</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;        <span class="keywordtype">int</span> initial_size);</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160; </div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="keywordtype">void</span> cgroup_string_list_free(<span class="keyword">struct</span> <a class="code" href="structcgroup__string__list.html">cgroup_string_list</a> *list);</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160; </div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="keywordtype">int</span> cgroup_string_list_add_item(<span class="keyword">struct</span> <a class="code" href="structcgroup__string__list.html">cgroup_string_list</a> *list,</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *item);</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160; </div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;<span class="keywordtype">int</span> cgroup_string_list_add_directory(<span class="keyword">struct</span> <a class="code" href="structcgroup__string__list.html">cgroup_string_list</a> *list,</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;        <span class="keywordtype">char</span> *dirname, <span class="keywordtype">char</span> *program_name);</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160; </div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160; </div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;<span class="keywordtype">int</span> parse_mode(<span class="keywordtype">char</span> *<span class="keywordtype">string</span>, mode_t *pmode, <span class="keyword">const</span> <span class="keywordtype">char</span> *program_name);</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160; </div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;<span class="keywordtype">int</span> parse_uid_gid(<span class="keywordtype">char</span> *<span class="keywordtype">string</span>, uid_t *uid, gid_t *gid,</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *program_name);</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160; </div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;<span class="preprocessor">#ifdef UNIT_TEST</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160; </div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="keywordtype">int</span> parse_r_flag(<span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> program_name,</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;         <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> name_value_str,</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;         <span class="keyword">struct</span> <a class="code" href="structcontrol__value.html">control_value</a> * <span class="keyword">const</span> name_value);</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160; </div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* UNIT_TEST */</span><span class="preprocessor"></span></div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160; </div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;} <span class="comment">/* extern &quot;C&quot; */</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160; </div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* TOOLS_COMMON */</span><span class="preprocessor"></span></div>
+<div class="ttc" id="astructcgroup__group__spec_html"><div class="ttname"><a href="structcgroup__group__spec.html">cgroup_group_spec</a></div><div class="ttdef"><b>Definition:</b> tools-common.h:36</div></div>
+<div class="ttc" id="astructcgroup__string__list_html"><div class="ttname"><a href="structcgroup__string__list.html">cgroup_string_list</a></div><div class="ttdef"><b>Definition:</b> tools-common.h:45</div></div>
+<div class="ttc" id="astructcontrol__value_html"><div class="ttname"><a href="structcontrol__value.html">control_value</a></div><div class="ttdef"><b>Definition:</b> libcgroup-internal.h:90</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>