From 003c84f896e2711c77c65c8092a6589b426f86e4 Mon Sep 17 00:00:00 2001 From: drakenclimber Date: Mon, 27 Jan 2025 15:08:13 +0000 Subject: [PATCH] deploy: b4bc68c302acdb44540e521093bd47b5d48688f8 --- abstraction-common_8h_source.html | 23 +- abstraction-map_8h_source.html | 23 +- annotated.html | 46 +- cgrulesengd_8h_source.html | 23 +- classAPIArgsTest.html | 26 +- classAPIArgsTest.png | Bin 481 -> 481 bytes classBuildPathV1Test.html | 34 +- classBuildPathV1Test.png | Bin 519 -> 519 bytes classBuildTasksProcPathTest.html | 34 +- classBuildTasksProcPathTest.png | Bin 627 -> 627 bytes classCgroupCompareIgnoreRuleTest.html | 26 +- classCgroupCompareIgnoreRuleTest.png | Bin 706 -> 706 bytes classCgroupCreateCgroupTest.html | 26 +- classCgroupCreateCgroupTest.png | Bin 644 -> 644 bytes classCgroupGetCgroupTest.html | 26 +- classCgroupGetCgroupTest.png | Bin 617 -> 617 bytes classCgroupProcessV1MntTest.html | 26 +- classCgroupProcessV1MntTest.png | Bin 661 -> 661 bytes classCgroupProcessV2MntTest.html | 26 +- classCgroupProcessV2MntTest.png | Bin 670 -> 670 bytes classCgroupV2ControllerEnabled.html | 26 +- classCgroupV2ControllerEnabled.png | Bin 682 -> 682 bytes classCgsetParseRFlagTest.html | 26 +- classCgsetParseRFlagTest.png | Bin 606 -> 606 bytes classChownChmodTasksTest.html | 26 +- classChownChmodTasksTest.png | Bin 618 -> 618 bytes classGetCgroupsFromProcCgroupsTest.html | 26 +- classGetCgroupsFromProcCgroupsTest.png | Bin 712 -> 712 bytes classGetSubtreeControlTest.html | 26 +- classGetSubtreeControlTest.png | Bin 613 -> 613 bytes classParseRulesOptionsTest.html | 26 +- classParseRulesOptionsTest.png | Bin 633 -> 633 bytes classProcnameWildcardTest.html | 26 +- classProcnameWildcardTest.png | Bin 617 -> 617 bytes classSetValuesRecursiveTest.html | 26 +- classSetValuesRecursiveTest.png | Bin 639 -> 639 bytes classSubtreeControlTest.html | 26 +- classSubtreeControlTest.png | Bin 542 -> 542 bytes classes.html | 26 +- classftests_1_1cgroup_1_1Cgroup.html | 289 ++---- classftests_1_1cgroup_1_1Cgroup.png | Bin 481 -> 481 bytes classftests_1_1cgroup_1_1CgroupError.html | 26 +- classftests_1_1cgroup_1_1CgroupError.png | Bin 606 -> 606 bytes classftests_1_1cgroup_1_1CgroupMount.html | 36 +- classftests_1_1cgroup_1_1CgroupMount.png | Bin 587 -> 587 bytes classftests_1_1cgroup_1_1CgroupVersion.html | 26 +- classftests_1_1cgroup_1_1CgroupVersion.png | Bin 591 -> 591 bytes classftests_1_1config_1_1Config.html | 52 +- classftests_1_1config_1_1Config.png | Bin 483 -> 483 bytes classftests_1_1config_1_1ConfigError.html | 26 +- classftests_1_1config_1_1ConfigError.png | Bin 588 -> 588 bytes classftests_1_1container_1_1Container.html | 44 +- classftests_1_1container_1_1Container.png | Bin 552 -> 552 bytes ...ftests_1_1container_1_1ContainerError.html | 26 +- ...sftests_1_1container_1_1ContainerError.png | Bin 629 -> 629 bytes classftests_1_1controller_1_1Controller.html | 49 +- classftests_1_1controller_1_1Controller.png | Bin 535 -> 535 bytes classftests_1_1log_1_1Log.html | 26 +- classftests_1_1log_1_1Log.png | Bin 409 -> 409 bytes classftests_1_1process_1_1Process.html | 30 +- classftests_1_1process_1_1Process.png | Bin 513 -> 513 bytes classftests_1_1run_1_1Run.html | 26 +- classftests_1_1run_1_1Run.png | Bin 440 -> 440 bytes classftests_1_1run_1_1RunError.html | 34 +- classftests_1_1run_1_1RunError.png | Bin 514 -> 514 bytes classftests_1_1systemd_1_1Systemd.html | 26 +- classftests_1_1systemd_1_1Systemd.png | Bin 547 -> 547 bytes clipboard.js | 61 ++ config_8h_source.html | 41 +- cookie.js | 58 ++ dir_1563a38af0d3a5e4a6330d6d45e9792a.html | 26 +- dir_186aed7d9ed997e3f7419a7f20ba31e5.html | 26 +- dir_2a08be305b9505374e987b3bf409b5f6.html | 26 +- dir_2d094300ae4f2c55dd459b9ec7dd0ad3.html | 26 +- dir_501cbd49daf77f17c121ad0979f93200.html | 26 +- dir_59425e443f801f1f2fd8bbe4959a3ccf.html | 26 +- dir_5a61c96bdb8d8040ef93b1d687e1e467.html | 26 +- dir_66a7763e2a9b96033a682558820d533e.html | 26 +- dir_68267d1309a1af8e8297ef4c3efbcdba.html | 26 +- dir_6f9635d4fbfa321d4c00f29df5cd540c.html | 26 +- dir_a6674828538ab5f03c09771a856fdcec.html | 26 +- dir_a9876c7102db9acca678b90c36d1e873.html | 26 +- dir_bad69804d7d66cc6351273e8c931723c.html | 26 +- dir_d44c64559bbebec7f509842c48db8b23.html | 26 +- dir_e68e8157741866f444e17edd764ebbae.html | 26 +- doxygen.css | 294 +++++- doxygen_crawl.html | 432 +++++++++ dynsections.js | 326 ++++--- error_8h_source.html | 23 +- files.html | 38 +- functions.html | 26 +- functions_func.html | 26 +- functions_vars.html | 26 +- group__group__config.html | 94 +- group__group__errors.html | 62 +- group__group__groups.html | 676 +++++-------- group__group__iterators.html | 338 +++---- group__group__log.html | 100 +- group__group__tasks.html | 191 ++-- groups_8h_source.html | 23 +- hierarchy.html | 36 +- index.html | 27 +- iterators_8h_source.html | 23 +- jquery.js | 190 +++- libcgroup-internal_8h_source.html | 23 +- libcgroup_8h_source.html | 23 +- log_8h_source.html | 23 +- md_CONTRIBUTING.html | 46 +- md_README.html | 26 +- md_SECURITY.html | 26 +- md_doc_2internal_2release-github.html | 46 +- ...s_2cmdline_2systemd-with-idle-process.html | 26 +- md_tests_2README.html | 26 +- md_tests_2ftests_2README.html | 37 +- menu.js | 38 +- navtree.css | 149 +++ pages.html | 26 +- resize.js | 147 +++ search/all_15.js | 22 +- search/all_17.js | 15 +- search/all_18.js | 31 +- search/all_19.js | 2 +- search/all_1a.js | 51 +- search/all_1c.js | 11 +- search/all_1d.js | 2 +- search/all_1f.js | 2 +- search/all_9.js | 25 +- search/all_b.js | 321 +++--- search/classes_2.js | 73 +- search/functions_0.js | 4 +- search/functions_3.js | 2 +- search/pages_5.js | 5 +- search/pages_6.js | 2 +- search/pages_8.js | 3 +- search/search.js | 916 ++++++++---------- structarray__parent__info.html | 26 +- structarray__unchanged.html | 26 +- structcg__mount__point.html | 26 +- structcg__mount__table__s.html | 30 +- structcgroup.html | 26 +- structcgroup__abstraction__map.html | 26 +- structcgroup__controller.html | 26 +- structcgroup__dictionary.html | 26 +- structcgroup__dictionary__item.html | 26 +- structcgroup__dictionary__iterator.html | 26 +- structcgroup__file__info.html | 36 +- structcgroup__group__spec.html | 26 +- structcgroup__info.html | 26 +- structcgroup__mount__point.html | 30 +- structcgroup__rule.html | 26 +- structcgroup__rule__list.html | 26 +- structcgroup__rules__data.html | 26 +- structcgroup__stat.html | 26 +- structcgroup__string__list.html | 26 +- structcgroup__systemd__opts.html | 26 +- structcgroup__systemd__scope__opts.html | 32 +- structcgroup__tree__handle.html | 26 +- structcontrol__value.html | 26 +- structcontroller__data.html | 34 +- structdeny__list__type.html | 26 +- structexample__opts.html | 26 +- structext__cgroup__record.html | 26 +- structparent__info.html | 26 +- structunchanged__pid.html | 26 +- systemd_8h_source.html | 23 +- tabs.css | 2 +- tasks_8h_source.html | 23 +- todo.html | 26 +- tools-common_8h_source.html | 23 +- tools_8h_source.html | 23 +- topics.html | 26 +- 171 files changed, 5071 insertions(+), 2826 deletions(-) create mode 100644 clipboard.js create mode 100644 cookie.js create mode 100644 doxygen_crawl.html create mode 100644 navtree.css create mode 100644 resize.js diff --git a/abstraction-common_8h_source.html b/abstraction-common_8h_source.html index c1eb4ee7..3bf4601f 100644 --- a/abstraction-common_8h_source.html +++ b/abstraction-common_8h_source.html @@ -3,12 +3,16 @@ - + libcgroup: src/abstraction-common.h Source File + + + + @@ -29,26 +33,31 @@ - + + @@ -77,6 +86,7 @@ $(document).ready(function() { init_codefold(0); }); +
abstraction-common.h
@@ -148,7 +158,8 @@ $(document).ready(function() { init_codefold(0); });
+ diff --git a/abstraction-map_8h_source.html b/abstraction-map_8h_source.html index 5d42cd36..e0b2666e 100644 --- a/abstraction-map_8h_source.html +++ b/abstraction-map_8h_source.html @@ -3,12 +3,16 @@ - + libcgroup: src/abstraction-map.h Source File + + + + @@ -29,26 +33,31 @@ - + + @@ -77,6 +86,7 @@ $(document).ready(function() { init_codefold(0); }); +
abstraction-map.h
@@ -120,7 +130,8 @@ $(document).ready(function() { init_codefold(0); });
+ diff --git a/annotated.html b/annotated.html index 22779c7a..3ab4fe4d 100644 --- a/annotated.html +++ b/annotated.html @@ -3,12 +3,16 @@ - + libcgroup: Data Structures + + + + @@ -29,24 +33,35 @@ - + + +
+
Here are the data structures with brief descriptions:
-
[detail level 123]
- - +
[detail level 123]
 Nftests
 Ncgroup
+ + - + - + - + - + - + - + - + @@ -148,7 +163,8 @@ $(function() { + diff --git a/cgrulesengd_8h_source.html b/cgrulesengd_8h_source.html index 48e0bea5..8149552e 100644 --- a/cgrulesengd_8h_source.html +++ b/cgrulesengd_8h_source.html @@ -3,12 +3,16 @@ - +libcgroup: src/daemon/cgrulesengd.h Source File + + + + @@ -29,26 +33,31 @@
 Nftests
 Ncgroup
 CCgroup
 CCgroupError
 CCgroupMount
 CCgroupVersion
 Nconfig
 Nconfig
 CConfig
 CConfigError
 Ncontainer
 Ncontainer
 CContainer
 CContainerError
 Ncontroller
 Ncontroller
 CController
 Nlog
 Nlog
 CLog
 Nprocess
 Nprocess
 CProcess
 Nrun
 Nrun
 CRun
 CRunError
 Nsystemd
 Nsystemd
 CSystemd
 CAPIArgsTest
 Carray_parent_info
- + + @@ -77,6 +86,7 @@ $(document).ready(function() { init_codefold(0); });
+
cgrulesengd.h
@@ -143,7 +153,8 @@ $(document).ready(function() { init_codefold(0); });
+ diff --git a/classAPIArgsTest.html b/classAPIArgsTest.html index 28d24dc2..13f78d49 100644 --- a/classAPIArgsTest.html +++ b/classAPIArgsTest.html @@ -3,12 +3,16 @@ - + libcgroup: APIArgsTest Class Reference + + + + @@ -29,23 +33,33 @@ - + + +
+
@@ -96,7 +111,8 @@ void SetUp () override
+
diff --git a/classAPIArgsTest.png b/classAPIArgsTest.png index 237780a347dc70e331d33f065605d240cad4aaf6..d5dc198a5154b1b51dc457ea196d1acb8e035797 100644 GIT binary patch delta 21 dc-ni&{E&Hq9oK^g5B~rEZ+bRt$wrTvi~xfH3(Wuk delta 21 dc-ni&{E&Hq9oK;a2mb&6A3W*uij5vK83BNH3()`o diff --git a/classBuildPathV1Test.html b/classBuildPathV1Test.html index 3becd4dd..39a69297 100644 --- a/classBuildPathV1Test.html +++ b/classBuildPathV1Test.html @@ -3,12 +3,16 @@ - + libcgroup: BuildPathV1Test Class Reference + + + + @@ -29,23 +33,33 @@ - + + +
+
@@ -83,7 +98,7 @@ Inheritance diagram for BuildPathV1Test:
- +

Protected Member Functions

void SetUp () override
void SetUp () override
 

Detailed Description

@@ -102,7 +117,7 @@ Protected Member Functions void BuildPathV1Test::SetUp ( - ) + ) @@ -113,10 +128,10 @@ Protected Member Functions

Setup this test case

-

This test case calls cg_build_path() to generate various cgroup paths. The SetUp() routine creates a simple mount table that can be used to verify cg_build_path() behavior.

+

This test case calls cg_build_path() to generate various cgroup paths. The SetUp() routine creates a simple mount table that can be used to verify cg_build_path() behavior.

cg_mount_table for this test is as follows:

-name mount_point index

+name mount_point index

controller0 /sys/fs/cgroup/controller0 0 controller1 /sys/fs/cgroup/controller1 1 controller2 /sys/fs/cgroup/controller2 2 controller3 /sys/fs/cgroup/controller3 3 controller4 /sys/fs/cgroup/controller4 4 controller5 /sys/fs/cgroup/controller5 5

Note that controllers 1 and 5 are also given namespaces

@@ -128,7 +143,8 @@ name mount_point index
+ diff --git a/classBuildPathV1Test.png b/classBuildPathV1Test.png index fd6944d002f6a13b2117ceb7e9c1267557f6dc1f..3c8e630737acf579ede2bccc1ba4818d510ae38b 100644 GIT binary patch delta 21 dc-m`cX=j;W$MxXBga7~ko1P6@ve9EdBLH<{3qb$? delta 21 dc-m`cX=j;W$93Sqf&c&i2T!`ZVxz}?MgVfy3q=3` diff --git a/classBuildTasksProcPathTest.html b/classBuildTasksProcPathTest.html index 86afda55..cf20f806 100644 --- a/classBuildTasksProcPathTest.html +++ b/classBuildTasksProcPathTest.html @@ -3,12 +3,16 @@ - + libcgroup: BuildTasksProcPathTest Class Reference + + + + @@ -29,23 +33,33 @@ - + + +
+
@@ -83,7 +98,7 @@ Inheritance diagram for BuildTasksProcPathTest:
- +

Protected Member Functions

void SetUp () override
void SetUp () override
 

Detailed Description

@@ -102,7 +117,7 @@ Protected Member Functions void BuildTasksProcPathTest::SetUp ( - ) + ) @@ -113,10 +128,10 @@ Protected Member Functions

Setup this test case

-

This test case calls cg_build_path() to generate various cgroup paths. The SetUp() routine creates a simple mount table that can be used to verify cg_build_path() behavior.

+

This test case calls cg_build_path() to generate various cgroup paths. The SetUp() routine creates a simple mount table that can be used to verify cg_build_path() behavior.

cg_mount_table for this test is as follows:

-name mount_point index version

+name mount_point index version

controller0 /sys/fs/cgroup/controller0 0 UNK controller1 /sys/fs/cgroup/controller1 1 2 controller2 /sys/fs/cgroup/controller2 2 1 controller3 /sys/fs/cgroup/controller3 3 2 controller4 /sys/fs/cgroup/controller4 4 1 controller5 /sys/fs/cgroup/controller5 5 2

Note that controllers 1 and 4 are also given namespaces

@@ -128,7 +143,8 @@ name mount_point index version
+ diff --git a/classBuildTasksProcPathTest.png b/classBuildTasksProcPathTest.png index 252dfdd17b4496eeada9f60bf7d44c7ff38e0670..c04d21bb025ea5fda17d63f00df4f60d8a77ed8b 100644 GIT binary patch delta 21 dc-s5S@|k6V9oK^g5B~rEZ+bRt$wm)tCIE#T3x)sy delta 21 dc-s5S@|k6V9oK;a2mb&6A3W*uij5xHOaOwB3yJ^$ diff --git a/classCgroupCompareIgnoreRuleTest.html b/classCgroupCompareIgnoreRuleTest.html index 92ab55ea..bc47617f 100644 --- a/classCgroupCompareIgnoreRuleTest.html +++ b/classCgroupCompareIgnoreRuleTest.html @@ -3,12 +3,16 @@ - + libcgroup: CgroupCompareIgnoreRuleTest Class Reference + + + + @@ -29,23 +33,33 @@ - + + +
+
CgroupCompareIgnoreRuleTest Class Reference
@@ -87,7 +102,8 @@ Inheritance diagram for CgroupCompareIgnoreRuleTest:
+ diff --git a/classCgroupCompareIgnoreRuleTest.png b/classCgroupCompareIgnoreRuleTest.png index 13729fe1c73e547a4a1482396c886c7a9349477e..6d75ef33318f86f9ec53ef1641c9c48d81d6c4ba 100644 GIT binary patch delta 21 dc-lL}dWdy`9oK^g5B~rEZ+bRt$wrSVCIEgo3v~bh delta 21 dc-lL}dWdy`9oK;a2mb&6A3W*uij5vsOaObW3wZzl diff --git a/classCgroupCreateCgroupTest.html b/classCgroupCreateCgroupTest.html index 0baca7ea..ea5d6aaf 100644 --- a/classCgroupCreateCgroupTest.html +++ b/classCgroupCreateCgroupTest.html @@ -3,12 +3,16 @@ - + libcgroup: CgroupCreateCgroupTest Class Reference + + + + @@ -29,23 +33,33 @@ - + + +
+
Protected Member Functions | @@ -106,7 +121,8 @@ static int unlink_cb (
+
diff --git a/classCgroupCreateCgroupTest.png b/classCgroupCreateCgroupTest.png index 5b725be7c8d40feafc37c688228c47993509fefd..20a82495bdd3c50cbcdc5a0ba05150e6cf592b08 100644 GIT binary patch delta 21 dc-m`WZDE~Y$MxXBga7~ko1P6@veCna2>^5q3cCOR delta 21 dc-m`WZDE~Y$93Sqf&c&i2T!`ZVxxx*699363cmmV diff --git a/classCgroupGetCgroupTest.html b/classCgroupGetCgroupTest.html index 09fba99c..58d122ff 100644 --- a/classCgroupGetCgroupTest.html +++ b/classCgroupGetCgroupTest.html @@ -3,12 +3,16 @@ - + libcgroup: CgroupGetCgroupTest Class Reference + + + + @@ -29,23 +33,33 @@
- + + +
+
Protected Member Functions | @@ -109,7 +124,8 @@ static int unlink_cb (
+
diff --git a/classCgroupGetCgroupTest.png b/classCgroupGetCgroupTest.png index 0de2ca69405c1dd4746f611384c18f715070de93..891908dd8e942a43534b5536167adf0bb9cf1e77 100644 GIT binary patch delta 21 dc-ni(@{(nO9oK^g5B~rEZ+bRt$wm)FCIEwY3upiU delta 21 dc-ni(@{(nO9oK;a2mb&6A3W*uij5wMOaOrG3v2)Y diff --git a/classCgroupProcessV1MntTest.html b/classCgroupProcessV1MntTest.html index eaa1557b..2b0b8053 100644 --- a/classCgroupProcessV1MntTest.html +++ b/classCgroupProcessV1MntTest.html @@ -3,12 +3,16 @@ - + libcgroup: CgroupProcessV1MntTest Class Reference + + + + @@ -29,23 +33,33 @@
- + + +
+
CgroupProcessV1MntTest Class Reference
@@ -84,7 +99,8 @@ Inheritance diagram for CgroupProcessV1MntTest:
+ diff --git a/classCgroupProcessV1MntTest.png b/classCgroupProcessV1MntTest.png index f0acd422aaf1c694d7efdfefa4ef8f5d11acf7fc..0ced06f3bf680ea0d4c87afcd56e7c0b52781da8 100644 GIT binary patch delta 21 dc-ouFI+b;T9oK^g5B~rEZ+bRt$wm)fCIEKU3hn>^ delta 21 dc-ouFI+b;T9oK;a2mb&6A3W*uij5w=OaOFC3i1E| diff --git a/classCgroupProcessV2MntTest.html b/classCgroupProcessV2MntTest.html index 86ec4b42..246401f7 100644 --- a/classCgroupProcessV2MntTest.html +++ b/classCgroupProcessV2MntTest.html @@ -3,12 +3,16 @@ - + libcgroup: CgroupProcessV2MntTest Class Reference + + + + @@ -29,23 +33,33 @@ - + + +
+
Protected Member Functions | @@ -109,7 +124,8 @@ static int unlink_cb (
+
diff --git a/classCgroupProcessV2MntTest.png b/classCgroupProcessV2MntTest.png index c21d985fd2bd05e58bd65a365fd38e9b706ee267..f45a704d2f98c8ae219ceb0545bc00045be64cbf 100644 GIT binary patch delta 21 dc-ouCI*)aN9oK^g5B~rEZ+bRt$wrSbCIEO)3kd)K delta 21 dc-ouCI*)aN9oK;a2mb&6A3W*uij5v&OaOJo3k?7O diff --git a/classCgroupV2ControllerEnabled.html b/classCgroupV2ControllerEnabled.html index 11898ea6..cff2e163 100644 --- a/classCgroupV2ControllerEnabled.html +++ b/classCgroupV2ControllerEnabled.html @@ -3,12 +3,16 @@ - + libcgroup: CgroupV2ControllerEnabled Class Reference + + + + @@ -29,23 +33,33 @@
- + + +
+
Protected Member Functions | @@ -112,7 +127,8 @@ static int unlink_cb (
+
diff --git a/classCgroupV2ControllerEnabled.png b/classCgroupV2ControllerEnabled.png index 43bb8bf3873e4f36836d3c7ad2a4142c10629024..ab60dc28e4d20d6a030df90d443827c86f6579e0 100644 GIT binary patch delta 21 dc-mXVx{7sz9oK^g5B~rEZ+bRt$wrSPCIEU!3oQTu delta 21 dc-mXVx{7sz9oK;a2mb&6A3W*uij5vgOaOPi3o!ry diff --git a/classCgsetParseRFlagTest.html b/classCgsetParseRFlagTest.html index 8cda39e3..d2ba4df5 100644 --- a/classCgsetParseRFlagTest.html +++ b/classCgsetParseRFlagTest.html @@ -3,12 +3,16 @@ - + libcgroup: CgsetParseRFlagTest Class Reference + + + + @@ -29,23 +33,33 @@
- + + +
+
CgsetParseRFlagTest Class Reference
@@ -84,7 +99,8 @@ Inheritance diagram for CgsetParseRFlagTest:
+ diff --git a/classCgsetParseRFlagTest.png b/classCgsetParseRFlagTest.png index b34f608d234a50e95f0962f23b9e53d51c06df30..a8e05f32cbcaa70039b829a9772b96d895049f5c 100644 GIT binary patch delta 21 dc-p(ia*t(#9oK^g5B~rEZ+bRt$wm(`CIEq|3r7F| delta 21 dc-p(ia*t(#9oK;a2mb&6A3W*uij5v(OaOl$3rhe1 diff --git a/classChownChmodTasksTest.html b/classChownChmodTasksTest.html index 4ed36451..5743b352 100644 --- a/classChownChmodTasksTest.html +++ b/classChownChmodTasksTest.html @@ -3,12 +3,16 @@ - + libcgroup: ChownChmodTasksTest Class Reference + + + + @@ -29,23 +33,33 @@ - + + +
+
Protected Member Functions | @@ -106,7 +121,8 @@ static int unlink_cb (
+
diff --git a/classChownChmodTasksTest.png b/classChownChmodTasksTest.png index fc5c9864b0f20be2413f78bec558a2c63ead8588..7c47a79b40bac2a2f2905bd93a5bdd24abcfbd6c 100644 GIT binary patch delta 21 dc-ni#@``1G9oK^g5B~rEZ+bRt$wm()CIEw?3u^!X delta 21 dc-ni#@``1G9oK;a2mb&6A3W*uij5vhOaOrw3vU1b diff --git a/classGetCgroupsFromProcCgroupsTest.html b/classGetCgroupsFromProcCgroupsTest.html index 8c2f485a..61b967a6 100644 --- a/classGetCgroupsFromProcCgroupsTest.html +++ b/classGetCgroupsFromProcCgroupsTest.html @@ -3,12 +3,16 @@ - + libcgroup: GetCgroupsFromProcCgroupsTest Class Reference + + + + @@ -29,23 +33,33 @@
- + + +
+
GetCgroupsFromProcCgroupsTest Class Reference
@@ -87,7 +102,8 @@ Inheritance diagram for GetCgroupsFromProcCgroupsTest:
+ diff --git a/classGetCgroupsFromProcCgroupsTest.png b/classGetCgroupsFromProcCgroupsTest.png index 21051d6da0543fad271fa0fb62ae576322aabeb3..b4f3a9a271f9d866b48931d1d8c1fb741782d458 100644 GIT binary patch delta 21 dc-lL`dV+O=9oK^g5B~rEZ+bRt$wrR`CIEjl3x@yz delta 21 dc-lL`dV+O=9oK;a2mb&6A3W*uij5u(OaOeT3yS~% diff --git a/classGetSubtreeControlTest.html b/classGetSubtreeControlTest.html index 8051e3a4..d86931cd 100644 --- a/classGetSubtreeControlTest.html +++ b/classGetSubtreeControlTest.html @@ -3,12 +3,16 @@ - + libcgroup: GetSubtreeControlTest Class Reference + + + + @@ -29,23 +33,33 @@ - + + +
+
Protected Member Functions | @@ -106,7 +121,8 @@ static int unlink_cb (
+
diff --git a/classGetSubtreeControlTest.png b/classGetSubtreeControlTest.png index fc721457c50240187f883bd8b6c565a5e00447a6..ed94499aa2cac35d90306daf06d29619e2f2a34c 100644 GIT binary patch delta 21 dc-ni)@|0zQ9oK^g5B~rEZ+bRt$wm)ZCIEua3tRvI delta 21 dc-ni)@|0zQ9oK;a2mb&6A3W*uij5w!OaOpI3t#{M diff --git a/classParseRulesOptionsTest.html b/classParseRulesOptionsTest.html index 807c6dd6..74069ab3 100644 --- a/classParseRulesOptionsTest.html +++ b/classParseRulesOptionsTest.html @@ -3,12 +3,16 @@ - + libcgroup: ParseRulesOptionsTest Class Reference + + + + @@ -29,23 +33,33 @@
- + + +
+
ParseRulesOptionsTest Class Reference
@@ -87,7 +102,8 @@ Inheritance diagram for ParseRulesOptionsTest:
+ diff --git a/classParseRulesOptionsTest.png b/classParseRulesOptionsTest.png index d014aee239df59a3e8bc9e903e2d254b42eee940..3851f00374ba85a7e5ade22924168177023bd084 100644 GIT binary patch delta 21 dc-s5P@{?tP9oK^g5B~rEZ+bRt$wm)DCIE&Q3zz@^ delta 21 dc-s5P@{?tP9oK;a2mb&6A3W*uij5wIOaOz83!DG| diff --git a/classProcnameWildcardTest.html b/classProcnameWildcardTest.html index e23ddda8..9fdedf26 100644 --- a/classProcnameWildcardTest.html +++ b/classProcnameWildcardTest.html @@ -3,12 +3,16 @@ - + libcgroup: ProcnameWildcardTest Class Reference + + + + @@ -29,23 +33,33 @@ - + + +
+
ProcnameWildcardTest Class Reference
@@ -87,7 +102,8 @@ Inheritance diagram for ProcnameWildcardTest:
+ diff --git a/classProcnameWildcardTest.png b/classProcnameWildcardTest.png index e6e7505464b8272ef4bc407c69d23ab034912fb3..81f49548f540634694d4758e4e788bfa6b14e12b 100644 GIT binary patch delta 21 dc-ni(@{(nO9oK^g5B~rEZ+bRt$wm)FCIEwY3upiU delta 21 dc-ni(@{(nO9oK;a2mb&6A3W*uij5wMOaOrG3v2)Y diff --git a/classSetValuesRecursiveTest.html b/classSetValuesRecursiveTest.html index 85033764..a409e107 100644 --- a/classSetValuesRecursiveTest.html +++ b/classSetValuesRecursiveTest.html @@ -3,12 +3,16 @@ - + libcgroup: SetValuesRecursiveTest Class Reference + + + + @@ -29,23 +33,33 @@ - + + +
+
Protected Member Functions | @@ -106,7 +121,8 @@ static int unlink_cb (
+
diff --git a/classSetValuesRecursiveTest.png b/classSetValuesRecursiveTest.png index abff57db491e720fadd93169d65166e668a63433..843e0b57ec3607244591fe6f6366571bf48ff5d6 100644 GIT binary patch delta 21 dc-s5V@}Fgb9oK^g5B~rEZ+bRt$wm)zCIE*N3#tGB delta 21 dc-s5V@}Fgb9oK;a2mb&6A3W*uij5xTOaO$53$6eF diff --git a/classSubtreeControlTest.html b/classSubtreeControlTest.html index b65eb6a8..5d046e06 100644 --- a/classSubtreeControlTest.html +++ b/classSubtreeControlTest.html @@ -3,12 +3,16 @@ - + libcgroup: SubtreeControlTest Class Reference + + + + @@ -29,23 +33,33 @@
- + + +
+
Protected Member Functions | @@ -106,7 +121,8 @@ static int unlink_cb (
+
diff --git a/classSubtreeControlTest.png b/classSubtreeControlTest.png index a828664b26f528b1eaba0114b5c5352966e83df1..3e52537c119d1a29eded6d4be3287c4f02dec17c 100644 GIT binary patch delta 21 dc-ouCGLL0~9oK^g5B~rEZ+bRt$wrTBi~xBl3x)sy delta 21 dc-ouCGLL0~9oK;a2mb&6A3W*uij5xE7y)*k3yJ^$ diff --git a/classes.html b/classes.html index 77553530..12fb51f9 100644 --- a/classes.html +++ b/classes.html @@ -3,12 +3,16 @@ - + libcgroup: Data Structure Index + + + + @@ -29,24 +33,35 @@
- + + +
+
+
diff --git a/classftests_1_1cgroup_1_1Cgroup.html b/classftests_1_1cgroup_1_1Cgroup.html index 59a3e04e..6f0f23c6 100644 --- a/classftests_1_1cgroup_1_1Cgroup.html +++ b/classftests_1_1cgroup_1_1Cgroup.html @@ -3,12 +3,16 @@ - + libcgroup: ftests.cgroup.Cgroup Class Reference + + + + @@ -29,23 +33,33 @@
- + + + +
Public Member Functions | @@ -122,13 +137,13 @@ Static Public Member Functions  delete (config, controller_list, cgname, recursive=False, ignore_systemd=False)   - set (config, cgname=None, setting=None, value=None, copy_from=None, cghelp=False, ignore_systemd=False, recursive=False) + set (config, cgname=None, setting=None, value=None, copy_from=None, cghelp=False, ignore_systemd=False, recursive=False)   - xset (config, cgname=None, setting=None, value=None, copy_from=None, version=CgroupVersion.CGROUP_UNK, cghelp=False, ignore_unmappable=False, ignore_systemd=False, recursive=False) + xset (config, cgname=None, setting=None, value=None, copy_from=None, version=CgroupVersion.CGROUP_UNK, cghelp=False, ignore_unmappable=False, ignore_systemd=False, recursive=False)   - get (config, controller=None, cgname=None, setting=None, print_headers=True, values_only=False, all_controllers=False, cghelp=False, ignore_systemd=False) + get (config, controller=None, cgname=None, setting=None, print_headers=True, values_only=False, all_controllers=False, cghelp=False, ignore_systemd=False)   - xget (config, controller=None, cgname=None, setting=None, print_headers=True, values_only=False, all_controllers=False, version=CgroupVersion.CGROUP_UNK, cghelp=False, ignore_unmappable=False, ignore_systemd=False) + xget (config, controller=None, cgname=None, setting=None, print_headers=True, values_only=False, all_controllers=False, version=CgroupVersion.CGROUP_UNK, cghelp=False, ignore_unmappable=False, ignore_systemd=False)    classify (config, controller, cgname, pid_list, sticky=False, cancel_sticky=False, ignore_systemd=False, replace_idle=False) @@ -145,7 +160,7 @@ Static Public Member Functions  init_cgrules (config)   - configparser (config, load_file=None, load_dir=None, dflt_usr=None, dflt_grp=None, dperm=None, fperm=None, cghelp=False, tperm=None, tasks_usr=None, tasks_grp=None) + configparser (config, load_file=None, load_dir=None, dflt_usr=None, dflt_grp=None, dperm=None, fperm=None, cghelp=False, tperm=None, tasks_usr=None, tasks_grp=None)    get_controller_mount_point (ctrl_name) @@ -162,14 +177,14 @@ Static Public Member Functions  lscgroup (config, cghelp=False, controller=None, path=None)   - cgexec (config, controller, cgname, cmdline, sticky=False, cghelp=False, ignore_systemd=False, replace_idle=False) + cgexec (config, controller, cgname, cmdline, sticky=False, cghelp=False, ignore_systemd=False, replace_idle=False)    get_pids_in_cgroup (config, cgroup, controller)   - get_and_validate (config, cgname, setting, expected_value, ignore_systemd=False) + get_and_validate (config, cgname, setting, expected_value, ignore_systemd=False)   - set_and_validate (config, cgname, setting, value, ignore_systemd=False) + set_and_validate (config, cgname, setting, value, ignore_systemd=False)    get_cgroup_mode (config) @@ -187,13 +202,13 @@ Static Public Member Functions

Data Fields

namename = name   controllerscontrollers = dict()   childrenchildren = list()  

Member Function Documentation

@@ -209,55 +224,42 @@ Data Fields ftests.cgroup.Cgroup.cgexec ( -   - config, + config, -   - controller, + controller, -   - cgname, + cgname, -   - cmdline, + cmdline, -   - sticky = False, + sticky = False, -   - cghelp = False, + cghelp = False, -   - ignore_systemd = False, + ignore_systemd = False, -   - replace_idle = False  - - - - ) - + replace_idle = False ) @@ -282,73 +284,57 @@ Data Fields ftests.cgroup.Cgroup.configparser ( -   - config, + config, -   - load_file = None, + load_file = None, -   - load_dir = None, + load_dir = None, -   - dflt_usr = None, + dflt_usr = None, -   - dflt_grp = None, + dflt_grp = None, -   - dperm = None, + dperm = None, -   - fperm = None, + fperm = None, -   - cghelp = False, + cghelp = False, -   - tperm = None, + tperm = None, -   - tasks_usr = None, + tasks_usr = None, -   - tasks_grp = None  - - - - ) - + tasks_grp = None ) @@ -387,61 +373,47 @@ cgconfigparser -l improper_conf_file 021 ftests.cgroup.Cgroup.get ( -   - config, + config, -   - controller = None, + controller = None, -   - cgname = None, + cgname = None, -   - setting = None, + setting = None, -   - print_headers = True, + print_headers = True, -   - values_only = False, + values_only = False, -   - all_controllers = False, + all_controllers = False, -   - cghelp = False, + cghelp = False, -   - ignore_systemd = False  - - - - ) - + ignore_systemd = False ) @@ -484,37 +456,27 @@ various invalid flag combinations 016 ftests.cgroup.Cgroup.get_and_validate ( -   - config, + config, -   - cgname, + cgname, -   - setting, + setting, -   - expected_value, + expected_value, -   - ignore_systemd = False  - - - - ) - + ignore_systemd = False ) @@ -543,55 +505,42 @@ raise a CgroupError if the comparison fails ftests.cgroup.Cgroup.set ( -   - config, + config, -   - cgname = None, + cgname = None, -   - setting = None, + setting = None, -   - value = None, + value = None, -   - copy_from = None, + copy_from = None, -   - cghelp = False, + cghelp = False, -   - ignore_systemd = False, + ignore_systemd = False, -   - recursive = False  - - - - ) - + recursive = False ) @@ -629,37 +578,27 @@ various invalid flag combinations 027 ftests.cgroup.Cgroup.set_and_validate ( -   - config, + config, -   - cgname, + cgname, -   - setting, + setting, -   - value, + value, -   - ignore_systemd = False  - - - - ) - + ignore_systemd = False ) @@ -688,73 +627,57 @@ raise a CgroupError if the comparison fails ftests.cgroup.Cgroup.xget ( -   - config, + config, -   - controller = None, + controller = None, -   - cgname = None, + cgname = None, -   - setting = None, + setting = None, -   - print_headers = True, + print_headers = True, -   - values_only = False, + values_only = False, -   - all_controllers = False, + all_controllers = False, -   - version = CgroupVersion.CGROUP_UNK, + version = CgroupVersion.CGROUP_UNK, -   - cghelp = False, + cghelp = False, -   - ignore_unmappable = False, + ignore_unmappable = False, -   - ignore_systemd = False  - - - - ) - + ignore_systemd = False ) @@ -782,67 +705,52 @@ str: The stdout result of cgxget ftests.cgroup.Cgroup.xset ( -   - config, + config, -   - cgname = None, + cgname = None, -   - setting = None, + setting = None, -   - value = None, + value = None, -   - copy_from = None, + copy_from = None, -   - version = CgroupVersion.CGROUP_UNK, + version = CgroupVersion.CGROUP_UNK, -   - cghelp = False, + cghelp = False, -   - ignore_unmappable = False, + ignore_unmappable = False, -   - ignore_systemd = False, + ignore_systemd = False, -   - recursive = False  - - - - ) - + recursive = False ) @@ -861,7 +769,8 @@ str: The stdout result of cgxget
+
diff --git a/classftests_1_1cgroup_1_1Cgroup.png b/classftests_1_1cgroup_1_1Cgroup.png index 41f7ca99d9d8a73ce08cc680f0858a5afaa55136..0f4dde95dbbea50598c17cc0e6073c521373b68a 100644 GIT binary patch delta 21 dc-ni&{E&Hq9oK^g5B~rEZ+bRt$wrTvi~xfH3(Wuk delta 21 dc-ni&{E&Hq9oK;a2mb&6A3W*uij5vK83BNH3()`o diff --git a/classftests_1_1cgroup_1_1CgroupError.html b/classftests_1_1cgroup_1_1CgroupError.html index 5493d203..7f79e567 100644 --- a/classftests_1_1cgroup_1_1CgroupError.html +++ b/classftests_1_1cgroup_1_1CgroupError.html @@ -3,12 +3,16 @@ - + libcgroup: ftests.cgroup.CgroupError Class Reference + + + + @@ -29,23 +33,33 @@
- + + + +
@@ -97,7 +112,8 @@ Public Member Functions
+
diff --git a/classftests_1_1cgroup_1_1CgroupError.png b/classftests_1_1cgroup_1_1CgroupError.png index df30ca7aca8d9558c32a8503b6a48a87e38ca665..388eebe7b74ef88dbc741364ea82889e3321ae5f 100644 GIT binary patch delta 21 dc-p(ia*t(#9oK^g5B~rEZ+bRt$wm(`CIEq|3r7F| delta 21 dc-p(ia*t(#9oK;a2mb&6A3W*uij5v(OaOl$3rhe1 diff --git a/classftests_1_1cgroup_1_1CgroupMount.html b/classftests_1_1cgroup_1_1CgroupMount.html index 186e3235..f03ee6ed 100644 --- a/classftests_1_1cgroup_1_1CgroupMount.html +++ b/classftests_1_1cgroup_1_1CgroupMount.html @@ -3,12 +3,16 @@ - + libcgroup: ftests.cgroup.CgroupMount Class Reference + + + + @@ -29,23 +33,33 @@ - + + + +
Public Member Functions | @@ -98,14 +113,14 @@ Public Member Functions

Data Fields

versionversion = CgroupVersion.CGROUP_V1   mount_pointmount_point = entries[1]   -controller -  + +str controller = controller + 
The documentation for this class was generated from the following file:
  • tests/ftests/cgroup.py
  • @@ -113,7 +128,8 @@ Data Fields
+
diff --git a/classftests_1_1cgroup_1_1CgroupMount.png b/classftests_1_1cgroup_1_1CgroupMount.png index 0a3aa8c6217d0a6d3ab46d43fedcf3eaa71d185e..955f0dfbd7bd3e5620863f29385299df01fc3d07 100644 GIT binary patch delta 21 dc-lM7a++m=9oK^g5B~rEZ+bRt$wm)mCIEhn3l0DP delta 21 dc-lM7a++m=9oK;a2mb&6A3W*uij5x3OaOcV3labT diff --git a/classftests_1_1cgroup_1_1CgroupVersion.html b/classftests_1_1cgroup_1_1CgroupVersion.html index 34f084af..583f47db 100644 --- a/classftests_1_1cgroup_1_1CgroupVersion.html +++ b/classftests_1_1cgroup_1_1CgroupVersion.html @@ -3,12 +3,16 @@ - + libcgroup: ftests.cgroup.CgroupVersion Class Reference + + + + @@ -29,23 +33,33 @@
- + + + +
Static Public Member Functions | @@ -110,7 +125,8 @@ int CGROUP_V2 = 2
+
diff --git a/classftests_1_1cgroup_1_1CgroupVersion.png b/classftests_1_1cgroup_1_1CgroupVersion.png index a3d8d7eb6f4e68ae22cbe25f9a5c061604476c6e..910dca980f42a9b45d70a0e095652b4422952316 100644 GIT binary patch delta 21 dc-lM9a-L;^9oK^g5B~rEZ+bRt$wm)$CIEjl3mO0b delta 21 dc-lM9a-L;^9oK;a2mb&6A3W*uij5xZOaOeT3myOf diff --git a/classftests_1_1config_1_1Config.html b/classftests_1_1config_1_1Config.html index 7c43a88b..6e963176 100644 --- a/classftests_1_1config_1_1Config.html +++ b/classftests_1_1config_1_1Config.html @@ -3,12 +3,16 @@ - + libcgroup: ftests.config.Config Class Reference + + + + @@ -29,23 +33,33 @@
- + + + +
Public Member Functions | @@ -98,32 +113,32 @@ Public Member Functions

Data Fields

argsargs = args   -skip_list -  + +list skip_list = [] +  containercontainer = container   processprocess = Process()   ftest_dirftest_dir = os.path.dirname(os.path.abspath(__file__))   libcg_dirlibcg_dir = os.path.dirname(self.ftest_dir)   test_suitetest_suite = consts.TESTS_RUN_ALL_SUITES   test_numtest_num = consts.TESTS_RUN_ALL   -verbose -  + +bool verbose = False + 
The documentation for this class was generated from the following file:
  • tests/ftests/config.py
  • @@ -131,7 +146,8 @@ Data Fields
+
diff --git a/classftests_1_1config_1_1Config.png b/classftests_1_1config_1_1Config.png index 5d3e7844ee29560279c2906375d273adb92d163c..7ec433cd68c142632139b9500c2ec65cc1217de2 100644 GIT binary patch delta 21 dc-ni+{Fr%y9oK^g5B~rEZ+bRt$wrUai~xgG3)27q delta 21 dc-ni+{Fr%y9oK;a2mb&6A3W*uij5w#83BOG3)cVu diff --git a/classftests_1_1config_1_1ConfigError.html b/classftests_1_1config_1_1ConfigError.html index b59b2ea2..c9908c57 100644 --- a/classftests_1_1config_1_1ConfigError.html +++ b/classftests_1_1config_1_1ConfigError.html @@ -3,12 +3,16 @@ - + libcgroup: ftests.config.ConfigError Class Reference + + + + @@ -29,23 +33,33 @@
- + + + +
@@ -100,7 +115,8 @@ Public Member Functions
+
diff --git a/classftests_1_1config_1_1ConfigError.png b/classftests_1_1config_1_1ConfigError.png index 9e5961be695791f65e40697867d2f4f6cdf233e2..cd7fe1dcbef35947c743f02a423aca016732b0a9 100644 GIT binary patch delta 21 dc-lL|a)xDs9oK^g5B~rEZ+bRt$wm(rCIEi63lRVS delta 21 dc-lL|a)xDs9oK;a2mb&6A3W*uij5vDOaOc<3l#tW diff --git a/classftests_1_1container_1_1Container.html b/classftests_1_1container_1_1Container.html index 6ffd857b..7b5c53bd 100644 --- a/classftests_1_1container_1_1Container.html +++ b/classftests_1_1container_1_1Container.html @@ -3,12 +3,16 @@ - + libcgroup: ftests.container.Container Class Reference + + + + @@ -29,23 +33,33 @@ - + + + +
Public Member Functions | @@ -117,25 +132,25 @@ Public Member Functions

Data Fields

namename = name   -privileged -  + +bool privileged = True +  stop_timeoutstop_timeout = stop_timeout   archarch = arch   distrodistro = distro   releaserelease = release   libcg_dirlibcg_dir = os.path.dirname(tests_dir)   + diff --git a/classftests_1_1container_1_1Container.png b/classftests_1_1container_1_1Container.png index dd61f17d93208dcb7aed087fe50e3f104adefe03..b686576187381453fb406a4afc175dfd7f1bd10f 100644 GIT binary patch delta 21 dc-mXRvVvuT9oK^g5B~rEZ+bRt$wrR{i~xGg3#0%5 delta 21 dc-mXRvVvuT9oK;a2mb&6A3W*uij5u*7y)=f3#b49 diff --git a/classftests_1_1container_1_1ContainerError.html b/classftests_1_1container_1_1ContainerError.html index ba958ff0..bd495005 100644 --- a/classftests_1_1container_1_1ContainerError.html +++ b/classftests_1_1container_1_1ContainerError.html @@ -3,12 +3,16 @@ - +libcgroup: ftests.container.ContainerError Class Reference + + + + @@ -29,23 +33,33 @@

@@ -150,7 +165,8 @@ Protected Member Functions

- + + +
+
@@ -100,7 +115,8 @@ Public Member Functions
+
diff --git a/classftests_1_1container_1_1ContainerError.png b/classftests_1_1container_1_1ContainerError.png index 8c63a67c7651cd858a584fac1836d530c21caeae..e4161275dd3c896e5cf1a500b60b807c4a442564 100644 GIT binary patch delta 21 dc-s5Q@|9(R9oK^g5B~rEZ+bRt$wm)dCIE$S3yc5& delta 21 dc-s5Q@|9(R9oK;a2mb&6A3W*uij5w+OaOxA3y=T+ diff --git a/classftests_1_1controller_1_1Controller.html b/classftests_1_1controller_1_1Controller.html index f51d7b03..9170852a 100644 --- a/classftests_1_1controller_1_1Controller.html +++ b/classftests_1_1controller_1_1Controller.html @@ -3,12 +3,16 @@ - + libcgroup: ftests.controller.Controller Class Reference + + + + @@ -29,23 +33,33 @@
- + + + +
Public Member Functions | @@ -101,19 +116,39 @@ Public Member Functions

Data Fields

namename = name   settingssettings = dict()   +str settings +  +

Field Documentation

+ +

◆ settings

+ +
+
+ + + + +
str ftests.controller.Controller.settings
+
+Initial value:
= ' {} = {}\n'.format(setting_key,
+
self.settings[setting_key])
+
+
+

The documentation for this class was generated from the following file:
  • tests/ftests/controller.py
+
diff --git a/classftests_1_1controller_1_1Controller.png b/classftests_1_1controller_1_1Controller.png index 1ac86e51c4bf2bdcf3955d51f4cfd261ff90a97e..cb538bf7954e4d7382a9d7c052792090d8b3f9e4 100644 GIT binary patch delta 21 dc-ouJGM#0D9oK^g5B~rEZ+bRt$wrU!i~x883vmDd delta 21 dc-ouJGM#0D9oK;a2mb&6A3W*uij5xU83A>83v~bh diff --git a/classftests_1_1log_1_1Log.html b/classftests_1_1log_1_1Log.html index 25b3bd01..2f9e360e 100644 --- a/classftests_1_1log_1_1Log.html +++ b/classftests_1_1log_1_1Log.html @@ -3,12 +3,16 @@ - + libcgroup: ftests.log.Log Class Reference + + + + @@ -29,23 +33,33 @@
- + + + +
@@ -109,7 +124,8 @@ Static Public Member Functions
+
diff --git a/classftests_1_1log_1_1Log.png b/classftests_1_1log_1_1Log.png index 5ad934f06f4d7db9c88ab4aad762c298da88cf1f..bfacb112dd97ac0c13c3e4c1b8f40e14a9f0b1c1 100644 GIT binary patch delta 21 dc-ouEJd=5X9oK^g5B~rEZ+bRt$wrSrMgVs)3iSX0 delta 21 dc-ouEJd=5X9oK;a2mb&6A3W*uij5wDi~w||3i$v4 diff --git a/classftests_1_1process_1_1Process.html b/classftests_1_1process_1_1Process.html index ff5778ee..2032ee23 100644 --- a/classftests_1_1process_1_1Process.html +++ b/classftests_1_1process_1_1Process.html @@ -3,12 +3,16 @@ - + libcgroup: ftests.process.Process Class Reference + + + + @@ -29,23 +33,33 @@ - + + + +
Public Member Functions | @@ -123,10 +138,10 @@ Static Public Member Functions

Data Fields

childrenchildren = list()   children_pidschildren_pids = list()  
The documentation for this class was generated from the following file:
    @@ -135,7 +150,8 @@ Data Fields
+
diff --git a/classftests_1_1process_1_1Process.png b/classftests_1_1process_1_1Process.png index cd249a507e15f3d4cf262f0fe6fcb4cfd81ab7d9..203c635f27ea2b40354bb08a6e60272922f78c2c 100644 GIT binary patch delta 21 dc-m`ZX=IsT$MxXBga7~ko1P6@ve9EFBLH+~3oifw delta 21 dc-m`ZX=IsT$93Sqf&c&i2T!`ZVxz}SMgVc#3o`%! diff --git a/classftests_1_1run_1_1Run.html b/classftests_1_1run_1_1Run.html index a5245af1..1b3a2cbe 100644 --- a/classftests_1_1run_1_1Run.html +++ b/classftests_1_1run_1_1Run.html @@ -3,12 +3,16 @@ - + libcgroup: ftests.run.Run Class Reference + + + + @@ -29,23 +33,33 @@
- + + + +
@@ -97,7 +112,8 @@ Static Public Member Functions
+
diff --git a/classftests_1_1run_1_1Run.png b/classftests_1_1run_1_1Run.png index aea77c14883e63725ef58eb12230a5f6d5c30e38..69bd9ccfc6da450ba78450095270d8a8b69b6a04 100644 GIT binary patch delta 21 dc-q^+yn}gy9oK^g5B~rEZ+bRt$wrR?MgV+A3sL|8 delta 21 dc-q^+yn}gy9oK;a2mb&6A3W*uij5uxi~xDO3swLC diff --git a/classftests_1_1run_1_1RunError.html b/classftests_1_1run_1_1RunError.html index 781b95e8..fc3fbf31 100644 --- a/classftests_1_1run_1_1RunError.html +++ b/classftests_1_1run_1_1RunError.html @@ -3,12 +3,16 @@ - + libcgroup: ftests.run.RunError Class Reference + + + + @@ -29,23 +33,33 @@ - + + + +
Public Member Functions | @@ -98,16 +113,16 @@ Public Member Functions

Data Fields

commandcommand = command   retret = ret   stdoutstdout = stdout   stderrstderr = stderr  
The documentation for this class was generated from the following file:
    @@ -116,7 +131,8 @@ Data Fields
+
diff --git a/classftests_1_1run_1_1RunError.png b/classftests_1_1run_1_1RunError.png index f0a8c3d61e36562b5b26057ce1698b655b45667f..f52d74bb2beecd6763142c06a174fd86f16296b8 100644 GIT binary patch delta 21 dc-m`XX=0gR$MxXBga7~ko1P6@ve9D~BLH-f3o-xz delta 21 dc-m`XX=0gR$93Sqf&c&i2T!`ZVxz|{MgVdK3pM}% diff --git a/classftests_1_1systemd_1_1Systemd.html b/classftests_1_1systemd_1_1Systemd.html index 2cb3fa3f..53c64e4c 100644 --- a/classftests_1_1systemd_1_1Systemd.html +++ b/classftests_1_1systemd_1_1Systemd.html @@ -3,12 +3,16 @@ - + libcgroup: ftests.systemd.Systemd Class Reference + + + + @@ -29,23 +33,33 @@
- + + + +
@@ -106,7 +121,8 @@ Static Public Member Functions
+
diff --git a/classftests_1_1systemd_1_1Systemd.png b/classftests_1_1systemd_1_1Systemd.png index 9ee8094dc973aef1e63df11400554ff8e6605963..32bd357ac6ad682e65f0ae3dee81eeeafed70b23 100644 GIT binary patch delta 21 dc-mXcvY2Ip9oK^g5B~rEZ+bRt$wrUci~xE23zYx> delta 21 dc-mXcvY2Ip9oK;a2mb&6A3W*uij5w(83A{23z+}_ diff --git a/clipboard.js b/clipboard.js new file mode 100644 index 00000000..42c1fb0e --- /dev/null +++ b/clipboard.js @@ -0,0 +1,61 @@ +/** + +The code below is based on the Doxygen Awesome project, see +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2022 jothepro + +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. + +*/ + +let clipboard_title = "Copy to clipboard" +let clipboard_icon = `` +let clipboard_successIcon = `` +let clipboard_successDuration = 1000 + +$(function() { + if(navigator.clipboard) { + const fragments = document.getElementsByClassName("fragment") + for(const fragment of fragments) { + const clipboard_div = document.createElement("div") + clipboard_div.classList.add("clipboard") + clipboard_div.innerHTML = clipboard_icon + clipboard_div.title = clipboard_title + $(clipboard_div).click(function() { + const content = this.parentNode.cloneNode(true) + // filter out line number and folded fragments from file listings + content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() }) + let text = content.textContent + // remove trailing newlines and trailing spaces from empty lines + text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'') + navigator.clipboard.writeText(text); + this.classList.add("success") + this.innerHTML = clipboard_successIcon + window.setTimeout(() => { // switch back to normal icon after timeout + this.classList.remove("success") + this.innerHTML = clipboard_icon + }, clipboard_successDuration); + }) + fragment.insertBefore(clipboard_div, fragment.firstChild) + } + } +}) diff --git a/config_8h_source.html b/config_8h_source.html index 0c1314f8..cfe275e0 100644 --- a/config_8h_source.html +++ b/config_8h_source.html @@ -3,12 +3,16 @@ - + libcgroup: include/libcgroup/config.h Source File + + + + @@ -29,26 +33,31 @@ - + + @@ -77,6 +86,7 @@ $(document).ready(function() { init_codefold(0); }); +
config.h
@@ -121,21 +131,22 @@ $(document).ready(function() { init_codefold(0); });
133#endif
134
135#endif /*_LIBCGROUP_CONFIG_H*/
-
int cgroup_config_set_default(struct cgroup *new_default)
Definition config.c:1622
-
int cgroup_config_create_template_group(struct cgroup *cgrp, char *template_name, int flags)
Definition config.c:1894
-
int cgroup_init_templates_cache(char *pathname)
Definition config.c:1700
-
int cgroup_unload_cgroups(void)
Definition config.c:1535
-
int cgroup_reload_cached_templates(char *pathname)
Definition config.c:1645
-
int cgroup_config_load_config(const char *pathname)
Definition config.c:1249
-
int cgroup_load_templates_cache_from_files(int *file_index)
Definition config.c:1818
-
void cgroup_templates_cache_set_source_files(struct cgroup_string_list *tmpl_files)
Definition config.c:1756
-
int cgroup_config_unload_config(const char *pathname, int flags)
Definition config.c:1414
+
int cgroup_config_set_default(struct cgroup *new_default)
Definition config.c:1624
+
int cgroup_config_create_template_group(struct cgroup *cgrp, char *template_name, int flags)
Definition config.c:1896
+
int cgroup_init_templates_cache(char *pathname)
Definition config.c:1702
+
int cgroup_unload_cgroups(void)
Definition config.c:1537
+
int cgroup_reload_cached_templates(char *pathname)
Definition config.c:1647
+
int cgroup_config_load_config(const char *pathname)
Definition config.c:1251
+
int cgroup_load_templates_cache_from_files(int *file_index)
Definition config.c:1820
+
void cgroup_templates_cache_set_source_files(struct cgroup_string_list *tmpl_files)
Definition config.c:1758
+
int cgroup_config_unload_config(const char *pathname, int flags)
Definition config.c:1416
Definition tools-common.h:44
Definition libcgroup-internal.h:121
+ diff --git a/cookie.js b/cookie.js new file mode 100644 index 00000000..53ad21d9 --- /dev/null +++ b/cookie.js @@ -0,0 +1,58 @@ +/*! + Cookie helper functions + Copyright (c) 2023 Dimitri van Heesch + Released under MIT license. +*/ +let Cookie = { + cookie_namespace: 'doxygen_', + + readSetting(cookie,defVal) { + if (window.chrome) { + const val = localStorage.getItem(this.cookie_namespace+cookie) || + sessionStorage.getItem(this.cookie_namespace+cookie); + if (val) return val; + } else { + let myCookie = this.cookie_namespace+cookie+"="; + if (document.cookie) { + const index = document.cookie.indexOf(myCookie); + if (index != -1) { + const valStart = index + myCookie.length; + let valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + return document.cookie.substring(valStart, valEnd); + } + } + } + return defVal; + }, + + writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete + if (window.chrome) { + if (days==0) { + sessionStorage.setItem(this.cookie_namespace+cookie,val); + } else { + localStorage.setItem(this.cookie_namespace+cookie,val); + } + } else { + let date = new Date(); + date.setTime(date.getTime()+(days*24*60*60*1000)); + const expiration = days!=0 ? "expires="+date.toGMTString()+";" : ""; + document.cookie = this.cookie_namespace + cookie + "=" + + val + "; SameSite=Lax;" + expiration + "path=/"; + } + }, + + eraseSetting(cookie) { + if (window.chrome) { + if (localStorage.getItem(this.cookie_namespace+cookie)) { + localStorage.removeItem(this.cookie_namespace+cookie); + } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) { + sessionStorage.removeItem(this.cookie_namespace+cookie); + } + } else { + this.writeSetting(cookie,'',-1); + } + }, +} diff --git a/dir_1563a38af0d3a5e4a6330d6d45e9792a.html b/dir_1563a38af0d3a5e4a6330d6d45e9792a.html index b851a954..ff82fdf6 100644 --- a/dir_1563a38af0d3a5e4a6330d6d45e9792a.html +++ b/dir_1563a38af0d3a5e4a6330d6d45e9792a.html @@ -3,12 +3,16 @@ - + libcgroup: src/tools Directory Reference + + + + @@ -29,23 +33,33 @@ - + + + +
tools Directory Reference
@@ -85,7 +100,8 @@ Files
+ diff --git a/dir_186aed7d9ed997e3f7419a7f20ba31e5.html b/dir_186aed7d9ed997e3f7419a7f20ba31e5.html index b3fc13c1..0b7b801a 100644 --- a/dir_186aed7d9ed997e3f7419a7f20ba31e5.html +++ b/dir_186aed7d9ed997e3f7419a7f20ba31e5.html @@ -3,12 +3,16 @@ - + libcgroup: tests/ftests Directory Reference + + + + @@ -29,23 +33,33 @@ - + + + +
ftests Directory Reference
@@ -79,7 +94,8 @@ $(function() {
+ diff --git a/dir_2a08be305b9505374e987b3bf409b5f6.html b/dir_2a08be305b9505374e987b3bf409b5f6.html index 6e831bf1..f2cfd8a4 100644 --- a/dir_2a08be305b9505374e987b3bf409b5f6.html +++ b/dir_2a08be305b9505374e987b3bf409b5f6.html @@ -3,12 +3,16 @@ - + libcgroup: tests/gunit Directory Reference + + + + @@ -29,23 +33,33 @@ - + + + +
gunit Directory Reference
@@ -79,7 +94,8 @@ $(function() {
+ diff --git a/dir_2d094300ae4f2c55dd459b9ec7dd0ad3.html b/dir_2d094300ae4f2c55dd459b9ec7dd0ad3.html index 35346251..9447a23a 100644 --- a/dir_2d094300ae4f2c55dd459b9ec7dd0ad3.html +++ b/dir_2d094300ae4f2c55dd459b9ec7dd0ad3.html @@ -3,12 +3,16 @@ - + libcgroup: src/daemon Directory Reference + + + + @@ -29,23 +33,33 @@ - + + + +
daemon Directory Reference
@@ -85,7 +100,8 @@ Files
+ diff --git a/dir_501cbd49daf77f17c121ad0979f93200.html b/dir_501cbd49daf77f17c121ad0979f93200.html index d971bd6e..57d7efbe 100644 --- a/dir_501cbd49daf77f17c121ad0979f93200.html +++ b/dir_501cbd49daf77f17c121ad0979f93200.html @@ -3,12 +3,16 @@ - + libcgroup: src/pam Directory Reference + + + + @@ -29,23 +33,33 @@ - + + + +
pam Directory Reference
@@ -79,7 +94,8 @@ $(function() {
+ diff --git a/dir_59425e443f801f1f2fd8bbe4959a3ccf.html b/dir_59425e443f801f1f2fd8bbe4959a3ccf.html index 2eb7a9ba..5ff6f4e9 100644 --- a/dir_59425e443f801f1f2fd8bbe4959a3ccf.html +++ b/dir_59425e443f801f1f2fd8bbe4959a3ccf.html @@ -3,12 +3,16 @@ - + libcgroup: tests Directory Reference + + + + @@ -29,23 +33,33 @@ - + + + +
tests Directory Reference
@@ -87,7 +102,8 @@ Directories
+ diff --git a/dir_5a61c96bdb8d8040ef93b1d687e1e467.html b/dir_5a61c96bdb8d8040ef93b1d687e1e467.html index be344082..9d842637 100644 --- a/dir_5a61c96bdb8d8040ef93b1d687e1e467.html +++ b/dir_5a61c96bdb8d8040ef93b1d687e1e467.html @@ -3,12 +3,16 @@ - + libcgroup: samples/python Directory Reference + + + + @@ -29,23 +33,33 @@ - + + + +
python Directory Reference
@@ -79,7 +94,8 @@ $(function() {
+ diff --git a/dir_66a7763e2a9b96033a682558820d533e.html b/dir_66a7763e2a9b96033a682558820d533e.html index c2ef6b5a..4edee584 100644 --- a/dir_66a7763e2a9b96033a682558820d533e.html +++ b/dir_66a7763e2a9b96033a682558820d533e.html @@ -3,12 +3,16 @@ - + libcgroup: include/libcgroup Directory Reference + + + + @@ -29,23 +33,33 @@ - + + + +
libcgroup Directory Reference
@@ -99,7 +114,8 @@ Files
+ diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/dir_68267d1309a1af8e8297ef4c3efbcdba.html index 749d0113..2b0d8bba 100644 --- a/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -3,12 +3,16 @@ - + libcgroup: src Directory Reference + + + + @@ -29,23 +33,33 @@ - + + + +
src Directory Reference
@@ -98,7 +113,8 @@ Files
+ diff --git a/dir_6f9635d4fbfa321d4c00f29df5cd540c.html b/dir_6f9635d4fbfa321d4c00f29df5cd540c.html index e8abad7d..3b2d5d3e 100644 --- a/dir_6f9635d4fbfa321d4c00f29df5cd540c.html +++ b/dir_6f9635d4fbfa321d4c00f29df5cd540c.html @@ -3,12 +3,16 @@ - + libcgroup: samples Directory Reference + + + + @@ -29,23 +33,33 @@ - + + + +
samples Directory Reference
@@ -87,7 +102,8 @@ Directories
+ diff --git a/dir_a6674828538ab5f03c09771a856fdcec.html b/dir_a6674828538ab5f03c09771a856fdcec.html index 1cd244af..81c1e63b 100644 --- a/dir_a6674828538ab5f03c09771a856fdcec.html +++ b/dir_a6674828538ab5f03c09771a856fdcec.html @@ -3,12 +3,16 @@ - + libcgroup: samples/c Directory Reference + + + + @@ -29,23 +33,33 @@ - + + + +
c Directory Reference
@@ -79,7 +94,8 @@ $(function() {
+ diff --git a/dir_a9876c7102db9acca678b90c36d1e873.html b/dir_a9876c7102db9acca678b90c36d1e873.html index 32f9d92e..b1ffa969 100644 --- a/dir_a9876c7102db9acca678b90c36d1e873.html +++ b/dir_a9876c7102db9acca678b90c36d1e873.html @@ -3,12 +3,16 @@ - + libcgroup: samples/cmdline Directory Reference + + + + @@ -29,23 +33,33 @@ - + + + +
cmdline Directory Reference
@@ -79,7 +94,8 @@ $(function() {
+ diff --git a/dir_bad69804d7d66cc6351273e8c931723c.html b/dir_bad69804d7d66cc6351273e8c931723c.html index 5edaa0e3..c6e2d32d 100644 --- a/dir_bad69804d7d66cc6351273e8c931723c.html +++ b/dir_bad69804d7d66cc6351273e8c931723c.html @@ -3,12 +3,16 @@ - + libcgroup: doc/internal Directory Reference + + + + @@ -29,23 +33,33 @@ - + + + +
internal Directory Reference
@@ -79,7 +94,8 @@ $(function() {
+ diff --git a/dir_d44c64559bbebec7f509842c48db8b23.html b/dir_d44c64559bbebec7f509842c48db8b23.html index f080fbe3..51c83c08 100644 --- a/dir_d44c64559bbebec7f509842c48db8b23.html +++ b/dir_d44c64559bbebec7f509842c48db8b23.html @@ -3,12 +3,16 @@ - + libcgroup: include Directory Reference + + + + @@ -29,23 +33,33 @@ - + + + +
include Directory Reference
@@ -90,7 +105,8 @@ Files
+ diff --git a/dir_e68e8157741866f444e17edd764ebbae.html b/dir_e68e8157741866f444e17edd764ebbae.html index 76e49f84..adf83fbb 100644 --- a/dir_e68e8157741866f444e17edd764ebbae.html +++ b/dir_e68e8157741866f444e17edd764ebbae.html @@ -3,12 +3,16 @@ - + libcgroup: doc Directory Reference + + + + @@ -29,23 +33,33 @@ - + + + +
doc Directory Reference
@@ -79,7 +94,8 @@ $(function() {
+ diff --git a/doxygen.css b/doxygen.css index 009a9b55..574b3335 100644 --- a/doxygen.css +++ b/doxygen.css @@ -1,4 +1,4 @@ -/* The standard CSS for doxygen 1.9.8*/ +/* The standard CSS for doxygen 1.12.0*/ html { /* page base colors */ @@ -145,6 +145,7 @@ html { --fragment-lineno-link-bg-color: #D8D8D8; --fragment-lineno-link-hover-fg-color: #4665A2; --fragment-lineno-link-hover-bg-color: #C8C8C8; +--fragment-copy-ok-color: #2EC82E; --tooltip-foreground-color: black; --tooltip-background-color: white; --tooltip-border-color: gray; @@ -168,6 +169,28 @@ html { --font-family-icon: Arial,Helvetica; --font-family-tooltip: Roboto,sans-serif; +/** special sections */ +--warning-color-bg: #f8d1cc; +--warning-color-hl: #b61825; +--warning-color-text: #75070f; +--note-color-bg: #faf3d8; +--note-color-hl: #f3a600; +--note-color-text: #5f4204; +--todo-color-bg: #e4f3ff; +--todo-color-hl: #1879C4; +--todo-color-text: #274a5c; +--test-color-bg: #e8e8ff; +--test-color-hl: #3939C4; +--test-color-text: #1a1a5c; +--deprecated-color-bg: #ecf0f3; +--deprecated-color-hl: #5b6269; +--deprecated-color-text: #43454a; +--bug-color-bg: #e4dafd; +--bug-color-hl: #5b2bdd; +--bug-color-text: #2a0d72; +--invariant-color-bg: #d8f1e3; +--invariant-color-hl: #44b86f; +--invariant-color-text: #265532; } @media (prefers-color-scheme: dark) { @@ -309,7 +332,7 @@ html { --code-link-color: #79C0FF; --code-external-link-color: #79C0FF; --fragment-foreground-color: #C9D1D9; ---fragment-background-color: black; +--fragment-background-color: #090D16; --fragment-border-color: #30363D; --fragment-lineno-border-color: #30363D; --fragment-lineno-background-color: black; @@ -318,6 +341,7 @@ html { --fragment-lineno-link-bg-color: #303030; --fragment-lineno-link-hover-fg-color: #8E96A1; --fragment-lineno-link-hover-bg-color: #505050; +--fragment-copy-ok-color: #0EA80E; --tooltip-foreground-color: #C9D1D9; --tooltip-background-color: #202020; --tooltip-border-color: #C9D1D9; @@ -341,6 +365,28 @@ html { --font-family-icon: Arial,Helvetica; --font-family-tooltip: Roboto,sans-serif; +/** special sections */ +--warning-color-bg: #2e1917; +--warning-color-hl: #ad2617; +--warning-color-text: #f5b1aa; +--note-color-bg: #3b2e04; +--note-color-hl: #f1b602; +--note-color-text: #ceb670; +--todo-color-bg: #163750; +--todo-color-hl: #1982D2; +--todo-color-text: #dcf0fa; +--test-color-bg: #121258; +--test-color-hl: #4242cf; +--test-color-text: #c0c0da; +--deprecated-color-bg: #2e323b; +--deprecated-color-hl: #738396; +--deprecated-color-text: #abb0bd; +--bug-color-bg: #2a2536; +--bug-color-hl: #7661b3; +--bug-color-text: #ae9ed6; +--invariant-color-bg: #303a35; +--invariant-color-hl: #76ce96; +--invariant-color-text: #cceed5; }} body { background-color: var(--page-background-color); @@ -357,8 +403,6 @@ body, table, div, p, dl { /* @group Heading Levels */ .title { - font-weight: 400; - font-size: 14px; font-family: var(--font-family-normal); line-height: 28px; font-size: 150%; @@ -556,7 +600,13 @@ a { } a:hover { - text-decoration: underline; + text-decoration: none; + background: linear-gradient(to bottom, transparent 0,transparent calc(100% - 1px), currentColor 100%); +} + +a:hover > span.arrow { + text-decoration: none; + background : var(--nav-background-color); } a.el { @@ -607,7 +657,24 @@ dl.el { margin-left: -1cm; } +ul.check { + list-style:none; + text-indent: -16px; + padding-left: 38px; +} +li.unchecked:before { + content: "\2610\A0"; +} +li.checked:before { + content: "\2611\A0"; +} + +ol { + text-indent: 0px; +} + ul { + text-indent: 0px; overflow: visible; } @@ -632,30 +699,63 @@ ul.multicol { .fragment { text-align: left; direction: ltr; - overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-x: auto; overflow-y: hidden; + position: relative; + min-height: 12px; + margin: 10px 0px; + padding: 10px 10px; + border: 1px solid var(--fragment-border-color); + border-radius: 4px; + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); } pre.fragment { - border: 1px solid var(--fragment-border-color); - background-color: var(--fragment-background-color); - color: var(--fragment-foreground-color); - padding: 4px 6px; - margin: 4px 8px 4px 2px; + word-wrap: break-word; + font-size: 10pt; + line-height: 125%; + font-family: var(--font-family-monospace); +} + +.clipboard { + width: 24px; + height: 24px; + right: 5px; + top: 5px; + opacity: 0; + position: absolute; + display: inline; overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: var(--font-family-monospace); - font-size: 105%; + fill: var(--fragment-foreground-color); + justify-content: center; + align-items: center; + cursor: pointer; +} + +.clipboard.success { + border: 1px solid var(--fragment-foreground-color); + border-radius: 4px; +} + +.fragment:hover .clipboard, .clipboard.success { + opacity: .28; +} + +.clipboard:hover, .clipboard.success { + opacity: 1 !important; +} + +.clipboard:active:not([class~=success]) svg { + transform: scale(.91); } -div.fragment { - padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ - margin: 4px 8px 4px 2px; - color: var(--fragment-foreground-color); - background-color: var(--fragment-background-color); - border: 1px solid var(--fragment-border-color); +.clipboard.success svg { + fill: var(--fragment-copy-ok-color); +} + +.clipboard.success { + border-color: var(--fragment-copy-ok-color); } div.line { @@ -778,10 +878,6 @@ img.light-mode-visible { display: none; } -img.formulaDsp { - -} - img.formulaInl, img.inline { vertical-align: middle; } @@ -1081,17 +1177,25 @@ dl.reflist dd { .paramtype { white-space: nowrap; + padding: 0px; + padding-bottom: 1px; } .paramname { - color: var(--memdef-param-name-color); white-space: nowrap; + padding: 0px; + padding-bottom: 1px; + margin-left: 2px; } + .paramname em { + color: var(--memdef-param-name-color); font-style: normal; + margin-right: 1px; } -.paramname code { - line-height: 14px; + +.paramname .paramdefval { + font-family: var(--font-family-monospace); } .params, .retval, .exception, .tparams { @@ -1341,7 +1445,7 @@ table.fieldtable { padding: 3px 7px 2px; } -.fieldtable td.fieldtype, .fieldtable td.fieldname { +.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fieldinit { white-space: nowrap; border-right: 1px solid var(--memdef-border-color); border-bottom: 1px solid var(--memdef-border-color); @@ -1352,6 +1456,12 @@ table.fieldtable { padding-top: 3px; } +.fieldtable td.fieldinit { + padding-top: 3px; + text-align: right; +} + + .fieldtable td.fielddoc { border-bottom: 1px solid var(--memdef-border-color); } @@ -1425,7 +1535,6 @@ table.fieldtable { { height:32px; display:block; - text-decoration: none; outline: none; color: var(--nav-text-normal-color); font-family: var(--font-family-nav); @@ -1514,7 +1623,8 @@ 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; @@ -1527,7 +1637,7 @@ dl.note { border-color: #D0C000; } -dl.warning, dl.attention { +dl.warning, dl.attention, dl.important { margin-left: -7px; padding-left: 3px; border-left: 4px solid; @@ -1569,8 +1679,103 @@ dl.bug { border-color: #C08050; } +*/ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.important, dl.note, dl.deprecated, dl.bug, +dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark { + padding: 10px; + margin: 10px 0px; + overflow: hidden; + margin-left: 0; + border-radius: 4px; +} + dl.section dd { - margin-bottom: 6px; + margin-bottom: 2px; +} + +dl.warning, dl.attention, dl.important { + background: var(--warning-color-bg); + border-left: 8px solid var(--warning-color-hl); + color: var(--warning-color-text); +} + +dl.warning dt, dl.attention dt, dl.important dt { + color: var(--warning-color-hl); +} + +dl.note, dl.remark { + background: var(--note-color-bg); + border-left: 8px solid var(--note-color-hl); + color: var(--note-color-text); +} + +dl.note dt, dl.remark dt { + color: var(--note-color-hl); +} + +dl.todo { + background: var(--todo-color-bg); + border-left: 8px solid var(--todo-color-hl); + color: var(--todo-color-text); +} + +dl.todo dt { + color: var(--todo-color-hl); +} + +dl.test { + background: var(--test-color-bg); + border-left: 8px solid var(--test-color-hl); + color: var(--test-color-text); +} + +dl.test dt { + color: var(--test-color-hl); +} + +dl.bug dt a { + color: var(--bug-color-hl) !important; +} + +dl.bug { + background: var(--bug-color-bg); + border-left: 8px solid var(--bug-color-hl); + color: var(--bug-color-text); +} + +dl.bug dt a { + color: var(--bug-color-hl) !important; +} + +dl.deprecated { + background: var(--deprecated-color-bg); + border-left: 8px solid var(--deprecated-color-hl); + color: var(--deprecated-color-text); +} + +dl.deprecated dt a { + color: var(--deprecated-color-hl) !important; +} + +dl.note dd, dl.warning dd, dl.pre dd, dl.post dd, +dl.remark dd, dl.attention dd, dl.important dd, dl.invariant dd, +dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: var(--invariant-color-bg); + border-left: 8px solid var(--invariant-color-hl); + color: var(--invariant-color-text); +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: var(--invariant-color-hl); } @@ -1585,12 +1790,12 @@ dl.section dd { vertical-align: bottom; border-collapse: separate; } - + #projectlogo img -{ +{ border: 0px none; } - + #projectalign { vertical-align: middle; @@ -1711,20 +1916,17 @@ div.toc ul { padding: 0px; } -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { +div.toc li[class^='level'] { margin-left: 15px; } -div.toc li.level3 { - margin-left: 15px; +div.toc li.level1 { + margin-left: 0px; } -div.toc li.level4 { - margin-left: 15px; +div.toc li.empty { + background-image: none; + margin-top: 0px; } span.emoji { diff --git a/doxygen_crawl.html b/doxygen_crawl.html new file mode 100644 index 00000000..53b8d628 --- /dev/null +++ b/doxygen_crawl.html @@ -0,0 +1,432 @@ + + + +Validator / crawler helper + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dynsections.js b/dynsections.js index b73c8288..b05f4c8d 100644 --- a/dynsections.js +++ b/dynsections.js @@ -22,171 +22,177 @@ @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'); - $('table.directory tr'). - removeClass('odd').filter(':visible:odd').addClass('odd'); +function toggleVisibility(linkObj) { + return dynsection.toggleVisibility(linkObj); } -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'); - // add vertical lines to other rows - $('span[class=lineno]').not(':eq(0)').append(''); - // add toggle controls to lines with fold divs - $('div[class=foldopen]').each(function() { - // extract specific id to use - var id = $(this).attr('id').replace('foldopen',''); - // extract start and end foldable fragment attributes - var start = $(this).attr('data-start'); - var end = $(this).attr('data-end'); - // replace normal fold span with controls for the first line of a foldable fragment - $(this).find('span[class=fold]:first').replaceWith(''); - // append div for folded (closed) representation - $(this).after(''); - // extract the first line from the "open" section to represent closed content - var line = $(this).children().first().clone(); - // remove any glow that might still be active on the original line - $(line).removeClass('glow'); - if (start) { - // if line already ends with a start marker (e.g. trailing {), remove it - $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + this.updateStripes(); + }, + + toggleFolder : function(id) { + // the clicked row + const currentRow = $('#row_'+id); + + // all rows after the clicked row + const rows = currentRow.nextAll("tr"); + + const re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub + + // only match elements AFTER this one (can't hide elements before) + const 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 + const currentRowSpans = currentRow.find("span"); + currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed"); + currentRowSpans.filter(".arrow").html('►'); + rows.filter("[id^=row_"+id+"]").hide(); // hide all children + } else { // we are SHOWING + // replace right arrow by down arrow for current row + const currentRowSpans = currentRow.find("span"); + currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen"); + currentRowSpans.filter(".arrow").html('▼'); + // replace down arrows by right arrows for child rows + const childRowsSpans = childRows.find("span"); + childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed"); + childRowsSpans.filter(".arrow").html('►'); + childRows.show(); //show all children } - // replace minus with plus symbol - $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); - // append ellipsis - $(line).append(' '+start+''+end); - // insert constructed line into closed div - $('#foldclosed'+id).html(line); - }); -} - + this.updateStripes(); + }, + + toggleInherit : function(id) { + const rows = $('tr.inherit.'+id); + const img = $('tr.inherit_header.'+id+' img'); + const 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'); + } + }, +}; + +let codefold = { + opened : true, + + // in case HTML_COLORSTYLE is LIGHT or DARK the vars will be replaced, so we write them out explicitly and use double quotes + plusImg: [ "var(--fold-plus-image)", "var(--fold-plus-image-relpath)" ], + minusImg: [ "var(--fold-minus-image)", "var(--fold-minus-image-relpath)" ], + + // toggle all folding blocks + toggle_all : function(relPath) { + if (this.opened) { + $('#fold_all').css('background-image',this.plusImg[relPath]); + $('div[id^=foldopen]').hide(); + $('div[id^=foldclosed]').show(); + } else { + $('#fold_all').css('background-image',this.minusImg[relPath]); + $('div[id^=foldopen]').show(); + $('div[id^=foldclosed]').hide(); + } + this.opened=!this.opened; + }, + + // toggle single folding block + toggle : function(id) { + $('#foldopen'+id).toggle(); + $('#foldclosed'+id).toggle(); + }, + + init : function(relPath) { + $('span[class=lineno]').css({ + 'padding-right':'4px', + 'margin-right':'2px', + 'display':'inline-block', + 'width':'54px', + 'background':'linear-gradient(var(--fold-line-color),var(--fold-line-color)) no-repeat 46px/2px 100%' + }); + // add global toggle to first line + $('span[class=lineno]:first').append(''); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + const id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + const start = $(this).attr('data-start'); + const end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + const line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',codefold.plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); + }, +}; /* @license-end */ diff --git a/error_8h_source.html b/error_8h_source.html index a50e4b2e..448a0874 100644 --- a/error_8h_source.html +++ b/error_8h_source.html @@ -3,12 +3,16 @@ - + libcgroup: include/libcgroup/error.h Source File + + + + @@ -29,26 +33,31 @@ - + + @@ -77,6 +86,7 @@ $(document).ready(function() { init_codefold(0); }); +
error.h
@@ -156,7 +166,8 @@ $(document).ready(function() { init_codefold(0); });
+ diff --git a/files.html b/files.html index 6bd6a75f..01855665 100644 --- a/files.html +++ b/files.html @@ -3,12 +3,16 @@ - + libcgroup: File List + + + + @@ -29,24 +33,35 @@ - + + +
+
Here is a list of all documented files with brief descriptions:
-
[detail level 123]
- - +
[detail level 123]
  include
  libcgroup
+ + @@ -85,10 +100,10 @@ $(function() { - - + + - + @@ -98,7 +113,8 @@ $(function() { + diff --git a/functions.html b/functions.html index 8d7b003d..3fe341c5 100644 --- a/functions.html +++ b/functions.html @@ -3,12 +3,16 @@ - +libcgroup: Data Fields + + + + @@ -29,24 +33,35 @@
  include
  libcgroup
 config.h
 error.h
 groups.h
 tasks.h
 tools.h
 libcgroup.h
  src
  daemon
  src
  daemon
 cgrulesengd.h
  tools
  tools
 tools-common.h
 abstraction-common.h
 abstraction-map.h
- + +
+
+
+
diff --git a/functions_func.html b/functions_func.html index 02451503..fdeb7cc2 100644 --- a/functions_func.html +++ b/functions_func.html @@ -3,12 +3,16 @@ - + libcgroup: Data Fields - Functions + + + + @@ -29,24 +33,35 @@
- + +
+
+
+
diff --git a/functions_vars.html b/functions_vars.html index 3d00a673..35a465b5 100644 --- a/functions_vars.html +++ b/functions_vars.html @@ -3,12 +3,16 @@ - + libcgroup: Data Fields - Variables + + + + @@ -29,24 +33,35 @@
- + +
+
+
+
diff --git a/group__group__config.html b/group__group__config.html index eda626f6..a7cfce99 100644 --- a/group__group__config.html +++ b/group__group__config.html @@ -3,12 +3,16 @@ - + libcgroup: 5. Configuration + + + + @@ -29,24 +33,35 @@
- + + +
+

Configuration file

libcgroup can mount and create control groups and set their parameters as specified in a configuration file.

-
Todo:
add this description?: These functions are mostly intended to be used by internal libcgroup tools, however they are fully supported and applications can benefit from them.
+
Todo
add this description?: These functions are mostly intended to be used by internal libcgroup tools, however they are fully supported and applications can benefit from them.
-int cgroup_config_load_config (const char *pathname) +int cgroup_config_load_config (const char *pathname)   -int cgroup_unload_cgroups (void) +int cgroup_unload_cgroups (void)   -int cgroup_config_unload_config (const char *pathname, int flags) +int cgroup_config_unload_config (const char *pathname, int flags)   -int cgroup_config_set_default (struct cgroup *new_default) +int cgroup_config_set_default (struct cgroup *new_default)   -int cgroup_init_templates_cache (char *pathname) +int cgroup_init_templates_cache (char *pathname)   -int cgroup_reload_cached_templates (char *pathname) +int cgroup_reload_cached_templates (char *pathname)   -int cgroup_load_templates_cache_from_files (int *file_index) +int cgroup_load_templates_cache_from_files (int *file_index)   -void cgroup_templates_cache_set_source_files (struct cgroup_string_list *tmpl_files) +void cgroup_templates_cache_set_source_files (struct cgroup_string_list *tmpl_files)   -int cgroup_config_create_template_group (struct cgroup *cgrp, char *template_name, int flags) +int cgroup_config_create_template_group (struct cgroup *cgrp, char *template_name, int flags)  

Detailed Description

@@ -107,25 +122,17 @@ $(function() { int cgroup_config_create_template_group ( - struct cgroup *  - cgrp, + struct cgroup * cgrp, - char *  - template_name, + char * template_name, - int  - flags  - - - - ) - + int flags )
@@ -153,8 +160,7 @@ $(function() { int cgroup_config_load_config ( - const char *  - pathname) + const char * pathname) @@ -177,13 +183,12 @@ $(function() { int cgroup_config_set_default ( - struct cgroup *  - new_default) + struct cgroup * new_default)
-

Sets default permissions of groups created by subsequent cgroup_config_load_config() calls. If a config file contains a 'default {}' section, the default permissions from the config file is then used.

+

Sets default permissions of groups created by subsequent cgroup_config_load_config() calls. If a config file contains a 'default {}' section, the default permissions from the config file is then used.

Use cgroup_new_cgroup() to create a dummy group and cgroup_set_uid_gid() and cgroup_set_permissions() 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.

Parameters
@@ -203,19 +208,12 @@ $(function() { - - + - - - - - - - +
int cgroup_config_unload_config (const char * pathname, const char * pathname,
int flags 
)int flags )
@@ -241,8 +239,7 @@ $(function() { int cgroup_init_templates_cache ( - char *  - pathname) + char * pathname) @@ -261,8 +258,7 @@ $(function() { int cgroup_load_templates_cache_from_files ( - int *  - file_index) + int * file_index) @@ -286,8 +282,7 @@ $(function() { int cgroup_reload_cached_templates ( - char *  - pathname) + char * pathname) @@ -306,8 +301,7 @@ $(function() { void cgroup_templates_cache_set_source_files ( - struct cgroup_string_list *  - tmpl_files) + struct cgroup_string_list * tmpl_files) @@ -330,8 +324,7 @@ $(function() { int cgroup_unload_cgroups ( - void  - ) + void ) @@ -343,7 +336,8 @@ $(function() {
+
diff --git a/group__group__errors.html b/group__group__errors.html index e2312662..55f93619 100644 --- a/group__group__errors.html +++ b/group__group__errors.html @@ -3,12 +3,16 @@ - + libcgroup: 6. Error handling + + + + @@ -29,24 +33,35 @@ - + + +
+

Error handling

Unless states otherwise in documentation of a function, all functions return int, which is zero (0) when the function succeeds, and positive number if the function fails.

-

The returned integer is one of the ECG* values described below. Value ECGOTHER means that the error was caused by underlying OS and the real cause can be found by calling cgroup_get_last_errno().

+

The returned integer is one of the ECG* values described below. Value ECGOTHER means that the error was caused by underlying OS and the real cause can be found by calling cgroup_get_last_errno().

enum  {
  ECGROUPNOTCOMPILED = 50000 @@ -85,7 +100,7 @@ $(function() { ,
  ECGROUPSUBSYSNOTMOUNTED , ECGROUPNOTOWNER -, ECGROUPMULTIMOUNTED +, ECGROUPMULTIMOUNTED , ECGROUPNOTALLOWED ,
  ECGMAXVALUESEXCEEDED @@ -98,15 +113,15 @@ $(function() { , ECGROUPNOTINITIALIZED , ECGROUPVALUENOTEXIST ,
-  ECGOTHER +  ECGOTHER , ECGROUPNOTEQUAL , ECGCONTROLLERNOTEQUAL -, ECGROUPPARSEFAIL +, ECGROUPPARSEFAIL ,
-  ECGROUPNORULES +  ECGROUPNORULES , ECGMOUNTFAIL -, ECGEOF = 50023 -, ECGCONFIGPARSEFAIL +, ECGEOF = 50023 +, ECGCONFIGPARSEFAIL ,
  ECGNAMESPACEPATHS , ECGNAMESPACECONTROLLER @@ -114,16 +129,16 @@ $(function() { , ECGROUPUNSUPP ,
  ECGCANTSETVALUE -, ECGNONEMPTY -, ECGNOVERSIONCONVERT +, ECGNONEMPTY +, ECGNOVERSIONCONVERT
}   -const char * cgroup_strerror (int code) +const char * cgroup_strerror (int code)   -int cgroup_get_last_errno (void) +int cgroup_get_last_errno (void)   -#define ECGRULESPARSEFAIL   ECGROUPPARSEFAIL +#define ECGRULESPARSEFAIL   ECGROUPPARSEFAIL  

Detailed Description

@@ -135,7 +150,7 @@ $(function() {
- +
#define ECGRULESPARSEFAIL   ECGROUPPARSEFAIL#define ECGRULESPARSEFAIL   ECGROUPPARSEFAIL
@@ -158,7 +173,7 @@ $(function() { - @@ -186,8 +201,7 @@ $(function() { - - +
Enumerator
ECGROUPMULTIMOUNTED 

Controllers bound to different mount points

ECGOTHER 

Represents error coming from other libraries like glibc. libcgroup users need to check cgroup_get_last_errno() upon encountering this error.

+
ECGOTHER 

Represents error coming from other libraries like glibc. libcgroup users need to check cgroup_get_last_errno() upon encountering this error.

ECGROUPPARSEFAIL 

Failed to parse rules configuration file.

int cgroup_get_last_errno (void )void )
@@ -205,15 +219,14 @@ $(function() { const char * cgroup_strerror ( - int  - code) + int code)

Format error code to a human-readable English string. No internationalization is currently done. Returned pointer leads to libcgroup memory and must not be freed nor modified. The memory is rewritten by subsequent call to this function.

Parameters
- +
codeError code for which the corresponding error string is returned. When ECGOTHER is used, text with glibc's description of cgroup_get_last_errno() value is returned.
codeError code for which the corresponding error string is returned. When ECGOTHER is used, text with glibc's description of cgroup_get_last_errno() value is returned.
@@ -223,7 +236,8 @@ $(function() {
+
diff --git a/group__group__groups.html b/group__group__groups.html index 0517c04d..b111b301 100644 --- a/group__group__groups.html +++ b/group__group__groups.html @@ -3,12 +3,16 @@ - + libcgroup: 2. Group manipulation API + + + + @@ -29,24 +33,35 @@
- + + +
+
freezer:/
freezer:/foo
I.e. there is cpu and cpuacct controller mounted together in one hierarchy, with foo and bar groups. In addition, freezer is mounted as separate hierarchy, with only one foo group. -
Following code creates struct cgroup* structure, which represents one group cpu,cpuacct:/foo:
struct cgroup *foo = cgroup_new_cgroup("foo");
- -
struct cgroup_controller * cgroup_add_controller(struct cgroup *cgrp, const char *name)
Definition wrapper.c:61
-
struct cgroup * cgroup_new_cgroup(const char *name)
Definition wrapper.c:43
+
Following code creates struct cgroup* structure, which represents one group cpu,cpuacct:/foo:
struct cgroup *foo = cgroup_new_cgroup("foo");
+ +
struct cgroup_controller * cgroup_add_controller(struct cgroup *cgrp, const char *name)
Definition wrapper.c:61
+
struct cgroup * cgroup_new_cgroup(const char *name)
Definition wrapper.c:43
Definition libcgroup-internal.h:121
-
Now, you can call e.g. cgroup_delete_cgroup() 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 cpu,cpuacct hierarchy.
-
Following code creates struct cgroup* structure, which represents two groups, cpu,cpuacct:/foo and freezer:/foo:
struct cgroup *foo = cgroup_new_cgroup("foo");
- -
cgroup_add_controller(foo, "freezer");
-
Now, if you call e.g. cgroup_delete_cgroup(), the group gets deleted from both hierarchies.
-
Todo:
add some propaganda what's so great on this approach... I personally think it is broken and confusing (see TODOs below).
+
Now, you can call e.g. cgroup_delete_cgroup() 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 cpu,cpuacct hierarchy.
+
Following code creates struct cgroup* structure, which represents two groups, cpu,cpuacct:/foo and freezer:/foo:
struct cgroup *foo = cgroup_new_cgroup("foo");
+ +
cgroup_add_controller(foo, "freezer");
+
Now, if you call e.g. cgroup_delete_cgroup(), the group gets deleted from both hierarchies.
+
Todo
add some propaganda what's so great on this approach... I personally think it is broken and confusing (see TODOs below).

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!

- + - + - + - + - + - + - + - +

Basic infrastructure

struct cgroup* is the heart of libcgroup API. The structure is opaque to applications, all access to the structure is through appropriate functions.

-

The most important information is that one struct cgroup* can represent zero, one or more real control groups in kernel. The struct cgroup* is identified by name of the group, which must be set by cgroup_new_cgroup(). Multiple controllers (aka subsystems) can be attached to one struct cgroup* using cgroup_add_controller(). These controllers can belong to different hierarchies.

+

The most important information is that one struct cgroup* can represent zero, one or more real control groups in kernel. The struct cgroup* is identified by name of the group, which must be set by cgroup_new_cgroup(). Multiple controllers (aka subsystems) can be attached to one struct cgroup* using cgroup_add_controller(). These controllers can belong to different hierarchies.

This approach is different to the one in the Linux kernel - a control group must be part of exactly one hierarchy there. In libcgroup, a group can be part of multiple hierarchies, as long as the group name is the same.

Example:
Let there be following control groups:
cpu,cpuacct:/
cpu,cpuacct:/foo
@@ -92,127 +107,127 @@ Data Structures
struct cgroupcgroup_new_cgroup (const char *name)
struct cgroupcgroup_new_cgroup (const char *name)
 
struct cgroup_controllercgroup_add_controller (struct cgroup *cgrp, const char *name)
struct cgroup_controllercgroup_add_controller (struct cgroup *cgrp, const char *name)
 
int cgroup_add_all_controllers (struct cgroup *cgrp)
int cgroup_add_all_controllers (struct cgroup *cgrp)
 
struct cgroup_controllercgroup_get_controller (struct cgroup *cgrp, const char *name)
struct cgroup_controllercgroup_get_controller (struct cgroup *cgrp, const char *name)
 
void cgroup_free (struct cgroup **cgrp)
void cgroup_free (struct cgroup **cgrp)
 
void cgroup_free_controllers (struct cgroup *cgrp)
void cgroup_free_controllers (struct cgroup *cgrp)
 
#define NO_PERMS   (-1U)
#define NO_PERMS   (-1U)
 
#define NO_UID_GID   (-1U)
#define NO_UID_GID   (-1U)
 
- + - + - + - + - +

Group manipulation API

Using following functions you can create and remove control groups and change their parameters.

Note
All access to kernel is through previously mounted cgroup filesystems. libcgroup does not mount/unmount anything for you.
int cgroup_create_cgroup (struct cgroup *cgrp, int ignore_ownership)
int cgroup_create_cgroup (struct cgroup *cgrp, int ignore_ownership)
 
int cgroup_create_cgroup_from_parent (struct cgroup *cgrp, int ignore_ownership)
int cgroup_create_cgroup_from_parent (struct cgroup *cgrp, int ignore_ownership)
 
int cgroup_modify_cgroup (struct cgroup *cgrp)
int cgroup_modify_cgroup (struct cgroup *cgrp)
 
int cgroup_delete_cgroup (struct cgroup *cgrp, int ignore_migration)
int cgroup_delete_cgroup (struct cgroup *cgrp, int ignore_migration)
 
int cgroup_delete_cgroup_ext (struct cgroup *cgrp, int flags)
int cgroup_delete_cgroup_ext (struct cgroup *cgrp, int flags)
 
- + - + - + - + - + - + - +

Other functions

Helper functions to manipulate with control groups.

int cgroup_get_cgroup (struct cgroup *cgrp)
int cgroup_get_cgroup (struct cgroup *cgrp)
 
int cgroup_copy_cgroup (struct cgroup *dst, struct cgroup *src)
int cgroup_copy_cgroup (struct cgroup *dst, struct cgroup *src)
 
int cgroup_compare_cgroup (struct cgroup *cgrp_a, struct cgroup *cgrp_b)
int cgroup_compare_cgroup (struct cgroup *cgrp_a, struct cgroup *cgrp_b)
 
int cgroup_compare_controllers (struct cgroup_controller *cgca, struct cgroup_controller *cgcb)
int cgroup_compare_controllers (struct cgroup_controller *cgca, struct cgroup_controller *cgcb)
 
int cgroup_set_uid_gid (struct cgroup *cgrp, uid_t tasks_uid, gid_t tasks_gid, uid_t control_uid, gid_t control_gid)
int cgroup_set_uid_gid (struct cgroup *cgrp, uid_t tasks_uid, gid_t tasks_gid, uid_t control_uid, gid_t control_gid)
 
int cgroup_get_uid_gid (struct cgroup *cgrp, uid_t *tasks_uid, gid_t *tasks_gid, uid_t *control_uid, gid_t *control_gid)
int cgroup_get_uid_gid (struct cgroup *cgrp, uid_t *tasks_uid, gid_t *tasks_gid, uid_t *control_uid, gid_t *control_gid)
 
void cgroup_set_permissions (struct cgroup *cgrp, mode_t control_dperm, mode_t control_fperm, mode_t task_fperm)
void cgroup_set_permissions (struct cgroup *cgrp, mode_t control_dperm, mode_t control_fperm, mode_t task_fperm)
 
- - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

Group parameters

These are functions can read or modify parameter of a group.

Note
All these functions read/write parameters to libcgorup internal structures. Use cgroup_get_cgroup() to load parameters from kernel to these internal structures and cgroup_modify_cgroup() or cgroup_create_cgroup() to write changes to kernel.
+

These are functions can read or modify parameter of a group.

Note
All these functions read/write parameters to libcgorup internal structures. Use cgroup_get_cgroup() to load parameters from kernel to these internal structures and cgroup_modify_cgroup() or cgroup_create_cgroup() to write changes to kernel.
int cgroup_add_value_string (struct cgroup_controller *controller, const char *name, const char *value)
int cgroup_add_value_string (struct cgroup_controller *controller, const char *name, const char *value)
 
int cgroup_add_value_int64 (struct cgroup_controller *controller, const char *name, int64_t value)
int cgroup_add_value_int64 (struct cgroup_controller *controller, const char *name, int64_t value)
 
int cgroup_add_value_uint64 (struct cgroup_controller *controller, const char *name, u_int64_t value)
int cgroup_add_value_uint64 (struct cgroup_controller *controller, const char *name, u_int64_t value)
 
int cgroup_add_value_bool (struct cgroup_controller *controller, const char *name, bool value)
int cgroup_add_value_bool (struct cgroup_controller *controller, const char *name, bool value)
 
int cgroup_get_value_string (struct cgroup_controller *controller, const char *name, char **value)
int cgroup_get_value_string (struct cgroup_controller *controller, const char *name, char **value)
 
int cgroup_get_value_int64 (struct cgroup_controller *controller, const char *name, int64_t *value)
int cgroup_get_value_int64 (struct cgroup_controller *controller, const char *name, int64_t *value)
 
int cgroup_get_value_uint64 (struct cgroup_controller *controller, const char *name, u_int64_t *value)
int cgroup_get_value_uint64 (struct cgroup_controller *controller, const char *name, u_int64_t *value)
 
int cgroup_get_value_bool (struct cgroup_controller *controller, const char *name, bool *value)
int cgroup_get_value_bool (struct cgroup_controller *controller, const char *name, bool *value)
 
int cgroup_set_value_string (struct cgroup_controller *controller, const char *name, const char *value)
int cgroup_set_value_string (struct cgroup_controller *controller, const char *name, const char *value)
 
int cgroup_set_value_int64 (struct cgroup_controller *controller, const char *name, int64_t value)
int cgroup_set_value_int64 (struct cgroup_controller *controller, const char *name, int64_t value)
 
int cgroup_set_value_uint64 (struct cgroup_controller *controller, const char *name, u_int64_t value)
int cgroup_set_value_uint64 (struct cgroup_controller *controller, const char *name, u_int64_t value)
 
int cgroup_set_value_bool (struct cgroup_controller *controller, const char *name, bool value)
int cgroup_set_value_bool (struct cgroup_controller *controller, const char *name, bool value)
 
int cgroup_get_value_name_count (struct cgroup_controller *controller)
int cgroup_get_value_name_count (struct cgroup_controller *controller)
 
char * cgroup_get_value_name (struct cgroup_controller *controller, int index)
char * cgroup_get_value_name (struct cgroup_controller *controller, int index)
 
int cgroup_get_procs (const char *name, const char *controller, pid_t **pids, int *size)
int cgroup_get_procs (const char *name, const char *controller, pid_t **pids, int *size)
 
int cgroup_get_threads (const char *name, const char *controller, pid_t **pids, int *size)
int cgroup_get_threads (const char *name, const char *controller, pid_t **pids, int *size)
 
int cg_chmod_recursive (struct cgroup *cgrp, mode_t dir_mode, int dirm_change, mode_t file_mode, int filem_change)
int cg_chmod_recursive (struct cgroup *cgrp, mode_t dir_mode, int dirm_change, mode_t file_mode, int filem_change)
 
char * cgroup_get_cgroup_name (struct cgroup *cgrp)
char * cgroup_get_cgroup_name (struct cgroup *cgrp)
 
int cgroup_convert_cgroup (struct cgroup *const out_cgrp, enum cg_version_t out_version, const struct cgroup *const in_cgrp, enum cg_version_t in_version)
 
int cgroup_list_mount_points (const enum cg_version_t cgrp_version, char ***mount_paths)
int cgroup_list_mount_points (const enum cg_version_t cgrp_version, char ***mount_paths)
 
int cgroup_get_controller_version (const char *const controller, enum cg_version_t *const version)
int cgroup_get_controller_version (const char *const controller, enum cg_version_t *const version)
 
enum cg_setup_mode_t cgroup_setup_mode (void)
enum cg_setup_mode_t cgroup_setup_mode (void)
 
int cgroup_get_controller_count (struct cgroup *cgrp)
int cgroup_get_controller_count (struct cgroup *cgrp)
 
struct cgroup_controllercgroup_get_controller_by_index (struct cgroup *cgrp, int index)
struct cgroup_controllercgroup_get_controller_by_index (struct cgroup *cgrp, int index)
 
char * cgroup_get_controller_name (struct cgroup_controller *controller)
char * cgroup_get_controller_name (struct cgroup_controller *controller)
 
bool is_cgroup_mode_legacy (void)
bool is_cgroup_mode_legacy (void)
 
bool is_cgroup_mode_hybrid (void)
bool is_cgroup_mode_hybrid (void)
 
bool is_cgroup_mode_unified (void)
bool is_cgroup_mode_unified (void)
 

Detailed Description

@@ -257,37 +272,27 @@ int cgroup_convert_cgroup< int cg_chmod_recursive ( - struct cgroup *  - cgrp, + struct cgroup * cgrp, - mode_t  - dir_mode, + mode_t dir_mode, - int  - dirm_change, + int dirm_change, - mode_t  - file_mode, + mode_t file_mode, - int  - filem_change  - - - - ) - + int filem_change )
@@ -313,8 +318,7 @@ int cgroup_convert_cgroup< int cgroup_add_all_controllers ( - struct cgroup *  - cgrp) + struct cgroup * cgrp) @@ -339,19 +343,12 @@ int cgroup_convert_cgroup< struct cgroup_controller * cgroup_add_controller ( - struct cgroup *  - cgrp, + struct cgroup * cgrp, - const char *  - name  - - - - ) - + const char * name )
@@ -376,29 +373,21 @@ int cgroup_convert_cgroup< int cgroup_add_value_bool ( - struct cgroup_controller *  - controller, + struct cgroup_controller * controller, - const char *  - name, + const char * name, - bool  - value  - - - - ) - + bool value )
-

Add parameter and its value to internal libcgroup structures. Use cgroup_modify_cgroup() or cgroup_create_cgroup() to write it to kernel.

+

Add parameter and its value to internal libcgroup structures. Use cgroup_modify_cgroup() or cgroup_create_cgroup() to write it to kernel.

Parameters
@@ -419,29 +408,21 @@ int  - - + - - + - - - - - - - +
controller
cgroup_convert_cgroup<
int cgroup_add_value_int64 (struct cgroup_controllercontroller, struct cgroup_controller * controller,
const char * name, const char * name,
int64_t value 
)int64_t value )
-

Add parameter and its value to internal libcgroup structures. Use cgroup_modify_cgroup() or cgroup_create_cgroup() to write it to kernel. Content of the value is copied to internal structures and is not needed after return from the function.

+

Add parameter and its value to internal libcgroup structures. Use cgroup_modify_cgroup() or cgroup_create_cgroup() to write it to kernel. Content of the value is copied to internal structures and is not needed after return from the function.

Parameters
@@ -462,29 +443,21 @@ int  - - + - - + - - - - - - - +
controller
cgroup_convert_cgroup<
int cgroup_add_value_string (struct cgroup_controllercontroller, struct cgroup_controller * controller,
const char * name, const char * name,
const char * value 
)const char * value )
-

Add parameter and its value to internal libcgroup structures. Use cgroup_modify_cgroup() or cgroup_create_cgroup() to write it to kernel.

+

Add parameter and its value to internal libcgroup structures. Use cgroup_modify_cgroup() or cgroup_create_cgroup() to write it to kernel.

Parameters
@@ -505,29 +478,21 @@ int  - - + - - + - - - - - - - +
controller
cgroup_convert_cgroup<
int cgroup_add_value_uint64 (struct cgroup_controllercontroller, struct cgroup_controller * controller,
const char * name, const char * name,
u_int64_t value 
)u_int64_t value )
-

Add parameter and its value to internal libcgroup structures. Use cgroup_modify_cgroup() or cgroup_create_cgroup() to write it to kernel.

+

Add parameter and its value to internal libcgroup structures. Use cgroup_modify_cgroup() or cgroup_create_cgroup() to write it to kernel.

Parameters
@@ -548,19 +513,12 @@ int  - - + - - - - - - - +
controller
cgroup_convert_cgroup<
int cgroup_compare_cgroup (struct cgroupcgrp_a, struct cgroup * cgrp_a,
struct cgroupcgrp_b 
)struct cgroup * cgrp_b )
@@ -592,19 +550,12 @@ int cgroup_convert_cgroup< int cgroup_compare_controllers ( - struct cgroup_controller *  - cgca, + struct cgroup_controller * cgca, - struct cgroup_controller *  - cgcb  - - - - ) - + struct cgroup_controller * cgcb )
@@ -635,19 +586,12 @@ int cgroup_convert_cgroup< int cgroup_copy_cgroup ( - struct cgroup *  - dst, + struct cgroup * dst, - struct cgroup *  - src  - - - - ) - + struct cgroup * src )
@@ -673,30 +617,23 @@ int cgroup_convert_cgroup< int cgroup_create_cgroup ( - struct cgroup *  - cgrp, + struct cgroup * cgrp, - int  - ignore_ownership  - - - - ) - + int ignore_ownership )
-

Physically create a control group in kernel. The group is created in all hierarchies, which cover controllers added by cgroup_add_controller(). All parameters set by cgroup_add_value_* functions are written. The created groups has owner which was set by cgroup_set_uid_gid() and permissions set by cgroup_set_permissions.

Parameters
+

Physically create a control group in kernel. The group is created in all hierarchies, which cover controllers added by cgroup_add_controller(). All parameters set by cgroup_add_value_* functions are written. The created groups has owner which was set by cgroup_set_uid_gid() and permissions set by cgroup_set_permissions.

Parameters
cgrp
ignore_ownershipWhen nozero, all errors are ignored when setting owner of the group and/or its tasks file.
-
Todo:
what is ignore_ownership good for?
+
Todo
what is ignore_ownership good for?
Return values
@@ -717,26 +654,19 @@ int  - - + - - - - - - - +
ECGROUPNOTEQUALif not all specified controller parameters were successfully set.
cgroup_convert_cgroup<
int cgroup_create_cgroup_from_parent (struct cgroupcgrp, struct cgroup * cgrp,
int ignore_ownership 
)int ignore_ownership )
-

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.

struct cgroup *foo = cgroup_new_cgroup("foo");
- -
int cgroup_create_cgroup_from_parent(struct cgroup *cgrp, int ignore_ownership)
Definition api.c:3233
-
Todo:
what is this good for? Why the list of controllers added by cgroup_add_controller() is not used, like in cgroup_create_cgroup()? I can't create subgroup of root group in just one hierarchy with this function!
+

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.

struct cgroup *foo = cgroup_new_cgroup("foo");
+ +
int cgroup_create_cgroup_from_parent(struct cgroup *cgrp, int ignore_ownership)
Definition api.c:3233
+
Todo
what is this good for? Why the list of controllers added by cgroup_add_controller() is not used, like in cgroup_create_cgroup()? I can't create subgroup of root group in just one hierarchy with this function!
Parameters
@@ -744,7 +674,7 @@ int 
cgrpThe cgroup to create. Only it's name is used, everything else is discarded.
cgroup_convert_cgroup<
-
Todo:
what is ignore_ownership good for?
+
Todo
what is ignore_ownership good for?
Return values
@@ -764,24 +694,17 @@ int  - - + - - - - - - - +
ECGROUPNOTEQUALif not all inherited controller parameters were successfully set (this is expected).
cgroup_convert_cgroup<
int cgroup_delete_cgroup (struct cgroupcgrp, struct cgroup * cgrp,
int ignore_migration 
)int ignore_migration )
-

Physically remove a control group from kernel. The group is removed from all hierarchies, which cover controllers added by cgroup_add_controller() or cgroup_get_cgroup(). All tasks inside the group are automatically moved to parent group.

-

The group being removed must be empty, i.e. without subgroups. Use cgroup_delete_cgroup_ext() for recursive delete.

+

Physically remove a control group from kernel. The group is removed from all hierarchies, which cover controllers added by cgroup_add_controller() or cgroup_get_cgroup(). All tasks inside the group are automatically moved to parent group.

+

The group being removed must be empty, i.e. without subgroups. Use cgroup_delete_cgroup_ext() for recursive delete.

Parameters
@@ -789,7 +712,7 @@ int 
cgrp
cgroup_convert_cgroup<
-
Todo:
what is ignore_migration good for? rmdir() will fail if tasks were not moved.
+
Todo
what is ignore_migration good for? rmdir() will fail if tasks were not moved.

cgroup_delete cgroup deletes a control group. struct cgroup *cgrp takes the group which is to be deleted.

returns 0 on success.

@@ -804,19 +727,12 @@ int cgroup_convert_cgroup< int cgroup_delete_cgroup_ext ( - struct cgroup *  - cgrp, + struct cgroup * cgrp, - int  - flags  - - - - ) - + int flags )
@@ -840,8 +756,7 @@ int cgroup_convert_cgroup< void cgroup_free ( - struct cgroup **  - cgrp) + struct cgroup ** cgrp) @@ -864,13 +779,12 @@ int cgroup_convert_cgroup< void cgroup_free_controllers ( - struct cgroup *  - cgrp) + struct cgroup * cgrp)
-

Free internal list of controllers from the group.

Todo:
should this function be public???
+

Free internal list of controllers from the group.

Todo
should this function be public???
Parameters
@@ -889,16 +803,15 @@ int  - - +
cgrp
cgroup_convert_cgroup<
int cgroup_get_cgroup (struct cgroupcgrp)struct cgroup * cgrp)
-

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 root with controllers from all hierarchies, because the root group is available in all of them.

struct cgroup *root = cgroup_new_cgroup("/");
- -
int cgroup_get_cgroup(struct cgroup *cgrp)
Definition api.c:3767
-
Todo:
what is this function good for? Why is not considered only the list of controllers attached by cgroup_add_controller()? What owners will return cgroup_get_uid_gid() if the group is in multiple hierarchies, each with different owner of tasks file?
+

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 root with controllers from all hierarchies, because the root group is available in all of them.

struct cgroup *root = cgroup_new_cgroup("/");
+ +
int cgroup_get_cgroup(struct cgroup *cgrp)
Definition api.c:3767
+
Todo
what is this function good for? Why is not considered only the list of controllers attached by cgroup_add_controller()? What owners will return cgroup_get_uid_gid() if the group is in multiple hierarchies, each with different owner of tasks file?
Parameters
@@ -917,8 +830,7 @@ int  - - +
cgrpThe cgroup to load. Only it's name is used, everything else is replaced.
cgroup_convert_cgroup<
char * cgroup_get_cgroup_name (struct cgroupcgrp)struct cgroup * cgrp)
@@ -941,23 +853,16 @@ int cgroup_convert_cgroup< struct cgroup_controller * cgroup_get_controller ( - struct cgroup *  - cgrp, + struct cgroup * cgrp, - const char *  - name  - - - - ) - + const char * name )
-

Return appropriate controller from given group. The controller must be added before using cgroup_add_controller() or loaded from kernel using cgroup_get_cgroup().

Parameters
+

Return appropriate controller from given group. The controller must be added before using cgroup_add_controller() or loaded from kernel using cgroup_get_cgroup().

Parameters
@@ -976,19 +881,12 @@ int  - - + - - - - - - - +
cgrp
nameThe name of the controller, e.g. "freezer".
cgroup_convert_cgroup<
struct cgroup_controller * cgroup_get_controller_by_index (struct cgroupcgrp, struct cgroup * cgrp,
int index 
)int index )
@@ -1012,8 +910,7 @@ int cgroup_convert_cgroup< int cgroup_get_controller_count ( - struct cgroup *  - cgrp) + struct cgroup * cgrp) @@ -1038,8 +935,7 @@ int cgroup_convert_cgroup< char * cgroup_get_controller_name ( - struct cgroup_controller *  - controller) + struct cgroup_controller * controller) @@ -1064,19 +960,12 @@ int cgroup_convert_cgroup< int cgroup_get_controller_version ( - const char *const  - controller, + const char *const controller, - enum cg_version_t *const  - version  - - - - ) - + enum cg_version_t *const version )
@@ -1100,31 +989,22 @@ int cgroup_convert_cgroup< int cgroup_get_procs ( - const char *  - name, + const char * name, - const char *  - controller, + const char * controller, - pid_t **  - pids, + pid_t ** pids, - int *  - size  - - - - ) - + int * size )
@@ -1149,31 +1029,22 @@ int cgroup_convert_cgroup< int cgroup_get_threads ( - const char *  - name, + const char * name, - const char *  - controller, + const char * controller, - pid_t **  - pids, + pid_t ** pids, - int *  - size  - - - - ) - + int * size )
@@ -1198,41 +1069,31 @@ int cgroup_convert_cgroup< int cgroup_get_uid_gid ( - struct cgroup *  - cgrp, + struct cgroup * cgrp, - uid_t *  - tasks_uid, + uid_t * tasks_uid, - gid_t *  - tasks_gid, + gid_t * tasks_gid, - uid_t *  - control_uid, + uid_t * control_uid, - gid_t *  - control_gid  - - - - ) - + gid_t * control_gid )
-

Return owners of the group's tasks file and control files. The data is read from libcgroup internal cgroup structure, use cgroup_set_uid_gid() or cgroup_get_cgroup() to fill it.

+

Return owners of the group's tasks file and control files. The data is read from libcgroup internal cgroup structure, use cgroup_set_uid_gid() or cgroup_get_cgroup() to fill it.

@@ -1245,29 +1106,21 @@ int cgroup_convert_cgroup< int cgroup_get_value_bool ( - struct cgroup_controller *  - controller, + struct cgroup_controller * controller, - const char *  - name, + const char * name, - bool *  - value  - - - - ) - + bool * value )
-

Read a parameter value from libcgroup internal structures. Use cgroup_get_cgroup() to fill these structures with data from kernel.

+

Read a parameter value from libcgroup internal structures. Use cgroup_get_cgroup() to fill these structures with data from kernel.

Parameters
@@ -1288,29 +1141,21 @@ int  - - + - - + - - - - - - - +
controller
cgroup_convert_cgroup<
int cgroup_get_value_int64 (struct cgroup_controllercontroller, struct cgroup_controller * controller,
const char * name, const char * name,
int64_t * value 
)int64_t * value )
-

Read a parameter value from libcgroup internal structures. Use cgroup_get_cgroup() to fill these structures with data from kernel.

+

Read a parameter value from libcgroup internal structures. Use cgroup_get_cgroup() to fill these structures with data from kernel.

Parameters
@@ -1331,23 +1176,16 @@ int  - - + - - - - - - - +
controller
cgroup_convert_cgroup<
char * cgroup_get_value_name (struct cgroup_controllercontroller, struct cgroup_controller * controller,
int index 
)int index )
-

Return the name of parameter of controller at given index. The index goes from 0 to cgroup_get_value_name_count()-1. Use this function to list all parameter of the controller.

+

Return the name of parameter of controller at given index. The index goes from 0 to cgroup_get_value_name_count()-1. Use this function to list all parameter of the controller.

Note
The returned value is pointer to internal libcgroup structure, do not free it.
Parameters
@@ -1369,13 +1207,12 @@ int  - - +
cgroup_convert_cgroup<
int cgroup_get_value_name_count (struct cgroup_controllercontroller)struct cgroup_controller * controller)
-

Return the number of variables for the specified controller in libcgroup internal structures. Use cgroup_get_cgroup() to fill these structures with data from kernel. Use this function together with cgroup_get_value_name() to list all parameters of a group.

+

Return the number of variables for the specified controller in libcgroup internal structures. Use cgroup_get_cgroup() to fill these structures with data from kernel. Use this function together with cgroup_get_value_name() to list all parameters of a group.

Parameters
@@ -1395,30 +1232,22 @@ int  - - + - - + - - - - - - - +
controller
cgroup_convert_cgroup<
int cgroup_get_value_string (struct cgroup_controllercontroller, struct cgroup_controller * controller,
const char * name, const char * name,
char ** value 
)char ** value )
-

Read a parameter value from libcgroup internal structures. Use cgroup_get_cgroup() to fill these structures with data from kernel. It's up to the caller to free returned value.

-

This function works only for 'short' parameters. Use cgroup_read_stats_begin(), cgroup_read_stats_next() and cgroup_read_stats_end() to read stats parameter, which can be longer than libcgroup's internal buffers.

Todo:
rephrase, it's too vague... How big is the buffer actually?
+

Read a parameter value from libcgroup internal structures. Use cgroup_get_cgroup() to fill these structures with data from kernel. It's up to the caller to free returned value.

+

This function works only for 'short' parameters. Use cgroup_read_stats_begin(), cgroup_read_stats_next() and cgroup_read_stats_end() to read stats parameter, which can be longer than libcgroup's internal buffers.

Todo
rephrase, it's too vague... How big is the buffer actually?
Parameters
@@ -1439,29 +1268,21 @@ int  - - + - - + - - - - - - - +
controller
cgroup_convert_cgroup<
int cgroup_get_value_uint64 (struct cgroup_controllercontroller, struct cgroup_controller * controller,
const char * name, const char * name,
u_int64_t * value 
)u_int64_t * value )
-

Read a parameter value from libcgroup internal structures. Use cgroup_get_cgroup() to fill these structures with data from kernel.

+

Read a parameter value from libcgroup internal structures. Use cgroup_get_cgroup() to fill these structures with data from kernel.

Parameters
@@ -1482,19 +1303,12 @@ int  - - + - - - - - - - +
controller
cgroup_convert_cgroup<
int cgroup_list_mount_points (const enum cg_version_t cgrp_version, const enum cg_version_t cgrp_version,
char *** mount_paths 
)char *** mount_paths )
@@ -1519,8 +1333,7 @@ int cgroup_convert_cgroup< int cgroup_modify_cgroup ( - struct cgroup *  - cgrp) + struct cgroup * cgrp) @@ -1547,8 +1360,7 @@ int cgroup_convert_cgroup< struct cgroup * cgroup_new_cgroup ( - const char *  - name) + const char * name) @@ -1560,7 +1372,7 @@ int cgroup_convert_cgroup< -
Todo:
suggest one preferred way, either "/foo" or "foo".
+
Todo
suggest one preferred way, either "/foo" or "foo".
Returns
Created group or NULL on error.
@@ -1574,31 +1386,22 @@ int cgroup_convert_cgroup< void cgroup_set_permissions ( - struct cgroup *  - cgrp, + struct cgroup * cgrp, - mode_t  - control_dperm, + mode_t control_dperm, - mode_t  - control_fperm, + mode_t control_fperm, - mode_t  - task_fperm  - - - - ) - + mode_t task_fperm )
@@ -1623,41 +1426,31 @@ int cgroup_convert_cgroup< int cgroup_set_uid_gid ( - struct cgroup *  - cgrp, + struct cgroup * cgrp, - uid_t  - tasks_uid, + uid_t tasks_uid, - gid_t  - tasks_gid, + gid_t tasks_gid, - uid_t  - control_uid, + uid_t control_uid, - gid_t  - control_gid  - - - - ) - + gid_t control_gid )
-

Set owner of the group control files and the tasks file. This function modifies only libcgroup internal cgroup structure, use cgroup_create_cgroup() afterwards to create the group with given owners.

+

Set owner of the group control files and the tasks file. This function modifies only libcgroup internal cgroup structure, use cgroup_create_cgroup() afterwards to create the group with given owners.

Parameters
@@ -1680,29 +1473,21 @@ int  - - + - - + - - - - - - - +
cgrp
cgroup_convert_cgroup<
int cgroup_set_value_bool (struct cgroup_controllercontroller, struct cgroup_controller * controller,
const char * name, const char * name,
bool value 
)bool value )
-

Set a parameter value in libcgroup internal structures. Use cgroup_modify_cgroup() or cgroup_create_cgroup() to write it to kernel.

+

Set a parameter value in libcgroup internal structures. Use cgroup_modify_cgroup() or cgroup_create_cgroup() to write it to kernel.

Parameters
@@ -1723,29 +1508,21 @@ int  - - + - - + - - - - - - - +
controller
cgroup_convert_cgroup<
int cgroup_set_value_int64 (struct cgroup_controllercontroller, struct cgroup_controller * controller,
const char * name, const char * name,
int64_t value 
)int64_t value )
-

Set a parameter value in libcgroup internal structures. Use cgroup_modify_cgroup() or cgroup_create_cgroup() to write it to kernel. Content of the value is copied to internal structures and is not needed after return from the function.

+

Set a parameter value in libcgroup internal structures. Use cgroup_modify_cgroup() or cgroup_create_cgroup() to write it to kernel. Content of the value is copied to internal structures and is not needed after return from the function.

Parameters
@@ -1766,29 +1543,21 @@ int  - - + - - + - - - - - - - +
controller
cgroup_convert_cgroup<
int cgroup_set_value_string (struct cgroup_controllercontroller, struct cgroup_controller * controller,
const char * name, const char * name,
const char * value 
)const char * value )
-

Set a parameter value in libcgroup internal structures. Use cgroup_modify_cgroup() or cgroup_create_cgroup() to write it to kernel.

+

Set a parameter value in libcgroup internal structures. Use cgroup_modify_cgroup() or cgroup_create_cgroup() to write it to kernel.

Parameters
@@ -1809,29 +1578,21 @@ int  - - + - - + - - - - - - - +
controller
cgroup_convert_cgroup<
int cgroup_set_value_uint64 (struct cgroup_controllercontroller, struct cgroup_controller * controller,
const char * name, const char * name,
u_int64_t value 
)u_int64_t value )
-

Set a parameter value in libcgroup internal structures. Use cgroup_modify_cgroup() or cgroup_create_cgroup() to write it to kernel.

+

Set a parameter value in libcgroup internal structures. Use cgroup_modify_cgroup() or cgroup_create_cgroup() to write it to kernel.

Parameters
@@ -1852,8 +1613,7 @@ int  - - +
controller
cgroup_convert_cgroup<
enum cg_setup_mode_t cgroup_setup_mode (void )void )
@@ -1873,8 +1633,7 @@ int cgroup_convert_cgroup< bool is_cgroup_mode_hybrid ( - void  - ) + void ) @@ -1892,8 +1651,7 @@ int cgroup_convert_cgroup< bool is_cgroup_mode_legacy ( - void  - ) + void ) @@ -1911,8 +1669,7 @@ int cgroup_convert_cgroup< bool is_cgroup_mode_unified ( - void  - ) + void ) @@ -1924,7 +1681,8 @@ int cgroup_convert_cgroup<
+ diff --git a/group__group__iterators.html b/group__group__iterators.html index bd0823bc..be973c8a 100644 --- a/group__group__iterators.html +++ b/group__group__iterators.html @@ -3,12 +3,16 @@ - + libcgroup: 3. Iterators + + + + @@ -29,24 +33,35 @@ - + + +
+

Walk through control group filesystem

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.

-enum  cgroup_walk_type { CGROUP_WALK_TYPE_PRE_DIR = 0x1 -, CGROUP_WALK_TYPE_POST_DIR = 0x2 +enum  cgroup_walk_type { CGROUP_WALK_TYPE_PRE_DIR = 0x1 +, CGROUP_WALK_TYPE_POST_DIR = 0x2 }   -enum  cgroup_file_type { CGROUP_FILE_TYPE_FILE -, CGROUP_FILE_TYPE_DIR -, CGROUP_FILE_TYPE_OTHER +enum  cgroup_file_type { CGROUP_FILE_TYPE_FILE +, CGROUP_FILE_TYPE_DIR +, CGROUP_FILE_TYPE_OTHER }   -int cgroup_walk_tree_begin (const char *controller, const char *base_path, int depth, void **handle, struct cgroup_file_info *info, int *base_level) +int cgroup_walk_tree_begin (const char *controller, const char *base_path, int depth, void **handle, struct cgroup_file_info *info, int *base_level)   -int cgroup_walk_tree_next (int depth, void **handle, struct cgroup_file_info *info, int base_level) +int cgroup_walk_tree_next (int depth, void **handle, struct cgroup_file_info *info, int base_level)   -int cgroup_walk_tree_end (void **handle) +int cgroup_walk_tree_end (void **handle)   -int cgroup_walk_tree_set_flags (void **handle, int flags) +int cgroup_walk_tree_set_flags (void **handle, int flags)   -int cgroup_read_value_begin (const char *const controller, const char *path, const char *const name, void **handle, char *buffer, int max) +int cgroup_read_value_begin (const char *const controller, const char *path, const char *const name, void **handle, char *buffer, int max)   -int cgroup_read_value_next (void **handle, char *buffer, int max) +int cgroup_read_value_next (void **handle, char *buffer, int max)   -int cgroup_read_value_end (void **handle) +int cgroup_read_value_end (void **handle)   - + - + - + - +

Read group stats

libcgroup's cgroup_get_value_string() reads only relatively short parameters of a group. Use following functions to read stats parameter, which can be quite long.

int cgroup_read_stats_begin (const char *controller, const char *path, void **handle, struct cgroup_stat *stat)
int cgroup_read_stats_begin (const char *controller, const char *path, void **handle, struct cgroup_stat *stat)
 
int cgroup_read_stats_next (void **handle, struct cgroup_stat *stat)
int cgroup_read_stats_next (void **handle, struct cgroup_stat *stat)
 
int cgroup_read_stats_end (void **handle)
int cgroup_read_stats_end (void **handle)
 
#define CG_VALUE_MAX   100
#define CG_VALUE_MAX   100
 
- + - + - +

List all tasks in a group

Use following functions to read tasks file of a group.

int cgroup_get_task_begin (const char *cgrp, const char *controller, void **handle, pid_t *pid)
int cgroup_get_task_begin (const char *cgrp, const char *controller, void **handle, pid_t *pid)
 
int cgroup_get_task_next (void **handle, pid_t *pid)
int cgroup_get_task_next (void **handle, pid_t *pid)
 
int cgroup_get_task_end (void **handle)
int cgroup_get_task_end (void **handle)
 
- - + - + - +

List mounted controllers

Use following function to list mounted controllers and to see, how they are mounted together in hierarchies. Use cgroup_get_all_controller_begin() (see later) to list all controllers, including those which are not mounted.

+

Use following function to list mounted controllers and to see, how they are mounted together in hierarchies. Use cgroup_get_all_controller_begin() (see later) to list all controllers, including those which are not mounted.

int cgroup_get_controller_begin (void **handle, struct cgroup_mount_point *info)
int cgroup_get_controller_begin (void **handle, struct cgroup_mount_point *info)
 
int cgroup_get_controller_next (void **handle, struct cgroup_mount_point *info)
int cgroup_get_controller_next (void **handle, struct cgroup_mount_point *info)
 
int cgroup_get_controller_end (void **handle)
int cgroup_get_controller_end (void **handle)
 
- + - + - +

List all controllers

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.

int cgroup_get_all_controller_begin (void **handle, struct controller_data *info)
int cgroup_get_all_controller_begin (void **handle, struct controller_data *info)
 
int cgroup_get_all_controller_next (void **handle, struct controller_data *info)
int cgroup_get_all_controller_next (void **handle, struct controller_data *info)
 
int cgroup_get_all_controller_end (void **handle)
int cgroup_get_all_controller_end (void **handle)
 
- + - + - +

List all mount points of a controller.

Use following functions to list all mount points of a hierarchy with given controller.

int cgroup_get_subsys_mount_point_begin (const char *controller, void **handle, char *path)
int cgroup_get_subsys_mount_point_begin (const char *controller, void **handle, char *path)
 
int cgroup_get_subsys_mount_point_next (void **handle, char *path)
int cgroup_get_subsys_mount_point_next (void **handle, char *path)
 
int cgroup_get_subsys_mount_point_end (void **handle)
int cgroup_get_subsys_mount_point_end (void **handle)
 

Detailed Description

@@ -185,7 +200,7 @@ Data Structures
  • void iterator_name_end(void **handle)

    • Free any data associated with the iterator. This function must be called even when iterator_name_begin() fails.
    -
    Todo:
    not all iterators follow this pattern, e.g. cgroup_walk_tree_begin() can result both in a state that cgroup_walk_tree_end() is not needed and will SIGSEGV and in a state that cgroup_walk_tree_end() is needed to free allocated memory. Complete review is needed!
    +
    Todo
    not all iterators follow this pattern, e.g. cgroup_walk_tree_begin() can result both in a state that cgroup_walk_tree_end() is not needed and will SIGSEGV and in a state that cgroup_walk_tree_end() is needed to free allocated memory. Complete review is needed!
    Example of iterator usage:
    void *handle; // our iterator handle
    my_type item; // the data returned by the iterator
    int ret;
    @@ -226,7 +241,7 @@ Data Structures
    @@ -236,7 +251,7 @@ Data Structures CGROUP_FILE_TYPE_DIR 

    Directory.

    -CGROUP_FILE_TYPE_OTHER 

    Directory.

    Todo:
    really?
    +CGROUP_FILE_TYPE_OTHER 

    Directory.

    Todo
    really?
    @@ -249,7 +264,7 @@ Data Structures
    @@ -281,19 +296,12 @@ Data Structures int cgroup_get_all_controller_begin ( - void **  - handle, + void ** handle, - struct controller_data *  - info  - - - - ) - + struct controller_data * info )
    @@ -316,8 +324,7 @@ Data Structures int cgroup_get_all_controller_end ( - void **  - handle) + void ** handle) @@ -335,19 +342,12 @@ Data Structures int cgroup_get_all_controller_next ( - void **  - handle, + void ** handle, - struct controller_data *  - info  - - - - ) - + struct controller_data * info )
    @@ -370,19 +370,12 @@ Data Structures int cgroup_get_controller_begin ( - void **  - handle, + void ** handle, - struct cgroup_mount_point *  - info  - - - - ) - + struct cgroup_mount_point * info )
    @@ -406,8 +399,7 @@ Data Structures int cgroup_get_controller_end ( - void **  - handle) + void ** handle) @@ -425,19 +417,12 @@ Data Structures int cgroup_get_controller_next ( - void **  - handle, + void ** handle, - struct cgroup_mount_point *  - info  - - - - ) - + struct cgroup_mount_point * info )
    @@ -461,25 +446,17 @@ Data Structures int cgroup_get_subsys_mount_point_begin ( - const char *  - controller, + const char * controller, - void **  - handle, + void ** handle, - char *  - path  - - - - ) - + char * path )
    @@ -503,8 +480,7 @@ Data Structures int cgroup_get_subsys_mount_point_end ( - void **  - handle) + void ** handle) @@ -522,19 +498,12 @@ Data Structures int cgroup_get_subsys_mount_point_next ( - void **  - handle, + void ** handle, - char *  - path  - - - - ) - + char * path )
    @@ -557,31 +526,22 @@ Data Structures int cgroup_get_task_begin ( - const char *  - cgrp, + const char * cgrp, - const char *  - controller, + const char * controller, - void **  - handle, + void ** handle, - pid_t *  - pid  - - - - ) - + pid_t * pid )
    @@ -607,8 +567,7 @@ Data Structures int cgroup_get_task_end ( - void **  - handle) + void ** handle) @@ -626,19 +585,12 @@ Data Structures int cgroup_get_task_next ( - void **  - handle, + void ** handle, - pid_t *  - pid  - - - - ) - + pid_t * pid )
    @@ -662,35 +614,26 @@ Data Structures int cgroup_read_stats_begin ( - const char *  - controller, + const char * controller, - const char *  - path, + const char * path, - void **  - handle, + void ** handle, - struct cgroup_stat *  - stat  - - - - ) - + struct cgroup_stat * stat )
    -

    Read the statistics values (= stats parameter) for the specified controller and control group. One line is returned per cgroup_read_stats_begin() and cgroup_read_stats_next() call.

    Parameters
    +

    Read the statistics values (= stats parameter) for the specified controller and control group. One line is returned per cgroup_read_stats_begin() and cgroup_read_stats_next() call.

    Parameters
    @@ -712,8 +655,7 @@ Data Structures - - +
    controllerName of the controller for which stats are requested.
    pathThe path to control group, relative to hierarchy root.
    int cgroup_read_stats_end (void ** handle)void ** handle)
    @@ -731,19 +673,12 @@ Data Structures int cgroup_read_stats_next ( - void **  - handle, + void ** handle, - struct cgroup_stat *  - stat  - - - - ) - + struct cgroup_stat * stat )
    @@ -767,43 +702,32 @@ Data Structures int cgroup_read_value_begin ( - const char *const  - controller, + const char *const controller, - const char *  - path, + const char * path, - const char *const  - name, + const char *const name, - void **  - handle, + void ** handle, - char *  - buffer, + char * buffer, - int  - max  - - - - ) - + int max )
    @@ -831,8 +755,7 @@ Data Structures int cgroup_read_value_end ( - void **  - handle) + void ** handle) @@ -850,29 +773,21 @@ Data Structures int cgroup_read_value_next ( - void **  - handle, + void ** handle, - char *  - buffer, + char * buffer, - int  - max  - - - - ) - + int max )
    -

    Read the next string from the given variable handle which is generated by cgroup_read_stats_begin() function. the value is read up to newline character or at most max-1 characters, whichever comes first (i.e. similar to fgets()) per cgroup_read_stats_next() call

    Parameters
    +

    Read the next string from the given variable handle which is generated by cgroup_read_stats_begin() function. the value is read up to newline character or at most max-1 characters, whichever comes first (i.e. similar to fgets()) per cgroup_read_stats_next() call

    Parameters
    @@ -894,47 +809,36 @@ Data Structures - - + - - + - - + - - + - - + - - - - - - - +
    handleThe handle to be used during iteration.
    datareturned the string.
    int cgroup_walk_tree_begin (const char * controller, const char * controller,
    const char * base_path, const char * base_path,
    int depth, int depth,
    void ** handle, void ** handle,
    struct cgroup_file_infoinfo, struct cgroup_file_info * info,
    int * base_level 
    )int * base_level )
    -

    Walk through the directory tree for the specified controller. The directory representing base_path is returned in info. Use cgroup_walk_tree_set_flags() to specify, in which order should be next directories returned.

    Parameters
    +

    Walk through the directory tree for the specified controller. The directory representing base_path is returned in info. Use cgroup_walk_tree_set_flags() to specify, in which order should be next directories returned.

    Parameters
    @@ -945,7 +849,7 @@ Data Structures
    controllerName of the controller, for which we want to walk the directory tree.
    base_pathBegin walking from this path. Use "/" to walk through full hierarchy.
    -
    Todo:
    why base_level is not hidden in **handle?
    +
    Todo
    why base_level is not hidden in **handle?
    Returns
    ECGEOF when there is no node.
    @@ -959,8 +863,7 @@ Data Structures int cgroup_walk_tree_end ( - void **  - handle) + void ** handle) @@ -978,31 +881,22 @@ Data Structures int cgroup_walk_tree_next ( - int  - depth, + int depth, - void **  - handle, + void ** handle, - struct cgroup_file_info *  - info, + struct cgroup_file_info * info, - int  - base_level  - - - - ) - + int base_level )
    @@ -1011,7 +905,7 @@ Data Structures depthThe maximum depth to which the function should walk, 0 implies all the way down. handleThe handle to be used during iteration. infoThe info filled and returned about the next directory. - base_levelValue of base_level returned by cgroup_walk_tree_begin(). + base_levelValue of base_level returned by cgroup_walk_tree_begin().
    @@ -1028,23 +922,16 @@ Data Structures int cgroup_walk_tree_set_flags ( - void **  - handle, + void ** handle, - int  - flags  - - - - ) - + int flags )
  • -

    Set the flags for walk_tree. Currently available flags are in cgroup_walk_type enum.

    Parameters
    +

    Set the flags for walk_tree. Currently available flags are in cgroup_walk_type enum.

    Parameters
    @@ -1057,7 +944,8 @@ Data Structures + diff --git a/group__group__log.html b/group__group__log.html index 6ef3c95e..59c26364 100644 --- a/group__group__log.html +++ b/group__group__log.html @@ -3,12 +3,16 @@ - +libcgroup: 7. Logging + + + + @@ -29,24 +33,35 @@
    handleThe handle of the iterator.
    flags
    - + +
    +
    +

    Logging

    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.

    The logging callback can be set at any time, but setting the callback before any other libcgroup function (including cgroup_init()) is highly recommended. If no logger is set before cgroup_init() is called, default logger is automatically set, logging CGROUP_LOG_ERROR messages to stdout.
    -
    Setting log level
    Some of the functions below set the log level as integer. Application can set directly a value of enum cgroup_log_level or use value -1 to set the log level automatically. In this case, libcgroup inspects environment variable CGROUP_LOGLEVEL if it is set and contains any of these values: ERROR, WARNING, INFO, DEBUG or integer number representing value from enum cgroup_log_level. If CGROUP_LOGLEVEL is not set or its value is not valid, CGROUP_LOG_ERROR is set as default log level.
    +
    Setting log level
    Some of the functions below set the log level as integer. Application can set directly a value of enum cgroup_log_level or use value -1 to set the log level automatically. In this case, libcgroup inspects environment variable CGROUP_LOGLEVEL if it is set and contains any of these values: ERROR, WARNING, INFO, DEBUG or integer number representing value from enum cgroup_log_level. If CGROUP_LOGLEVEL is not set or its value is not valid, CGROUP_LOG_ERROR is set as default log level.
    Example:
    Following short example shows custom libcgroup logger sending all log messages to stderr:
    static void my_logger(void *userdata, int level, const char *fmt, va_list ap)
    {
    vfprintf(stderr, fmt, ap);
    @@ -86,39 +101,39 @@ $(function() {
    {
    int ret;
    -
    cgroup_set_logger(my_logger, -1, NULL);
    +
    cgroup_set_logger(my_logger, -1, NULL);
    ret = cgroup_init();
    if (ret) {
    ...
    }
    ...
    -
    void cgroup_set_logger(cgroup_logger_callback logger, int loglevel, void *userdata)
    Definition log.c:42
    +
    void cgroup_set_logger(cgroup_logger_callback logger, int loglevel, void *userdata)
    Definition log.c:42
    -enum  cgroup_log_level {
    -  CGROUP_LOG_CONT = 0 -, CGROUP_LOG_ERROR -, CGROUP_LOG_WARNING -, CGROUP_LOG_INFO +enum  cgroup_log_level {
    +  CGROUP_LOG_CONT = 0 +, CGROUP_LOG_ERROR +, CGROUP_LOG_WARNING +, CGROUP_LOG_INFO ,
    -  CGROUP_LOG_DEBUG +  CGROUP_LOG_DEBUG
    }   typedef void(* cgroup_logger_callback) (void *userdata, int level, const char *fmt, va_list ap)   -void cgroup_set_logger (cgroup_logger_callback logger, int loglevel, void *userdata) +void cgroup_set_logger (cgroup_logger_callback logger, int loglevel, void *userdata)   -void cgroup_set_default_logger (int loglevel) +void cgroup_set_default_logger (int loglevel)   -void cgroup_set_loglevel (int loglevel) +void cgroup_set_loglevel (int loglevel)   -int cgroup_get_loglevel (void) +int cgroup_get_loglevel (void)   -void cgroup_log (int loglevel, const char *fmt,...) +void cgroup_log (int loglevel, const char *fmt,...)   -int cgroup_parse_log_level_str (const char *levelstr) +int cgroup_parse_log_level_str (const char *levelstr)  

    Detailed Description

    @@ -130,7 +145,7 @@ typedef void(* cgroup_logg
    @@ -163,8 +178,7 @@ typedef void(* cgroup_logg int cgroup_get_loglevel ( - void  - ) + void ) @@ -190,25 +204,17 @@ typedef void(* cgroup_logg void cgroup_log ( - int  - loglevel, + int loglevel, - const char *  - fmt, + const char * fmt, -   - ...  - - - - ) - + ... ) @@ -233,8 +239,7 @@ typedef void(* cgroup_logg int cgroup_parse_log_level_str ( - const char *  - levelstr) + const char * levelstr) @@ -265,8 +270,7 @@ typedef void(* cgroup_logg void cgroup_set_default_logger ( - int  - loglevel) + int loglevel) @@ -276,7 +280,7 @@ typedef void(* cgroup_logg
    -

    Set libcgroup logging to stdout. All messages with the given loglevel or below will be sent to standard output. Previous logger set by cgroup_set_logger() is replaced.

    +

    Set libcgroup logging to stdout. All messages with the given loglevel or below will be sent to standard output. Previous logger set by cgroup_set_logger() is replaced.

    Parameters
    @@ -298,25 +302,17 @@ typedef void(*  - - + - - + - - - - - - - +
    loglevelThe log level. Use value -1 to automatically discover the level from CGROUP_LOGLEVEL environment variable.
    cgroup_logg
    void cgroup_set_logger (cgroup_logger_callback logger, cgroup_logger_callback logger,
    int loglevel, int loglevel,
    void * userdata 
    )void * userdata )
    @@ -349,8 +345,7 @@ typedef void(* cgroup_logg void cgroup_set_loglevel ( - int  - loglevel) + int loglevel) @@ -372,7 +367,8 @@ typedef void(* cgroup_logg
    +
    diff --git a/group__group__tasks.html b/group__group__tasks.html index 135312b5..21698fb5 100644 --- a/group__group__tasks.html +++ b/group__group__tasks.html @@ -3,12 +3,16 @@ - + libcgroup: 4. Manipulation with tasks + + + + @@ -29,24 +33,35 @@
    - + + +
    +

    Simple task assignment

    Applications can use following functions to simply put a task into given control group and find a groups where given tasks is.

    -int cgroup_attach_task (struct cgroup *cgrp) +int cgroup_attach_task (struct cgroup *cgrp)   -int cgroup_attach_task_pid (struct cgroup *cgrp, pid_t tid) +int cgroup_attach_task_pid (struct cgroup *cgrp, pid_t tid)   -int cgroup_change_cgroup_path (const char *path, pid_t pid, const char *const controllers[]) +int cgroup_change_cgroup_path (const char *path, pid_t pid, const char *const controllers[])   -int cgroup_get_current_controller_path (pid_t pid, const char *controller, char **current_path) +int cgroup_get_current_controller_path (pid_t pid, const char *controller, char **current_path)   - + - + - +

    Rules

    libcgroup 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.

    int cgroup_init_rules_cache (void)
    int cgroup_init_rules_cache (void)
     
    int cgroup_reload_cached_rules (void)
    int cgroup_reload_cached_rules (void)
     
    void cgroup_print_rules_config (FILE *fp)
    void cgroup_print_rules_config (FILE *fp)
     
    - + - + - + - +

    Rule based task assignment

    libcgroup 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.

    int cgroup_change_all_cgroups (void)
    int cgroup_change_all_cgroups (void)
     
    int cgroup_change_cgroup_flags (uid_t uid, gid_t gid, const char *procname, pid_t pid, int flags)
    int cgroup_change_cgroup_flags (uid_t uid, gid_t gid, const char *procname, pid_t pid, int flags)
     
    int cgroup_change_cgroup_uid_gid_flags (uid_t uid, gid_t gid, pid_t pid, int flags)
    int cgroup_change_cgroup_uid_gid_flags (uid_t uid, gid_t gid, pid_t pid, int flags)
     
    int cgroup_change_cgroup_uid_gid (uid_t uid, gid_t gid, pid_t pid)
    int cgroup_change_cgroup_uid_gid (uid_t uid, gid_t gid, pid_t pid)
     
    - + - +

    Communication with cgrulesengd daemon

    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.

    int cgroup_register_unchanged_process (pid_t pid, int flags)
    int cgroup_register_unchanged_process (pid_t pid, int flags)
     
    int cgroup_attach_thread_tid (struct cgroup *cgroup, pid_t tid)
    int cgroup_attach_thread_tid (struct cgroup *cgroup, pid_t tid)
     

    Detailed Description

    @@ -126,8 +141,7 @@ $(function() { int cgroup_attach_task ( - struct cgroup *  - cgroup) + struct cgroup * cgroup) @@ -152,19 +166,12 @@ $(function() { int cgroup_attach_task_pid ( - struct cgroup *  - cgroup, + struct cgroup * cgroup, - pid_t  - tid  - - - - ) - + pid_t tid )
    @@ -189,19 +196,12 @@ $(function() { int cgroup_attach_thread_tid ( - struct cgroup *  - cgroup, + struct cgroup * cgroup, - pid_t  - tid  - - - - ) - + pid_t tid )
    @@ -226,8 +226,7 @@ $(function() { int cgroup_change_all_cgroups ( - void  - ) + void ) @@ -246,37 +245,27 @@ $(function() { int cgroup_change_cgroup_flags ( - uid_t  - uid, + uid_t uid, - gid_t  - gid, + gid_t gid, - const char *  - procname, + const char * procname, - pid_t  - pid, + pid_t pid, - int  - flags  - - - - ) - + int flags )
    @@ -292,7 +281,7 @@ $(function() { -
    Todo:
    Determine thread-safeness and fix of not safe.
    +
    Todo
    Determine thread-safeness and fix of not safe.
    @@ -305,25 +294,17 @@ $(function() { int cgroup_change_cgroup_path ( - const char *  - dest, + const char * dest, - pid_t  - pid, + pid_t pid, - const char *const  - controllers[]  - - - - ) - + const char *const controllers[] )
    @@ -336,7 +317,7 @@ $(function() { -
    Todo:
    should this function be really public?
    +
    Todo
    should this function be really public?

    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.

    returns 0 on success.

    @@ -351,29 +332,21 @@ $(function() { int cgroup_change_cgroup_uid_gid ( - uid_t  - uid, + uid_t uid, - gid_t  - gid, + gid_t gid, - pid_t  - pid  - - - - ) - + pid_t pid )
    -

    Provides backwards-compatibility with older versions of the API. This function is deprecated, and cgroup_change_cgroup_uid_gid_flags() should be used instead. In fact, this function simply calls the newer one with flags set to 0 (none).

    Parameters
    +

    Provides backwards-compatibility with older versions of the API. This function is deprecated, and cgroup_change_cgroup_uid_gid_flags() should be used instead. In fact, this function simply calls the newer one with flags set to 0 (none).

    Parameters
    @@ -381,7 +354,7 @@ $(function() {
    uidThe UID to match.
    gidThe GID to match.
    -

    Provides backwards-compatibility with older versions of the API. This function is deprecated, and cgroup_change_cgroup_uid_gid_flags() should be used instead. In fact, this function simply calls the newer one with flags set to 0 (none).

    Parameters
    +

    Provides backwards-compatibility with older versions of the API. This function is deprecated, and cgroup_change_cgroup_uid_gid_flags() should be used instead. In fact, this function simply calls the newer one with flags set to 0 (none).

    Parameters
    @@ -402,31 +375,22 @@ $(function() { - - + - - + - - + - - - - - - - +
    uidThe UID to match
    gidThe GID to match
    int cgroup_change_cgroup_uid_gid_flags (uid_t uid, uid_t uid,
    gid_t gid, gid_t gid,
    pid_t pid, pid_t pid,
    int flags 
    )int flags )
    @@ -440,7 +404,7 @@ $(function() { -
    Todo:
    Determine thread-safeness and fix if not safe.
    +
    Todo
    Determine thread-safeness and fix if not safe.
    @@ -453,25 +417,17 @@ $(function() { int cgroup_get_current_controller_path ( - pid_t  - pid, + pid_t pid, - const char *  - controller, + const char * controller, - char **  - current_path  - - - - ) - + char ** current_path )
    @@ -496,13 +452,12 @@ $(function() { int cgroup_init_rules_cache ( - void  - ) + void )
    -

    Initializes the rules cache and load it from /etc/cgrules.conf.

    Todo:
    add parameter with the filename?
    +

    Initializes the rules cache and load it from /etc/cgrules.conf.

    Todo
    add parameter with the filename?

    Initializes the rules cache.

    Returns
    0 on success, > 0 on error
    @@ -516,8 +471,7 @@ $(function() { void cgroup_print_rules_config ( - FILE *  - fp) + FILE * fp) @@ -546,19 +500,12 @@ $(function() { int cgroup_register_unchanged_process ( - pid_t  - pid, + pid_t pid, - int  - flags  - - - - ) - + int flags )
    @@ -581,8 +528,7 @@ $(function() { int cgroup_reload_cached_rules ( - void  - ) + void ) @@ -595,7 +541,8 @@ $(function() {
    + diff --git a/groups_8h_source.html b/groups_8h_source.html index 60c53732..5c86f415 100644 --- a/groups_8h_source.html +++ b/groups_8h_source.html @@ -3,12 +3,16 @@ - + libcgroup: include/libcgroup/groups.h Source File + + + + @@ -29,26 +33,31 @@ - + + @@ -77,6 +86,7 @@ $(document).ready(function() { init_codefold(0); }); +
    groups.h
    @@ -303,7 +313,8 @@ $(document).ready(function() { init_codefold(0); });
    + diff --git a/hierarchy.html b/hierarchy.html index fc883d20..f809b4fd 100644 --- a/hierarchy.html +++ b/hierarchy.html @@ -3,12 +3,16 @@ - + libcgroup: Class Hierarchy + + + + @@ -29,24 +33,35 @@ - + + +
    +
    This inheritance list is sorted roughly, but not completely, alphabetically:
    -
    [detail level 12]
    +
    [detail level 12]
    @@ -100,13 +115,13 @@ $(function() { - + - + @@ -117,7 +132,7 @@ $(function() { - + @@ -136,14 +151,15 @@ $(function() { - +
     Carray_parent_info
     Carray_unchanged
     Ccg_mount_point
     Ccontroller_data
     Cdeny_list_type
     Cexample_opts
     CException
     CException
     Cftests.cgroup.CgroupError
     Cftests.config.ConfigError
     Cftests.container.ContainerError
     Cftests.run.RunError
     Cext_cgroup_record
     Cobject
     Cobject
     Cftests.cgroup.Cgroup
     Cftests.cgroup.CgroupMount
     Cftests.config.Config
     Cftests.run.Run
     Cftests.systemd.Systemd
     Cparent_info
     Ctesting::Test
     Ctesting::Test
     CAPIArgsTest
     CBuildPathV1Test
     CBuildTasksProcPathTest
     CSetValuesRecursiveTest
     CSubtreeControlTest
     Cunchanged_pid
     CEnum
     CEnum
     Cftests.cgroup.CgroupVersion
    +
    diff --git a/index.html b/index.html index 21d2d9a2..c23ee11b 100644 --- a/index.html +++ b/index.html @@ -3,12 +3,16 @@ - + libcgroup: libcgroup + + + + @@ -29,24 +33,35 @@
    - + + +
    +
    + + diff --git a/iterators_8h_source.html b/iterators_8h_source.html index 153c6a77..e7fea124 100644 --- a/iterators_8h_source.html +++ b/iterators_8h_source.html @@ -3,12 +3,16 @@ - + libcgroup: include/libcgroup/iterators.h Source File + + + + @@ -29,26 +33,31 @@ - + + @@ -77,6 +86,7 @@ $(document).ready(function() { init_codefold(0); }); +
    iterators.h
    @@ -249,7 +259,8 @@ $(document).ready(function() { init_codefold(0); });
    + diff --git a/jquery.js b/jquery.js index 1dffb65b..875ada73 100644 --- a/jquery.js +++ b/jquery.js @@ -1,17 +1,143 @@ /*! jQuery v3.6.0 | (c) OpenJS 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=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},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&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,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.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(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+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),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-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|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(p.childNodes),p.childNodes),t[p.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&&(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&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$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[S]=!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&&e.namespaceURI,n=e&&(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:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),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=S,!C.getElementsByName||!C.getElementsByName(S).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){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";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("!=",F)}),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},j=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==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,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]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[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){N(t,!0)}return 0":{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=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(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:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.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 S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.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(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_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)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").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 _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.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(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.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?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.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=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.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,S.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)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.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"===S.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"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.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)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.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?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.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)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.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){S.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),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-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"�":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(p.childNodes),p.childNodes),t[p.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&&(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&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c +)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$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[S]=!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&&e.namespaceURI,n=e&&(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:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll( +":scope fieldset div").length}),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=S,!C.getElementsByName||!C.getElementsByName(S).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){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push( +"\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";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("!=",F)}),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},j=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==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,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]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null, +null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[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){N(t,!0)}return 0":{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=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(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:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.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 S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.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(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for( +var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_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)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0, +r=s[i].length;n").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 _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.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(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.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?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.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=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each( +function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.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,S.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)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.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"===S.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"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.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)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})} +),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.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?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.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)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.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){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
    "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},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;n").css({overflow:"hidden",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,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),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(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(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),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".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=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),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=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-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")];e<4;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;e").css({overflow:"hidden"}),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:++e.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;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,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}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t +){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t +]=y.widget.extend({},this.options[t]),n=0;n
    "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i}, +getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within, +s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},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;n").css({overflow:"hidden",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,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),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(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t +).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(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),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".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=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split( +","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add( +this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{ +width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(), +!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),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=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height +,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-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")];e<4;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;e").css({overflow:"hidden"}),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:++e.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;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e, +i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,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}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left +)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e +){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0), +i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth( +)-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e, +function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0 +]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1=f[g]?0:Math.min(f[g],n));!a&&1-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",{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.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right-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",{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.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){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 + */!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=$("").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=$('
    ').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",$([$('')[0],$('')[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.y0;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 + * 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=$("").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=$('
    ').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",$([$('')[0],$('')[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.y0;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"},$}); diff --git a/libcgroup-internal_8h_source.html b/libcgroup-internal_8h_source.html index 477f028b..4c84c530 100644 --- a/libcgroup-internal_8h_source.html +++ b/libcgroup-internal_8h_source.html @@ -3,12 +3,16 @@ - + libcgroup: src/libcgroup-internal.h Source File + + + + @@ -29,26 +33,31 @@
    - + + @@ -77,6 +86,7 @@ $(document).ready(function() { init_codefold(0); });
    +
    libcgroup-internal.h
    @@ -426,7 +436,8 @@ $(document).ready(function() { init_codefold(0); });
    + diff --git a/libcgroup_8h_source.html b/libcgroup_8h_source.html index 8559140a..2266d927 100644 --- a/libcgroup_8h_source.html +++ b/libcgroup_8h_source.html @@ -3,12 +3,16 @@ - + libcgroup: include/libcgroup.h Source File + + + + @@ -29,26 +33,31 @@ - + + @@ -77,6 +86,7 @@ $(document).ready(function() { init_codefold(0); }); +
    libcgroup.h
    @@ -103,7 +113,8 @@ $(document).ready(function() { init_codefold(0); });
    + diff --git a/log_8h_source.html b/log_8h_source.html index dcca4bb0..dbdb3779 100644 --- a/log_8h_source.html +++ b/log_8h_source.html @@ -3,12 +3,16 @@ - + libcgroup: include/libcgroup/log.h Source File + + + + @@ -29,26 +33,31 @@ - + + @@ -77,6 +86,7 @@ $(document).ready(function() { init_codefold(0); }); +
    log.h
    @@ -145,7 +155,8 @@ $(document).ready(function() { init_codefold(0); });
    + diff --git a/md_CONTRIBUTING.html b/md_CONTRIBUTING.html index f16745f2..24cf199f 100644 --- a/md_CONTRIBUTING.html +++ b/md_CONTRIBUTING.html @@ -3,12 +3,16 @@ - + libcgroup: How to Contribute to the libcgroup Project + + + + @@ -29,23 +33,33 @@ - + + +
    +
    How to Contribute to the libcgroup Project
    @@ -86,20 +101,20 @@ world." - Harold Kushner

    Test Your Code Using Existing Tests

    The libcgroup project utilizes unit and functional tests. These tests must successfully pass prior to a commit being merged.

    You can run both the unit and functional tests with the following command:

    # make check
    -

    You can invoke only the unit tests with the following commands:

    # cd tests/gunit
    +

    You can invoke only the unit tests with the following commands:

    # cd tests/gunit
     # make check
    -

    If there are unit test failures, running the unit tests outside of the automake framework will provide more information.

    # cd tests/gunit
    +

    If there are unit test failures, running the unit tests outside of the automake framework will provide more information.

    # cd tests/gunit
     # ./gtest
    -

    You can invoke only the functional tests with the following commands:

    # cd tests/ftests
    +

    You can invoke only the functional tests with the following commands:

    # cd tests/ftests
     # make check
    -

    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.

    +

    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.

    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.

    We encourage utilizing a VM for libcgroup development work. The continuous integration suite utilizes the latest Ubuntu LTS.

    To run the containerized tests only:

    # cd tests/ftests
     # ./ftests.sh
    -

    To run the non-containerized tests only:

    # cd tests/ftests
    +

    To run the non-containerized tests only:

    # cd tests/ftests
     # ./ftests-nocontainer.sh
    -

    After the run is complete, the ftests.sh.log and ftests-nocontainer.sh.log contain the full debug log for each run.

    +

    After the run is complete, the ftests.sh.log and ftests-nocontainer.sh.log contain the full debug log for each run.

    Add New Tests for New Functionality

    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.

    @@ -134,8 +149,8 @@ By making a contribution to this project, I certify that: 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. -

    ... then you just add a line to the bottom of your patch description, with your real name, saying:

    Signed-off-by: Random J Developer <random@developer.example.org>
    -

    You can add this to your commit description in git with git commit -s

    +

    ... then you just add a line to the bottom of your patch description, with your real name, saying:

    Signed-off-by: Random J Developer <random@developer.example.org>
    +

    You can add this to your commit description in git with git commit -s

    Submitting Patches

    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.

    @@ -145,8 +160,8 @@ Post Your Patches Upstream

    Submitting via Email

    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:

    # patch -p1 < changes.patch
    -

    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:

    # diff -purN libcgroup.orig/ libcgroup/
    -

    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.

    +

    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:

    # diff -purN libcgroup.orig/ libcgroup/
    +

    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.

    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.

    Submitting via GitHub Pull Requests

    @@ -155,7 +170,8 @@ Submitting via GitHub Pull Requests
    +
    diff --git a/md_README.html b/md_README.html index 4b9b7e3d..1a2dcc57 100644 --- a/md_README.html +++ b/md_README.html @@ -3,12 +3,16 @@ - + libcgroup: README + + + + @@ -29,23 +33,33 @@ - + + +
    +
    README
    @@ -78,7 +93,8 @@ $(function() {
    +
    diff --git a/md_SECURITY.html b/md_SECURITY.html index d6e62cc6..1df52f40 100644 --- a/md_SECURITY.html +++ b/md_SECURITY.html @@ -3,12 +3,16 @@ - + libcgroup: The libcgroup Security Vulnerability Handling Process + + + + @@ -29,23 +33,33 @@ - + + +
    +
    The libcgroup Security Vulnerability Handling Process
    @@ -95,7 +110,8 @@ Public Disclosure
    +
    diff --git a/md_doc_2internal_2release-github.html b/md_doc_2internal_2release-github.html index 398c16f3..eb0159c0 100644 --- a/md_doc_2internal_2release-github.html +++ b/md_doc_2internal_2release-github.html @@ -3,12 +3,16 @@ - + libcgroup: The libcgroup Release Process + + + + @@ -29,23 +33,33 @@ - + + +
    +
    The libcgroup Release Process
    @@ -85,10 +100,10 @@ $(function() { 3. Verify that the bundled test suite runs without error
    # ./bootstrap.sh
     # make check
    -

    +

    4. Verify that the packaging is correct

    # make distcheck
    -

    +

    5. Verify that there are no outstanding defects from Coverity

    # ./bootstrap.sh
     # export PATH=$PATH:/path/to/cov-build
    @@ -96,7 +111,7 @@ $(function() {
     # # verify the build succeeded.  Examine $? and cov-int/build-log.txt
     # tar czvf libcgroup-main@<current hash>.tar.gz cov-int
     # Upload the tar file to Coverity
    -

    +

    6. Perform any distribution test builds

    • Oracle Linux
    • @@ -109,33 +124,33 @@ $(function() {

      8. If this is a new major/minor release, create new 'release-X.Y' branch

      # git branch "release-X.Y"
      -

      +

      9. Update and commit the version number in configure.ac AC_INIT(...) macro and LIBRARY version macros

      10. Tag the release in the local repository with a signed tag

      # git tag -s -m "version X.Y.Z" vX.Y.Z
      -

      +

      11. Build final release tarball

      # make clean
       # ./bootstrap.sh
       # make dist-gzip
      -

      +

      12. Verify the release tarball in a separate directory

      <unpack the release tarball in a temporary directory>
       # ./configure --sysconfdir=/etc --localstatedir=/var \
       --enable-opaque-hierarchy="name=systemd" --enable-python --enable-systemd
       # make check
      -

      +

      13. Generate a checksum for the release tarball

      # sha256sum <tarball> > libcgroup-X.Y.Z.tar.gz.SHA256SUM
      -

      +

      14. GPG sign the release tarball and checksum using the maintainer's key

      # gpg --armor --detach-sign libcgroup-X.Y.Z.tar.gz
       # gpg --clearsign libcgroup-X.Y.Z.tar.gz.SHA256SUM
      -

      +

      15. Push the release tag to the main GitHub repository

      # git push <repo> vX.Y.Z
      -

      +

      16. Create a new GitHub release using the associated tag and upload the following files

      • libcgroup-X.Y.Z.tar.gz
      • @@ -151,7 +166,8 @@ $(function() {
    +
    diff --git a/md_samples_2cmdline_2systemd-with-idle-process.html b/md_samples_2cmdline_2systemd-with-idle-process.html index 5ade0c04..234517da 100644 --- a/md_samples_2cmdline_2systemd-with-idle-process.html +++ b/md_samples_2cmdline_2systemd-with-idle-process.html @@ -3,12 +3,16 @@ - + libcgroup: systemd-with-idle-process + + + + @@ -29,23 +33,33 @@ - + + +
    +
    systemd-with-idle-process
    @@ -227,7 +242,8 @@ Problems during this step?
    +
    diff --git a/md_tests_2README.html b/md_tests_2README.html index e65ea998..7eb34075 100644 --- a/md_tests_2README.html +++ b/md_tests_2README.html @@ -3,12 +3,16 @@ - + libcgroup: README + + + + @@ -29,23 +33,33 @@ - + + +
    +
    README
    @@ -78,7 +93,8 @@ $(function() {
    +
    diff --git a/md_tests_2ftests_2README.html b/md_tests_2ftests_2README.html index a940c56e..d525f3ae 100644 --- a/md_tests_2ftests_2README.html +++ b/md_tests_2ftests_2README.html @@ -3,12 +3,16 @@ - + libcgroup: Functional Test Suite for libcgroup + + + + @@ -29,23 +33,33 @@ - + + +
    +
    Functional Test Suite for libcgroup
    -

    This folder contains the functional test suite for libcgroup. The functional test suite utilizes lxc containers to guarantee a non-destructive test environment.

    +

    +

    This folder contains the functional test suite for libcgroup. The functional test suite utilizes lxc containers to guarantee a non-destructive test environment.

    The tests can be invoked individually, as a group of related tests, or from automake via the standard 'make check' command.

    Invocation

    Run a single test (first cd to tests/ftests):

    ./001-cgget-basic_cgget.py
     or
     ./ftests.py -N 15      # Run test #015
    -

    Run a suite of tests (first cd to tests/ftests):

    ./ftests.py -s cgget   # Run all cgget tests
    -

    Run all the tests by hand

    ./ftests.py
    +

    Run a suite of tests (first cd to tests/ftests):

    ./ftests.py -s cgget   # Run all cgget tests
    +

    Run all the tests by hand

    ./ftests.py
     # This may be advantageous over running make check
     # because it will try to re-use the same lxc
     # container for all of the tests.  This should
     # provide a significant performance increase
    -

    Run the tests from automake

    make check
    +

    Run the tests from automake

    make check
     # Then examine the *.trs and *.log files for
     # specifics regarding each test result
    -

    +

    Results

    The test suite will generate test results upon completion of the test run. An example result is below:

    Test Results:
    @@ -111,7 +127,8 @@ Results
    +
    diff --git a/menu.js b/menu.js index b0b26936..0fd1e990 100644 --- a/menu.js +++ b/menu.js @@ -22,15 +22,14 @@ @licend The above is the entire license notice for the JavaScript code in this file */ -function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { +function initMenu(relPath,searchEnabled,serverSide,searchPage,search,treeview) { function makeTree(data,relPath) { - var result=''; + let result=''; if ('children' in data) { result+='
      '; - for (var i in data.children) { - var url; - var link; - link = data.children[i].url; + for (let i in data.children) { + let url; + const link = data.children[i].url; if (link.substring(0,1)=='^') { url = link.substring(1); } else { @@ -44,7 +43,7 @@ function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { } return result; } - var searchBoxHtml; + let searchBoxHtml; if (searchEnabled) { if (serverSide) { searchBoxHtml='
      '+ @@ -88,29 +87,28 @@ function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { if (searchBoxHtml) { $('#main-menu').append('
    • '); } - var $mainMenuState = $('#main-menu-state'); - var prevWidth = 0; + const $mainMenuState = $('#main-menu-state'); + let prevWidth = 0; if ($mainMenuState.length) { - function initResizableIfExists() { - if (typeof initResizable==='function') initResizable(); + const initResizableIfExists = function() { + if (typeof initResizable==='function') initResizable(treeview); } // animate mobile menu - $mainMenuState.change(function(e) { - var $menu = $('#main-menu'); - var options = { duration: 250, step: initResizableIfExists }; + $mainMenuState.change(function() { + const $menu = $('#main-menu'); + let options = { duration: 250, step: initResizableIfExists }; if (this.checked) { - options['complete'] = function() { $menu.css('display', 'block') }; + options['complete'] = () => $menu.css('display', 'block'); $menu.hide().slideDown(options); } else { - options['complete'] = function() { $menu.css('display', 'none') }; + options['complete'] = () => $menu.css('display', 'none'); $menu.show().slideUp(options); } }); // set default menu visibility - function resetState() { - var $menu = $('#main-menu'); - var $mainMenuState = $('#main-menu-state'); - var newWidth = $(window).outerWidth(); + const resetState = function() { + const $menu = $('#main-menu'); + const newWidth = $(window).outerWidth(); if (newWidth!=prevWidth) { if ($(window).outerWidth()<768) { $mainMenuState.prop('checked',false); $menu.hide(); diff --git a/navtree.css b/navtree.css new file mode 100644 index 00000000..69211d4a --- /dev/null +++ b/navtree.css @@ -0,0 +1,149 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: var(--nav-text-active-color); + text-shadow: var(--nav-text-active-shadow); +} + +#nav-tree .selected .arrow { + color: var(--nav-arrow-selected-color); + text-shadow: none; +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px var(--font-family-nav); +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:var(--nav-text-active-color); +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: $width; + overflow : hidden; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:var(--nav-splitbar-image); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-repeat:repeat-x; + background-color: var(--nav-background-color); + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/pages.html b/pages.html index b22392d5..c12e3b51 100644 --- a/pages.html +++ b/pages.html @@ -3,12 +3,16 @@ - + libcgroup: Related Pages + + + + @@ -29,24 +33,35 @@
      - + +
    +
    +
    +
    diff --git a/resize.js b/resize.js new file mode 100644 index 00000000..178d03bc --- /dev/null +++ b/resize.js @@ -0,0 +1,147 @@ +/* + @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 initResizable(treeview) { + let sidenav,navtree,content,header,footer,barWidth=6; + const RESIZE_COOKIE_NAME = ''+'width'; + + function resizeWidth() { + const sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(sidenavWidth)+"px"}); + } + Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); + } + + function restoreWidth(navWidth) { + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + } + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight(treeview) { + const headerHeight = header.outerHeight(); + const windowHeight = $(window).height(); + let contentHeight; + if (treeview) + { + const footerHeight = footer.outerHeight(); + let navtreeHeight,sideNavHeight; + if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */ + contentHeight = windowHeight - headerHeight - footerHeight; + navtreeHeight = contentHeight; + sideNavHeight = contentHeight; + } else if (page_layout==1) { /* DISABLE_INDEX=YES */ + contentHeight = windowHeight - footerHeight; + navtreeHeight = windowHeight - headerHeight; + sideNavHeight = windowHeight; + } + navtree.css({height:navtreeHeight + "px"}); + sidenav.css({height:sideNavHeight + "px"}); + } + else + { + contentHeight = windowHeight - headerHeight; + } + content.css({height:contentHeight + "px"}); + if (location.hash.slice(1)) { + (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView(); + } + } + + function collapseExpand() { + let newWidth; + if (sidenav.width()>0) { + newWidth=0; + } else { + const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); + newWidth = (width>250 && width<$(window).width()) ? width : 250; + } + restoreWidth(newWidth); + const sidenavWidth = $(sidenav).outerWidth(); + Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); + } + + header = $("#top"); + content = $("#doc-content"); + footer = $("#nav-path"); + sidenav = $("#side-nav"); + if (!treeview) { +// title = $("#titlearea"); +// titleH = $(title).height(); +// let animating = false; +// content.on("scroll", function() { +// slideOpts = { duration: 200, +// step: function() { +// contentHeight = $(window).height() - header.outerHeight(); +// content.css({ height : contentHeight + "px" }); +// }, +// done: function() { animating=false; } +// }; +// if (content.scrollTop()>titleH && title.css('display')!='none' && !animating) { +// title.slideUp(slideOpts); +// animating=true; +// } else if (content.scrollTop()<=titleH && title.css('display')=='none' && !animating) { +// title.slideDown(slideOpts); +// animating=true; +// } +// }); + } else { + navtree = $("#nav-tree"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + } + $(window).resize(function() { resizeHeight(treeview); }); + if (treeview) + { + const device = navigator.userAgent.toLowerCase(); + const touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); + if (width) { restoreWidth(width); } else { resizeWidth(); } + } + resizeHeight(treeview); + const url = location.href; + const i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + const _preventDefault = function(evt) { evt.preventDefault(); }; + if (treeview) + { + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + // workaround for firefox + $("body").css({overflow: "hidden"}); + } + $(window).on('load',function() { resizeHeight(treeview); }); +} +/* @license-end */ diff --git a/search/all_15.js b/search/all_15.js index 369f2ca9..a7134b15 100644 --- a/search/all_15.js +++ b/search/all_15.js @@ -3,14 +3,16 @@ var searchData= ['name_0',['name',['../structcgroup__mount__point.html#a849ccf1e77fffd5d45304c6adf0d2100',1,'cgroup_mount_point::name'],['../structcontroller__data.html#a5474be4d8cc4553c94ca81c6a93f5a18',1,'controller_data::name'],['../structcg__mount__table__s.html#a9fc6421ae21cb12127b3c1f5af3a7d4a',1,'cg_mount_table_s::name']]], ['name_20mount_5fpoint_20index_1',['name mount_point index',['../classBuildPathV1Test.html#autotoc_md35',1,'']]], ['name_20mount_5fpoint_20index_20version_2',['name mount_point index version',['../classBuildTasksProcPathTest.html#autotoc_md36',1,'']]], - ['new_20github_20release_20using_20the_20associated_20tag_20and_20upload_20the_20following_20files_3',['16. Create a new GitHub release using the associated tag and upload the following files',['../md_doc_2internal_2release-github.html#autotoc_md24',1,'']]], - ['new_20major_20minor_20release_20create_20new_20release_20x_20y_20branch_4',['8. If this is a new major/minor release, create new 'release-X.Y' branch',['../md_doc_2internal_2release-github.html#autotoc_md16',1,'']]], - ['new_20tests_20for_20new_20functionality_5',['Add New Tests for New Functionality',['../md_CONTRIBUTING.html#autotoc_md2',1,'']]], - ['no_20outstanding_20defects_20from_20coverity_6',['5. Verify that there are no outstanding defects from Coverity',['../md_doc_2internal_2release-github.html#autotoc_md13',1,'']]], - ['no_5fperms_7',['NO_PERMS',['../group__group__groups.html#gad4ffad2eccf9fcbfa8a551e269e0ad58',1,'groups.h']]], - ['no_5fuid_5fgid_8',['NO_UID_GID',['../group__group__groups.html#ga2a7954a987e3fbf8eabcc94cf381353e',1,'groups.h']]], - ['notes_20for_20older_20releases_20which_20are_20now_20unsupported_9',['17. Update the GitHub release notes for older releases which are now unsupported',['../md_doc_2internal_2release-github.html#autotoc_md25',1,'']]], - ['now_20unsupported_10',['17. Update the GitHub release notes for older releases which are now unsupported',['../md_doc_2internal_2release-github.html#autotoc_md25',1,'']]], - ['num_5fcgroups_11',['num_cgroups',['../structcontroller__data.html#acd075c0bb48062bf720b68d0a30116eb',1,'controller_data']]], - ['number_20in_20configure_20ac_20ac_5finit_20macro_20and_20library_20version_20macros_12',['9. Update and commit the version number in configure.ac AC_INIT(...) macro and LIBRARY version macros',['../md_doc_2internal_2release-github.html#autotoc_md17',1,'']]] + ['new_20functionality_3',['Add New Tests for New Functionality',['../md_CONTRIBUTING.html#autotoc_md2',1,'']]], + ['new_20github_20release_20using_20the_20associated_20tag_20and_20upload_20the_20following_20files_4',['16. Create a new GitHub release using the associated tag and upload the following files',['../md_doc_2internal_2release-github.html#autotoc_md24',1,'']]], + ['new_20major_20minor_20release_20create_20new_20release_20x_20y_20branch_5',['8. If this is a new major/minor release, create new 'release-X.Y' branch',['../md_doc_2internal_2release-github.html#autotoc_md16',1,'']]], + ['new_20release_20x_20y_20branch_6',['8. If this is a new major/minor release, create new 'release-X.Y' branch',['../md_doc_2internal_2release-github.html#autotoc_md16',1,'']]], + ['new_20tests_20for_20new_20functionality_7',['Add New Tests for New Functionality',['../md_CONTRIBUTING.html#autotoc_md2',1,'']]], + ['no_20outstanding_20defects_20from_20coverity_8',['5. Verify that there are no outstanding defects from Coverity',['../md_doc_2internal_2release-github.html#autotoc_md13',1,'']]], + ['no_5fperms_9',['NO_PERMS',['../group__group__groups.html#gad4ffad2eccf9fcbfa8a551e269e0ad58',1,'groups.h']]], + ['no_5fuid_5fgid_10',['NO_UID_GID',['../group__group__groups.html#ga2a7954a987e3fbf8eabcc94cf381353e',1,'groups.h']]], + ['notes_20for_20older_20releases_20which_20are_20now_20unsupported_11',['17. Update the GitHub release notes for older releases which are now unsupported',['../md_doc_2internal_2release-github.html#autotoc_md25',1,'']]], + ['now_20unsupported_12',['17. Update the GitHub release notes for older releases which are now unsupported',['../md_doc_2internal_2release-github.html#autotoc_md25',1,'']]], + ['num_5fcgroups_13',['num_cgroups',['../structcontroller__data.html#acd075c0bb48062bf720b68d0a30116eb',1,'controller_data']]], + ['number_20in_20configure_20ac_20ac_5finit_20macro_20and_20library_20version_20macros_14',['9. Update and commit the version number in configure.ac AC_INIT(...) macro and LIBRARY version macros',['../md_doc_2internal_2release-github.html#autotoc_md17',1,'']]] ]; diff --git a/search/all_17.js b/search/all_17.js index 48a4ae8a..bf154e84 100644 --- a/search/all_17.js +++ b/search/all_17.js @@ -7,17 +7,18 @@ var searchData= ['passing_4',['2. Verify that the Github Actions are all passing',['../md_doc_2internal_2release-github.html#autotoc_md10',1,'']]], ['patches_5',['Submitting Patches',['../md_CONTRIBUTING.html#autotoc_md5',1,'']]], ['patches_20upstream_6',['Post Your Patches Upstream',['../md_CONTRIBUTING.html#autotoc_md6',1,'']]], - ['path_7',['path',['../structcgroup__mount__point.html#ad1e89dfc02cfd7341e2296086a4f251e',1,'cgroup_mount_point::path'],['../structcgroup__file__info.html#a801424e68139c930e40ea24be4d96a68',1,'cgroup_file_info::path']]], + ['path_7',['path',['../structcgroup__file__info.html#a801424e68139c930e40ea24be4d96a68',1,'cgroup_file_info::path'],['../structcgroup__mount__point.html#ad1e89dfc02cfd7341e2296086a4f251e',1,'cgroup_mount_point::path']]], ['perform_20any_20distribution_20test_20builds_8',['6. Perform any distribution test builds',['../md_doc_2internal_2release-github.html#autotoc_md14',1,'']]], ['pid_9',['pid',['../structcgroup__systemd__scope__opts.html#a73b472fe4247f194a78ffb9fd0f57008',1,'cgroup_systemd_scope_opts']]], ['point_20that_20resulted_20in_20code_20changes_20restart_20the_20process_10',['7. If any problems were found up to this point that resulted in code changes, restart the process',['../md_doc_2internal_2release-github.html#autotoc_md15',1,'']]], ['post_20your_20patches_20upstream_11',['Post Your Patches Upstream',['../md_CONTRIBUTING.html#autotoc_md6',1,'']]], ['problems_12',['Reporting Problems',['../md_SECURITY.html#autotoc_md29',1,'']]], ['problems_20were_20found_20up_20to_20this_20point_20that_20resulted_20in_20code_20changes_20restart_20the_20process_13',['7. If any problems were found up to this point that resulted in code changes, restart the process',['../md_doc_2internal_2release-github.html#autotoc_md15',1,'']]], - ['process_14',['process',['../md_doc_2internal_2release-github.html#autotoc_md15',1,'7. If any problems were found up to this point that resulted in code changes, restart the process'],['../classftests_1_1process_1_1Process.html',1,'ftests.process.Process'],['../md_samples_2cmdline_2systemd-with-idle-process.html',1,'systemd-with-idle-process'],['../md_doc_2internal_2release-github.html',1,'The libcgroup Release Process'],['../md_SECURITY.html',1,'The libcgroup Security Vulnerability Handling Process']]], - ['procnamewildcardtest_15',['ProcnameWildcardTest',['../classProcnameWildcardTest.html',1,'']]], - ['project_16',['How to Contribute to the libcgroup Project',['../md_CONTRIBUTING.html',1,'']]], - ['public_20disclosure_17',['Public Disclosure',['../md_SECURITY.html#autotoc_md31',1,'']]], - ['pull_20requests_18',['Submitting via GitHub Pull Requests',['../md_CONTRIBUTING.html#autotoc_md8',1,'']]], - ['push_20the_20release_20tag_20to_20the_20main_20github_20repository_19',['15. Push the release tag to the main GitHub repository',['../md_doc_2internal_2release-github.html#autotoc_md23',1,'']]] + ['process_14',['Process',['../classftests_1_1process_1_1Process.html',1,'ftests.process.Process'],['../md_doc_2internal_2release-github.html',1,'The libcgroup Release Process'],['../md_SECURITY.html',1,'The libcgroup Security Vulnerability Handling Process']]], + ['process_15',['process',['../md_doc_2internal_2release-github.html#autotoc_md15',1,'7. If any problems were found up to this point that resulted in code changes, restart the process'],['../md_samples_2cmdline_2systemd-with-idle-process.html',1,'systemd-with-idle-process']]], + ['procnamewildcardtest_16',['ProcnameWildcardTest',['../classProcnameWildcardTest.html',1,'']]], + ['project_17',['How to Contribute to the libcgroup Project',['../md_CONTRIBUTING.html',1,'']]], + ['public_20disclosure_18',['Public Disclosure',['../md_SECURITY.html#autotoc_md31',1,'']]], + ['pull_20requests_19',['Submitting via GitHub Pull Requests',['../md_CONTRIBUTING.html#autotoc_md8',1,'']]], + ['push_20the_20release_20tag_20to_20the_20main_20github_20repository_20',['15. Push the release tag to the main GitHub repository',['../md_doc_2internal_2release-github.html#autotoc_md23',1,'']]] ]; diff --git a/search/all_18.js b/search/all_18.js index d028107c..44152506 100644 --- a/search/all_18.js +++ b/search/all_18.js @@ -1,6 +1,6 @@ var searchData= [ - ['readme_0',['readme',['../md_README.html',1,'README'],['../md_tests_2README.html',1,'README']]], + ['readme_0',['README',['../md_README.html',1,'README'],['../md_tests_2README.html',1,'README']]], ['release_20create_20new_20release_20x_20y_20branch_1',['8. If this is a new major/minor release, create new 'release-X.Y' branch',['../md_doc_2internal_2release-github.html#autotoc_md16',1,'']]], ['release_20in_20the_20local_20repository_20with_20a_20signed_20tag_2',['10. Tag the release in the local repository with a signed tag',['../md_doc_2internal_2release-github.html#autotoc_md18',1,'']]], ['release_20milestone_20have_20been_20resolved_3',['1. Verify that all issues assigned to the release milestone have been resolved',['../md_doc_2internal_2release-github.html#autotoc_md9',1,'']]], @@ -11,18 +11,19 @@ var searchData= ['release_20tarball_20and_20checksum_20using_20the_20maintainer_20s_20key_8',['14. GPG sign the release tarball and checksum using the maintainer's key',['../md_doc_2internal_2release-github.html#autotoc_md22',1,'']]], ['release_20tarball_20in_20a_20separate_20directory_9',['12. Verify the release tarball in a separate directory',['../md_doc_2internal_2release-github.html#autotoc_md20',1,'']]], ['release_20using_20the_20associated_20tag_20and_20upload_20the_20following_20files_10',['16. Create a new GitHub release using the associated tag and upload the following files',['../md_doc_2internal_2release-github.html#autotoc_md24',1,'']]], - ['releases_20which_20are_20now_20unsupported_11',['17. Update the GitHub release notes for older releases which are now unsupported',['../md_doc_2internal_2release-github.html#autotoc_md25',1,'']]], - ['reporting_20problems_12',['Reporting Problems',['../md_SECURITY.html#autotoc_md29',1,'']]], - ['repository_13',['15. Push the release tag to the main GitHub repository',['../md_doc_2internal_2release-github.html#autotoc_md23',1,'']]], - ['repository_20with_20a_20signed_20tag_14',['10. Tag the release in the local repository with a signed tag',['../md_doc_2internal_2release-github.html#autotoc_md18',1,'']]], - ['requests_15',['Submitting via GitHub Pull Requests',['../md_CONTRIBUTING.html#autotoc_md8',1,'']]], - ['requirements_3a_16',['Requirements:',['../md_samples_2cmdline_2systemd-with-idle-process.html#autotoc_md27',1,'']]], - ['resolved_17',['1. Verify that all issues assigned to the release milestone have been resolved',['../md_doc_2internal_2release-github.html#autotoc_md9',1,'']]], - ['resolving_20sensitive_20security_20issues_18',['Resolving Sensitive Security Issues',['../md_SECURITY.html#autotoc_md30',1,'']]], - ['restart_20the_20process_19',['7. If any problems were found up to this point that resulted in code changes, restart the process',['../md_doc_2internal_2release-github.html#autotoc_md15',1,'']]], - ['resulted_20in_20code_20changes_20restart_20the_20process_20',['7. If any problems were found up to this point that resulted in code changes, restart the process',['../md_doc_2internal_2release-github.html#autotoc_md15',1,'']]], - ['results_21',['Results',['../md_tests_2ftests_2README.html#autotoc_md34',1,'']]], - ['run_22',['Run',['../classftests_1_1run_1_1Run.html',1,'ftests::run']]], - ['runerror_23',['RunError',['../classftests_1_1run_1_1RunError.html',1,'ftests::run']]], - ['runs_20without_20error_24',['3. Verify that the bundled test suite runs without error',['../md_doc_2internal_2release-github.html#autotoc_md11',1,'']]] + ['release_20x_20y_20branch_11',['8. If this is a new major/minor release, create new 'release-X.Y' branch',['../md_doc_2internal_2release-github.html#autotoc_md16',1,'']]], + ['releases_20which_20are_20now_20unsupported_12',['17. Update the GitHub release notes for older releases which are now unsupported',['../md_doc_2internal_2release-github.html#autotoc_md25',1,'']]], + ['reporting_20problems_13',['Reporting Problems',['../md_SECURITY.html#autotoc_md29',1,'']]], + ['repository_14',['15. Push the release tag to the main GitHub repository',['../md_doc_2internal_2release-github.html#autotoc_md23',1,'']]], + ['repository_20with_20a_20signed_20tag_15',['10. Tag the release in the local repository with a signed tag',['../md_doc_2internal_2release-github.html#autotoc_md18',1,'']]], + ['requests_16',['Submitting via GitHub Pull Requests',['../md_CONTRIBUTING.html#autotoc_md8',1,'']]], + ['requirements_3a_17',['Requirements:',['../md_samples_2cmdline_2systemd-with-idle-process.html#autotoc_md27',1,'']]], + ['resolved_18',['1. Verify that all issues assigned to the release milestone have been resolved',['../md_doc_2internal_2release-github.html#autotoc_md9',1,'']]], + ['resolving_20sensitive_20security_20issues_19',['Resolving Sensitive Security Issues',['../md_SECURITY.html#autotoc_md30',1,'']]], + ['restart_20the_20process_20',['7. If any problems were found up to this point that resulted in code changes, restart the process',['../md_doc_2internal_2release-github.html#autotoc_md15',1,'']]], + ['resulted_20in_20code_20changes_20restart_20the_20process_21',['7. If any problems were found up to this point that resulted in code changes, restart the process',['../md_doc_2internal_2release-github.html#autotoc_md15',1,'']]], + ['results_22',['Results',['../md_tests_2ftests_2README.html#autotoc_md34',1,'']]], + ['run_23',['Run',['../classftests_1_1run_1_1Run.html',1,'ftests::run']]], + ['runerror_24',['RunError',['../classftests_1_1run_1_1RunError.html',1,'ftests::run']]], + ['runs_20without_20error_25',['3. Verify that the bundled test suite runs without error',['../md_doc_2internal_2release-github.html#autotoc_md11',1,'']]] ]; diff --git a/search/all_19.js b/search/all_19.js index 29581e4e..cb23521b 100644 --- a/search/all_19.js +++ b/search/all_19.js @@ -8,7 +8,7 @@ var searchData= ['separate_20directory_5',['12. Verify the release tarball in a separate directory',['../md_doc_2internal_2release-github.html#autotoc_md20',1,'']]], ['set_6',['set',['../classftests_1_1cgroup_1_1Cgroup.html#aafa420c27460164b65f904ec531ae2b1',1,'ftests::cgroup::Cgroup']]], ['set_5fand_5fvalidate_7',['set_and_validate',['../classftests_1_1cgroup_1_1Cgroup.html#a6e776be252ad6a2fa0609d48ce71abd8',1,'ftests::cgroup::Cgroup']]], - ['setup_8',['setup',['../classBuildPathV1Test.html#ae2d0708d4c36d3f8d1e24b311afe8fc3',1,'BuildPathV1Test::SetUp()'],['../classBuildTasksProcPathTest.html#aba31e09a4df0a3cdb94d81985f2e86b7',1,'BuildTasksProcPathTest::SetUp()']]], + ['setup_8',['SetUp',['../classBuildPathV1Test.html#ae2d0708d4c36d3f8d1e24b311afe8fc3',1,'BuildPathV1Test::SetUp()'],['../classBuildTasksProcPathTest.html#aba31e09a4df0a3cdb94d81985f2e86b7',1,'BuildTasksProcPathTest::SetUp()']]], ['setvaluesrecursivetest_9',['SetValuesRecursiveTest',['../classSetValuesRecursiveTest.html',1,'']]], ['sign_20the_20release_20tarball_20and_20checksum_20using_20the_20maintainer_20s_20key_10',['14. GPG sign the release tarball and checksum using the maintainer's key',['../md_doc_2internal_2release-github.html#autotoc_md22',1,'']]], ['sign_20your_20work_11',['Sign Your Work',['../md_CONTRIBUTING.html#autotoc_md4',1,'']]], diff --git a/search/all_1a.js b/search/all_1a.js index cb106ab9..e67f96d8 100644 --- a/search/all_1a.js +++ b/search/all_1a.js @@ -23,27 +23,32 @@ var searchData= ['the_20associated_20tag_20and_20upload_20the_20following_20files_20',['16. Create a new GitHub release using the associated tag and upload the following files',['../md_doc_2internal_2release-github.html#autotoc_md24',1,'']]], ['the_20bundled_20test_20suite_20runs_20without_20error_21',['3. Verify that the bundled test suite runs without error',['../md_doc_2internal_2release-github.html#autotoc_md11',1,'']]], ['the_20community_22',['Interacting with the Community',['../md_CONTRIBUTING.html#autotoc_md0',1,'']]], - ['the_20github_20actions_20are_20all_20passing_23',['2. Verify that the Github Actions are all passing',['../md_doc_2internal_2release-github.html#autotoc_md10',1,'']]], - ['the_20github_20release_20notes_20for_20older_20releases_20which_20are_20now_20unsupported_24',['17. Update the GitHub release notes for older releases which are now unsupported',['../md_doc_2internal_2release-github.html#autotoc_md25',1,'']]], - ['the_20libcgroup_20project_25',['How to Contribute to the libcgroup Project',['../md_CONTRIBUTING.html',1,'']]], - ['the_20libcgroup_20release_20process_26',['The libcgroup Release Process',['../md_doc_2internal_2release-github.html',1,'']]], - ['the_20libcgroup_20security_20vulnerability_20handling_20process_27',['The libcgroup Security Vulnerability Handling Process',['../md_SECURITY.html',1,'']]], - ['the_20packaging_20is_20correct_28',['4. Verify that the packaging is correct',['../md_doc_2internal_2release-github.html#autotoc_md12',1,'']]], - ['the_20process_29',['7. If any problems were found up to this point that resulted in code changes, restart the process',['../md_doc_2internal_2release-github.html#autotoc_md15',1,'']]], - ['the_20release_20in_20the_20local_20repository_20with_20a_20signed_20tag_30',['10. Tag the release in the local repository with a signed tag',['../md_doc_2internal_2release-github.html#autotoc_md18',1,'']]], - ['the_20release_20milestone_20have_20been_20resolved_31',['1. Verify that all issues assigned to the release milestone have been resolved',['../md_doc_2internal_2release-github.html#autotoc_md9',1,'']]], - ['the_20release_20tag_20to_20the_20main_20github_20repository_32',['15. Push the release tag to the main GitHub repository',['../md_doc_2internal_2release-github.html#autotoc_md23',1,'']]], - ['the_20release_20tarball_33',['13. Generate a checksum for the release tarball',['../md_doc_2internal_2release-github.html#autotoc_md21',1,'']]], - ['the_20release_20tarball_20and_20checksum_20using_20the_20maintainer_20s_20key_34',['14. GPG sign the release tarball and checksum using the maintainer's key',['../md_doc_2internal_2release-github.html#autotoc_md22',1,'']]], - ['the_20release_20tarball_20in_20a_20separate_20directory_35',['12. Verify the release tarball in a separate directory',['../md_doc_2internal_2release-github.html#autotoc_md20',1,'']]], - ['the_20version_20number_20in_20configure_20ac_20ac_5finit_20macro_20and_20library_20version_20macros_36',['9. Update and commit the version number in configure.ac AC_INIT(...) macro and LIBRARY version macros',['../md_doc_2internal_2release-github.html#autotoc_md17',1,'']]], - ['there_20are_20no_20outstanding_20defects_20from_20coverity_37',['5. Verify that there are no outstanding defects from Coverity',['../md_doc_2internal_2release-github.html#autotoc_md13',1,'']]], - ['this_20is_20a_20new_20major_20minor_20release_20create_20new_20release_20x_20y_20branch_38',['8. If this is a new major/minor release, create new 'release-X.Y' branch',['../md_doc_2internal_2release-github.html#autotoc_md16',1,'']]], - ['this_20point_20that_20resulted_20in_20code_20changes_20restart_20the_20process_39',['7. If any problems were found up to this point that resulted in code changes, restart the process',['../md_doc_2internal_2release-github.html#autotoc_md15',1,'']]], - ['to_20contribute_20to_20the_20libcgroup_20project_40',['How to Contribute to the libcgroup Project',['../md_CONTRIBUTING.html',1,'']]], - ['to_20the_20main_20github_20repository_41',['15. Push the release tag to the main GitHub repository',['../md_doc_2internal_2release-github.html#autotoc_md23',1,'']]], - ['to_20the_20release_20milestone_20have_20been_20resolved_42',['1. Verify that all issues assigned to the release milestone have been resolved',['../md_doc_2internal_2release-github.html#autotoc_md9',1,'']]], - ['to_20this_20point_20that_20resulted_20in_20code_20changes_20restart_20the_20process_43',['7. If any problems were found up to this point that resulted in code changes, restart the process',['../md_doc_2internal_2release-github.html#autotoc_md15',1,'']]], - ['todo_20list_44',['Todo List',['../todo.html',1,'']]], - ['type_45',['type',['../structcgroup__file__info.html#a955506601f440d05cb11e4ee6b455c55',1,'cgroup_file_info']]] + ['the_20following_20files_23',['16. Create a new GitHub release using the associated tag and upload the following files',['../md_doc_2internal_2release-github.html#autotoc_md24',1,'']]], + ['the_20github_20actions_20are_20all_20passing_24',['2. Verify that the Github Actions are all passing',['../md_doc_2internal_2release-github.html#autotoc_md10',1,'']]], + ['the_20github_20release_20notes_20for_20older_20releases_20which_20are_20now_20unsupported_25',['17. Update the GitHub release notes for older releases which are now unsupported',['../md_doc_2internal_2release-github.html#autotoc_md25',1,'']]], + ['the_20libcgroup_20project_26',['How to Contribute to the libcgroup Project',['../md_CONTRIBUTING.html',1,'']]], + ['the_20libcgroup_20release_20process_27',['The libcgroup Release Process',['../md_doc_2internal_2release-github.html',1,'']]], + ['the_20libcgroup_20security_20vulnerability_20handling_20process_28',['The libcgroup Security Vulnerability Handling Process',['../md_SECURITY.html',1,'']]], + ['the_20local_20repository_20with_20a_20signed_20tag_29',['10. Tag the release in the local repository with a signed tag',['../md_doc_2internal_2release-github.html#autotoc_md18',1,'']]], + ['the_20main_20github_20repository_30',['15. Push the release tag to the main GitHub repository',['../md_doc_2internal_2release-github.html#autotoc_md23',1,'']]], + ['the_20maintainer_20s_20key_31',['14. GPG sign the release tarball and checksum using the maintainer's key',['../md_doc_2internal_2release-github.html#autotoc_md22',1,'']]], + ['the_20packaging_20is_20correct_32',['4. Verify that the packaging is correct',['../md_doc_2internal_2release-github.html#autotoc_md12',1,'']]], + ['the_20process_33',['7. If any problems were found up to this point that resulted in code changes, restart the process',['../md_doc_2internal_2release-github.html#autotoc_md15',1,'']]], + ['the_20release_20in_20the_20local_20repository_20with_20a_20signed_20tag_34',['10. Tag the release in the local repository with a signed tag',['../md_doc_2internal_2release-github.html#autotoc_md18',1,'']]], + ['the_20release_20milestone_20have_20been_20resolved_35',['1. Verify that all issues assigned to the release milestone have been resolved',['../md_doc_2internal_2release-github.html#autotoc_md9',1,'']]], + ['the_20release_20tag_20to_20the_20main_20github_20repository_36',['15. Push the release tag to the main GitHub repository',['../md_doc_2internal_2release-github.html#autotoc_md23',1,'']]], + ['the_20release_20tarball_37',['13. Generate a checksum for the release tarball',['../md_doc_2internal_2release-github.html#autotoc_md21',1,'']]], + ['the_20release_20tarball_20and_20checksum_20using_20the_20maintainer_20s_20key_38',['14. GPG sign the release tarball and checksum using the maintainer's key',['../md_doc_2internal_2release-github.html#autotoc_md22',1,'']]], + ['the_20release_20tarball_20in_20a_20separate_20directory_39',['12. Verify the release tarball in a separate directory',['../md_doc_2internal_2release-github.html#autotoc_md20',1,'']]], + ['the_20version_20number_20in_20configure_20ac_20ac_5finit_20macro_20and_20library_20version_20macros_40',['9. Update and commit the version number in configure.ac AC_INIT(...) macro and LIBRARY version macros',['../md_doc_2internal_2release-github.html#autotoc_md17',1,'']]], + ['there_20are_20no_20outstanding_20defects_20from_20coverity_41',['5. Verify that there are no outstanding defects from Coverity',['../md_doc_2internal_2release-github.html#autotoc_md13',1,'']]], + ['this_20is_20a_20new_20major_20minor_20release_20create_20new_20release_20x_20y_20branch_42',['8. If this is a new major/minor release, create new 'release-X.Y' branch',['../md_doc_2internal_2release-github.html#autotoc_md16',1,'']]], + ['this_20point_20that_20resulted_20in_20code_20changes_20restart_20the_20process_43',['7. If any problems were found up to this point that resulted in code changes, restart the process',['../md_doc_2internal_2release-github.html#autotoc_md15',1,'']]], + ['to_20contribute_20to_20the_20libcgroup_20project_44',['How to Contribute to the libcgroup Project',['../md_CONTRIBUTING.html',1,'']]], + ['to_20the_20libcgroup_20project_45',['How to Contribute to the libcgroup Project',['../md_CONTRIBUTING.html',1,'']]], + ['to_20the_20main_20github_20repository_46',['15. Push the release tag to the main GitHub repository',['../md_doc_2internal_2release-github.html#autotoc_md23',1,'']]], + ['to_20the_20release_20milestone_20have_20been_20resolved_47',['1. Verify that all issues assigned to the release milestone have been resolved',['../md_doc_2internal_2release-github.html#autotoc_md9',1,'']]], + ['to_20this_20point_20that_20resulted_20in_20code_20changes_20restart_20the_20process_48',['7. If any problems were found up to this point that resulted in code changes, restart the process',['../md_doc_2internal_2release-github.html#autotoc_md15',1,'']]], + ['todo_20list_49',['Todo List',['../todo.html',1,'']]], + ['type_50',['type',['../structcgroup__file__info.html#a955506601f440d05cb11e4ee6b455c55',1,'cgroup_file_info']]] ]; diff --git a/search/all_1c.js b/search/all_1c.js index 8becf421..7d568be5 100644 --- a/search/all_1c.js +++ b/search/all_1c.js @@ -7,9 +7,10 @@ var searchData= ['verify_20that_20there_20are_20no_20outstanding_20defects_20from_20coverity_4',['5. Verify that there are no outstanding defects from Coverity',['../md_doc_2internal_2release-github.html#autotoc_md13',1,'']]], ['verify_20the_20release_20tarball_20in_20a_20separate_20directory_5',['12. Verify the release tarball in a separate directory',['../md_doc_2internal_2release-github.html#autotoc_md20',1,'']]], ['version_6',['name mount_point index version',['../classBuildTasksProcPathTest.html#autotoc_md36',1,'']]], - ['version_20number_20in_20configure_20ac_20ac_5finit_20macro_20and_20library_20version_20macros_7',['9. Update and commit the version number in configure.ac AC_INIT(...) macro and LIBRARY version macros',['../md_doc_2internal_2release-github.html#autotoc_md17',1,'']]], - ['via_20email_8',['Submitting via Email',['../md_CONTRIBUTING.html#autotoc_md7',1,'']]], - ['via_20github_20pull_20requests_9',['Submitting via GitHub Pull Requests',['../md_CONTRIBUTING.html#autotoc_md8',1,'']]], - ['via_20libcgroup_20command_20line_10',['Creating a Systemd Scope and Child Hierarchy via Libcgroup Command Line',['../md_samples_2cmdline_2systemd-with-idle-process.html#autotoc_md26',1,'']]], - ['vulnerability_20handling_20process_11',['The libcgroup Security Vulnerability Handling Process',['../md_SECURITY.html',1,'']]] + ['version_20macros_7',['9. Update and commit the version number in configure.ac AC_INIT(...) macro and LIBRARY version macros',['../md_doc_2internal_2release-github.html#autotoc_md17',1,'']]], + ['version_20number_20in_20configure_20ac_20ac_5finit_20macro_20and_20library_20version_20macros_8',['9. Update and commit the version number in configure.ac AC_INIT(...) macro and LIBRARY version macros',['../md_doc_2internal_2release-github.html#autotoc_md17',1,'']]], + ['via_20email_9',['Submitting via Email',['../md_CONTRIBUTING.html#autotoc_md7',1,'']]], + ['via_20github_20pull_20requests_10',['Submitting via GitHub Pull Requests',['../md_CONTRIBUTING.html#autotoc_md8',1,'']]], + ['via_20libcgroup_20command_20line_11',['Creating a Systemd Scope and Child Hierarchy via Libcgroup Command Line',['../md_samples_2cmdline_2systemd-with-idle-process.html#autotoc_md26',1,'']]], + ['vulnerability_20handling_20process_12',['The libcgroup Security Vulnerability Handling Process',['../md_SECURITY.html',1,'']]] ]; diff --git a/search/all_1d.js b/search/all_1d.js index 62d8b476..8c1b50ea 100644 --- a/search/all_1d.js +++ b/search/all_1d.js @@ -7,5 +7,5 @@ var searchData= ['with_20tasks_4',['4. Manipulation with tasks',['../group__group__tasks.html',1,'']]], ['with_20the_20community_5',['Interacting with the Community',['../md_CONTRIBUTING.html#autotoc_md0',1,'']]], ['without_20error_6',['3. Verify that the bundled test suite runs without error',['../md_doc_2internal_2release-github.html#autotoc_md11',1,'']]], - ['work_7',['work',['../md_CONTRIBUTING.html#autotoc_md3',1,'Explain Your Work'],['../md_CONTRIBUTING.html#autotoc_md4',1,'Sign Your Work']]] + ['work_7',['Work',['../md_CONTRIBUTING.html#autotoc_md3',1,'Explain Your Work'],['../md_CONTRIBUTING.html#autotoc_md4',1,'Sign Your Work']]] ]; diff --git a/search/all_1f.js b/search/all_1f.js index d7504b0c..76fe1d02 100644 --- a/search/all_1f.js +++ b/search/all_1f.js @@ -3,5 +3,5 @@ var searchData= ['y_20branch_0',['8. If this is a new major/minor release, create new 'release-X.Y' branch',['../md_doc_2internal_2release-github.html#autotoc_md16',1,'']]], ['your_20code_20using_20existing_20tests_1',['Test Your Code Using Existing Tests',['../md_CONTRIBUTING.html#autotoc_md1',1,'']]], ['your_20patches_20upstream_2',['Post Your Patches Upstream',['../md_CONTRIBUTING.html#autotoc_md6',1,'']]], - ['your_20work_3',['your work',['../md_CONTRIBUTING.html#autotoc_md3',1,'Explain Your Work'],['../md_CONTRIBUTING.html#autotoc_md4',1,'Sign Your Work']]] + ['your_20work_3',['Your Work',['../md_CONTRIBUTING.html#autotoc_md3',1,'Explain Your Work'],['../md_CONTRIBUTING.html#autotoc_md4',1,'Sign Your Work']]] ]; diff --git a/search/all_9.js b/search/all_9.js index c3d658bd..b2ef890f 100644 --- a/search/all_9.js +++ b/search/all_9.js @@ -15,16 +15,17 @@ var searchData= ['and_20checksum_20using_20the_20maintainer_20s_20key_12',['14. GPG sign the release tarball and checksum using the maintainer's key',['../md_doc_2internal_2release-github.html#autotoc_md22',1,'']]], ['and_20child_20hierarchy_20via_20libcgroup_20command_20line_13',['Creating a Systemd Scope and Child Hierarchy via Libcgroup Command Line',['../md_samples_2cmdline_2systemd-with-idle-process.html#autotoc_md26',1,'']]], ['and_20commit_20the_20version_20number_20in_20configure_20ac_20ac_5finit_20macro_20and_20library_20version_20macros_14',['9. Update and commit the version number in configure.ac AC_INIT(...) macro and LIBRARY version macros',['../md_doc_2internal_2release-github.html#autotoc_md17',1,'']]], - ['and_20upload_20the_20following_20files_15',['16. Create a new GitHub release using the associated tag and upload the following files',['../md_doc_2internal_2release-github.html#autotoc_md24',1,'']]], - ['any_20distribution_20test_20builds_16',['6. Perform any distribution test builds',['../md_doc_2internal_2release-github.html#autotoc_md14',1,'']]], - ['any_20problems_20were_20found_20up_20to_20this_20point_20that_20resulted_20in_20code_20changes_20restart_20the_20process_17',['7. If any problems were found up to this point that resulted in code changes, restart the process',['../md_doc_2internal_2release-github.html#autotoc_md15',1,'']]], - ['api_18',['2. Group manipulation API',['../group__group__groups.html',1,'']]], - ['apiargstest_19',['APIArgsTest',['../classAPIArgsTest.html',1,'']]], - ['are_20all_20passing_20',['2. Verify that the Github Actions are all passing',['../md_doc_2internal_2release-github.html#autotoc_md10',1,'']]], - ['are_20no_20outstanding_20defects_20from_20coverity_21',['5. Verify that there are no outstanding defects from Coverity',['../md_doc_2internal_2release-github.html#autotoc_md13',1,'']]], - ['are_20now_20unsupported_22',['17. Update the GitHub release notes for older releases which are now unsupported',['../md_doc_2internal_2release-github.html#autotoc_md25',1,'']]], - ['array_5fparent_5finfo_23',['array_parent_info',['../structarray__parent__info.html',1,'']]], - ['array_5funchanged_24',['array_unchanged',['../structarray__unchanged.html',1,'']]], - ['assigned_20to_20the_20release_20milestone_20have_20been_20resolved_25',['1. Verify that all issues assigned to the release milestone have been resolved',['../md_doc_2internal_2release-github.html#autotoc_md9',1,'']]], - ['associated_20tag_20and_20upload_20the_20following_20files_26',['16. Create a new GitHub release using the associated tag and upload the following files',['../md_doc_2internal_2release-github.html#autotoc_md24',1,'']]] + ['and_20library_20version_20macros_15',['9. Update and commit the version number in configure.ac AC_INIT(...) macro and LIBRARY version macros',['../md_doc_2internal_2release-github.html#autotoc_md17',1,'']]], + ['and_20upload_20the_20following_20files_16',['16. Create a new GitHub release using the associated tag and upload the following files',['../md_doc_2internal_2release-github.html#autotoc_md24',1,'']]], + ['any_20distribution_20test_20builds_17',['6. Perform any distribution test builds',['../md_doc_2internal_2release-github.html#autotoc_md14',1,'']]], + ['any_20problems_20were_20found_20up_20to_20this_20point_20that_20resulted_20in_20code_20changes_20restart_20the_20process_18',['7. If any problems were found up to this point that resulted in code changes, restart the process',['../md_doc_2internal_2release-github.html#autotoc_md15',1,'']]], + ['api_19',['2. Group manipulation API',['../group__group__groups.html',1,'']]], + ['apiargstest_20',['APIArgsTest',['../classAPIArgsTest.html',1,'']]], + ['are_20all_20passing_21',['2. Verify that the Github Actions are all passing',['../md_doc_2internal_2release-github.html#autotoc_md10',1,'']]], + ['are_20no_20outstanding_20defects_20from_20coverity_22',['5. Verify that there are no outstanding defects from Coverity',['../md_doc_2internal_2release-github.html#autotoc_md13',1,'']]], + ['are_20now_20unsupported_23',['17. Update the GitHub release notes for older releases which are now unsupported',['../md_doc_2internal_2release-github.html#autotoc_md25',1,'']]], + ['array_5fparent_5finfo_24',['array_parent_info',['../structarray__parent__info.html',1,'']]], + ['array_5funchanged_25',['array_unchanged',['../structarray__unchanged.html',1,'']]], + ['assigned_20to_20the_20release_20milestone_20have_20been_20resolved_26',['1. Verify that all issues assigned to the release milestone have been resolved',['../md_doc_2internal_2release-github.html#autotoc_md9',1,'']]], + ['associated_20tag_20and_20upload_20the_20following_20files_27',['16. Create a new GitHub release using the associated tag and upload the following files',['../md_doc_2internal_2release-github.html#autotoc_md24',1,'']]] ]; diff --git a/search/all_b.js b/search/all_b.js index b349f49e..db64cf02 100644 --- a/search/all_b.js +++ b/search/all_b.js @@ -5,164 +5,165 @@ var searchData= ['cg_5fmount_5ftable_5fs_2',['cg_mount_table_s',['../structcg__mount__table__s.html',1,'']]], ['cg_5fvalue_5fmax_3',['CG_VALUE_MAX',['../group__group__iterators.html#ga55d2eac2af703794651d344c073566f5',1,'iterators.h']]], ['cgexec_4',['cgexec',['../classftests_1_1cgroup_1_1Cgroup.html#aea70ccdeb742b83a428b90f85379bb6b',1,'ftests::cgroup::Cgroup']]], - ['cgroup_5',['cgroup',['../classftests_1_1cgroup_1_1Cgroup.html',1,'ftests.cgroup.Cgroup'],['../structcgroup.html',1,'cgroup']]], - ['cgroup_5fabstraction_5fmap_6',['cgroup_abstraction_map',['../structcgroup__abstraction__map.html',1,'']]], - ['cgroup_5fadd_5fall_5fcontrollers_7',['cgroup_add_all_controllers',['../group__group__groups.html#ga68f90377f6183dc8b326876cd1ecf4b1',1,'cgroup_add_all_controllers(struct cgroup *cgroup): wrapper.c'],['../group__group__groups.html#ga68f90377f6183dc8b326876cd1ecf4b1',1,'cgroup_add_all_controllers(struct cgroup *cgrp): wrapper.c']]], - ['cgroup_5fadd_5fcontroller_8',['cgroup_add_controller',['../group__group__groups.html#ga86b514fe6f99ded356eb5e799787f3f5',1,'cgroup_add_controller(struct cgroup *cgroup, const char *name): wrapper.c'],['../group__group__groups.html#ga86b514fe6f99ded356eb5e799787f3f5',1,'cgroup_add_controller(struct cgroup *cgrp, const char *name): wrapper.c']]], - ['cgroup_5fadd_5fvalue_5fbool_9',['cgroup_add_value_bool',['../group__group__groups.html#ga4b191a600f84b00ea7afd12c01d918f3',1,'cgroup_add_value_bool(struct cgroup_controller *controller, const char *name, bool value): wrapper.c'],['../group__group__groups.html#ga4b191a600f84b00ea7afd12c01d918f3',1,'cgroup_add_value_bool(struct cgroup_controller *controller, const char *name, bool value): wrapper.c']]], - ['cgroup_5fadd_5fvalue_5fint64_10',['cgroup_add_value_int64',['../group__group__groups.html#ga6c973bb5ce99e7a91def2032f23d7087',1,'cgroup_add_value_int64(struct cgroup_controller *controller, const char *name, int64_t value): wrapper.c'],['../group__group__groups.html#ga6c973bb5ce99e7a91def2032f23d7087',1,'cgroup_add_value_int64(struct cgroup_controller *controller, const char *name, int64_t value): wrapper.c']]], - ['cgroup_5fadd_5fvalue_5fstring_11',['cgroup_add_value_string',['../group__group__groups.html#ga4817c68ab791c09c07b663c29b3fb029',1,'cgroup_add_value_string(struct cgroup_controller *controller, const char *name, const char *value): wrapper.c'],['../group__group__groups.html#ga4817c68ab791c09c07b663c29b3fb029',1,'cgroup_add_value_string(struct cgroup_controller *controller, const char *name, const char *value): wrapper.c']]], - ['cgroup_5fadd_5fvalue_5fuint64_12',['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): wrapper.c'],['../group__group__groups.html#gad9d2216205b96278c626122f8d5e63bb',1,'cgroup_add_value_uint64(struct cgroup_controller *controller, const char *name, u_int64_t value): wrapper.c']]], - ['cgroup_5fattach_5ftask_13',['cgroup_attach_task',['../group__group__tasks.html#ga221ec5280a475ef096b3604a2e4a32e7',1,'cgroup_attach_task(struct cgroup *cgroup): api.c'],['../group__group__tasks.html#ga221ec5280a475ef096b3604a2e4a32e7',1,'cgroup_attach_task(struct cgroup *cgrp): api.c']]], - ['cgroup_5fattach_5ftask_5fpid_14',['cgroup_attach_task_pid',['../group__group__tasks.html#ga1fcd62dd6fcfb7b6c9361702d374a96d',1,'cgroup_attach_task_pid(struct cgroup *cgroup, pid_t tid): api.c'],['../group__group__tasks.html#ga1fcd62dd6fcfb7b6c9361702d374a96d',1,'cgroup_attach_task_pid(struct cgroup *cgrp, pid_t tid): api.c']]], - ['cgroup_5fattach_5fthread_5ftid_15',['cgroup_attach_thread_tid',['../group__group__tasks.html#gabdb49127e5959831abb3a03e384c3dee',1,'cgroup_attach_thread_tid(struct cgroup *cgroup, pid_t tid): api.c'],['../group__group__tasks.html#gabdb49127e5959831abb3a03e384c3dee',1,'cgroup_attach_thread_tid(struct cgroup *cgroup, pid_t tid): api.c']]], - ['cgroup_5fchange_5fall_5fcgroups_16',['cgroup_change_all_cgroups',['../group__group__tasks.html#gafc69658b012b6f1c11ba078ffccd70a2',1,'cgroup_change_all_cgroups(void): api.c'],['../group__group__tasks.html#gafc69658b012b6f1c11ba078ffccd70a2',1,'cgroup_change_all_cgroups(void): api.c']]], - ['cgroup_5fchange_5fcgroup_5fflags_17',['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): 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): api.c']]], - ['cgroup_5fchange_5fcgroup_5fpath_18',['cgroup_change_cgroup_path',['../group__group__tasks.html#ga2d4677baef780c003fc6fba6b5dc78f2',1,'cgroup_change_cgroup_path(const char *dest, pid_t pid, const char *const controllers[]): api.c'],['../group__group__tasks.html#ga2d4677baef780c003fc6fba6b5dc78f2',1,'cgroup_change_cgroup_path(const char *path, pid_t pid, const char *const controllers[]): api.c']]], - ['cgroup_5fchange_5fcgroup_5fuid_5fgid_19',['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): api.c'],['../group__group__tasks.html#ga5eab78a922dbacd368360f03c70146be',1,'cgroup_change_cgroup_uid_gid(uid_t uid, gid_t gid, pid_t pid): api.c']]], - ['cgroup_5fchange_5fcgroup_5fuid_5fgid_5fflags_20',['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): 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): api.c']]], - ['cgroup_5fcompare_5fcgroup_21',['cgroup_compare_cgroup',['../group__group__groups.html#gaf066e538ebf4aa1f32a654f302a8c353',1,'cgroup_compare_cgroup(struct cgroup *cgrp_a, struct cgroup *cgrp_b): wrapper.c'],['../group__group__groups.html#gaf066e538ebf4aa1f32a654f302a8c353',1,'cgroup_compare_cgroup(struct cgroup *cgroup_a, struct cgroup *cgroup_b): wrapper.c']]], - ['cgroup_5fcompare_5fcontrollers_22',['cgroup_compare_controllers',['../group__group__groups.html#gab1725c50c49cec4b0bdad1f26b150ca7',1,'cgroup_compare_controllers(struct cgroup_controller *cgca, struct cgroup_controller *cgcb): wrapper.c'],['../group__group__groups.html#gab1725c50c49cec4b0bdad1f26b150ca7',1,'cgroup_compare_controllers(struct cgroup_controller *cgca, struct cgroup_controller *cgcb): wrapper.c']]], - ['cgroup_5fconfig_5fcreate_5ftemplate_5fgroup_23',['cgroup_config_create_template_group',['../group__group__config.html#ga37d49cceb927c44292e3137bceeeb5eb',1,'cgroup_config_create_template_group(struct cgroup *cgrp, char *template_name, int flags): config.c'],['../group__group__config.html#ga37d49cceb927c44292e3137bceeeb5eb',1,'cgroup_config_create_template_group(struct cgroup *cgroup, char *template_name, int flags): config.c']]], - ['cgroup_5fconfig_5fload_5fconfig_24',['cgroup_config_load_config',['../group__group__config.html#ga8adfaca013333acf922a167f55b84140',1,'cgroup_config_load_config(const char *pathname): config.c'],['../group__group__config.html#ga8adfaca013333acf922a167f55b84140',1,'cgroup_config_load_config(const char *pathname): config.c']]], - ['cgroup_5fconfig_5fset_5fdefault_25',['cgroup_config_set_default',['../group__group__config.html#ga2d3a252b2c0c61c8f64cb1fc41e370ea',1,'cgroup_config_set_default(struct cgroup *new_default): config.c'],['../group__group__config.html#ga2d3a252b2c0c61c8f64cb1fc41e370ea',1,'cgroup_config_set_default(struct cgroup *new_default): config.c']]], - ['cgroup_5fconfig_5funload_5fconfig_26',['cgroup_config_unload_config',['../group__group__config.html#gaff77affa0b80ccf507b4b46cc0a8c085',1,'cgroup_config_unload_config(const char *pathname, int flags): config.c'],['../group__group__config.html#gaff77affa0b80ccf507b4b46cc0a8c085',1,'cgroup_config_unload_config(const char *pathname, int flags): config.c']]], - ['cgroup_5fcontroller_27',['cgroup_controller',['../structcgroup__controller.html',1,'']]], - ['cgroup_5fcopy_5fcgroup_28',['cgroup_copy_cgroup',['../group__group__groups.html#gaa981a95e0917d3167601a4c1b392336a',1,'cgroup_copy_cgroup(struct cgroup *dst, struct cgroup *src): api.c'],['../group__group__groups.html#gaa981a95e0917d3167601a4c1b392336a',1,'cgroup_copy_cgroup(struct cgroup *dst, struct cgroup *src): api.c']]], - ['cgroup_5fcreate_5fcgroup_29',['cgroup_create_cgroup',['../group__group__groups.html#ga74c5b4a1d3bc7729af1383c131254fbd',1,'cgroup_create_cgroup(struct cgroup *cgrp, int ignore_ownership): api.c'],['../group__group__groups.html#ga74c5b4a1d3bc7729af1383c131254fbd',1,'cgroup_create_cgroup(struct cgroup *cgrp, int ignore_ownership): api.c']]], - ['cgroup_5fcreate_5fcgroup_5ffrom_5fparent_30',['cgroup_create_cgroup_from_parent',['../group__group__groups.html#ga4d1f015f3fe8bad80fec2abb69e69841',1,'cgroup_create_cgroup_from_parent(struct cgroup *cgrp, int ignore_ownership): api.c'],['../group__group__groups.html#ga4d1f015f3fe8bad80fec2abb69e69841',1,'cgroup_create_cgroup_from_parent(struct cgroup *cgrp, int ignore_ownership): api.c']]], - ['cgroup_5fdelete_5fcgroup_31',['cgroup_delete_cgroup',['../group__group__groups.html#ga4e21815cc612604cdf3d58fa2b34db16',1,'cgroup_delete_cgroup(struct cgroup *cgrp, int ignore_migration): api.c'],['../group__group__groups.html#ga4e21815cc612604cdf3d58fa2b34db16',1,'cgroup_delete_cgroup(struct cgroup *cgrp, int ignore_migration): api.c']]], - ['cgroup_5fdelete_5fcgroup_5fext_32',['cgroup_delete_cgroup_ext',['../group__group__groups.html#gab70ff2b86d261411262c4be31e3140e8',1,'cgroup_delete_cgroup_ext(struct cgroup *cgrp, int flags): api.c'],['../group__group__groups.html#gab70ff2b86d261411262c4be31e3140e8',1,'cgroup_delete_cgroup_ext(struct cgroup *cgrp, int flags): api.c']]], - ['cgroup_5fdictionary_33',['cgroup_dictionary',['../structcgroup__dictionary.html',1,'']]], - ['cgroup_5fdictionary_5fitem_34',['cgroup_dictionary_item',['../structcgroup__dictionary__item.html',1,'']]], - ['cgroup_5fdictionary_5fiterator_35',['cgroup_dictionary_iterator',['../structcgroup__dictionary__iterator.html',1,'']]], - ['cgroup_5ffile_5finfo_36',['cgroup_file_info',['../structcgroup__file__info.html',1,'']]], - ['cgroup_5ffile_5ftype_37',['cgroup_file_type',['../group__group__iterators.html#ga608b4aa32e2db58fed34771a6a272444',1,'iterators.h']]], - ['cgroup_5ffile_5ftype_5fdir_38',['CGROUP_FILE_TYPE_DIR',['../group__group__iterators.html#gga608b4aa32e2db58fed34771a6a272444a5418798fc4bf9634429c6af167a0e7c3',1,'iterators.h']]], - ['cgroup_5ffile_5ftype_5ffile_39',['CGROUP_FILE_TYPE_FILE',['../group__group__iterators.html#gga608b4aa32e2db58fed34771a6a272444ad925cc45f1b34fe80e14fc6b05269740',1,'iterators.h']]], - ['cgroup_5ffile_5ftype_5fother_40',['CGROUP_FILE_TYPE_OTHER',['../group__group__iterators.html#gga608b4aa32e2db58fed34771a6a272444a24e202c59f318e63ad8cafcc1b4b102b',1,'iterators.h']]], - ['cgroup_5ffree_41',['cgroup_free',['../group__group__groups.html#ga7e719c74424040d0d8d3a13d66080a80',1,'cgroup_free(struct cgroup **cgrp): wrapper.c'],['../group__group__groups.html#ga7e719c74424040d0d8d3a13d66080a80',1,'cgroup_free(struct cgroup **cgroup): wrapper.c']]], - ['cgroup_5ffree_5fcontrollers_42',['cgroup_free_controllers',['../group__group__groups.html#ga4104e108e85a8576c878822f353b4e39',1,'cgroup_free_controllers(struct cgroup *cgroup): wrapper.c'],['../group__group__groups.html#ga4104e108e85a8576c878822f353b4e39',1,'cgroup_free_controllers(struct cgroup *cgrp): wrapper.c']]], - ['cgroup_5fget_5fall_5fcontroller_5fbegin_43',['cgroup_get_all_controller_begin',['../group__group__iterators.html#gad48ef653388ca6739a9b6bbb9d7da82e',1,'cgroup_get_all_controller_begin(void **handle, struct controller_data *info): api.c'],['../group__group__iterators.html#gad48ef653388ca6739a9b6bbb9d7da82e',1,'cgroup_get_all_controller_begin(void **handle, struct controller_data *info): api.c']]], - ['cgroup_5fget_5fall_5fcontroller_5fend_44',['cgroup_get_all_controller_end',['../group__group__iterators.html#ga0c467d42a2c9a916a0edd339a6d7afc8',1,'cgroup_get_all_controller_end(void **handle): api.c'],['../group__group__iterators.html#ga0c467d42a2c9a916a0edd339a6d7afc8',1,'cgroup_get_all_controller_end(void **handle): api.c']]], - ['cgroup_5fget_5fall_5fcontroller_5fnext_45',['cgroup_get_all_controller_next',['../group__group__iterators.html#ga3d98a04b29b1fe409db1114b7aa76809',1,'cgroup_get_all_controller_next(void **handle, struct controller_data *info): api.c'],['../group__group__iterators.html#ga3d98a04b29b1fe409db1114b7aa76809',1,'cgroup_get_all_controller_next(void **handle, struct controller_data *info): api.c']]], - ['cgroup_5fget_5fcgroup_46',['cgroup_get_cgroup',['../group__group__groups.html#ga25ef7e1c839c682e4bb6bab4bd24c37f',1,'cgroup_get_cgroup(struct cgroup *cgrp): api.c'],['../group__group__groups.html#ga25ef7e1c839c682e4bb6bab4bd24c37f',1,'cgroup_get_cgroup(struct cgroup *cgrp): api.c']]], - ['cgroup_5fget_5fcgroup_5fname_47',['cgroup_get_cgroup_name',['../group__group__groups.html#ga7d759f21861ed546c12094cabc0b7054',1,'cgroup_get_cgroup_name(struct cgroup *cgroup): wrapper.c'],['../group__group__groups.html#ga7d759f21861ed546c12094cabc0b7054',1,'cgroup_get_cgroup_name(struct cgroup *cgrp): wrapper.c']]], - ['cgroup_5fget_5fcontroller_48',['cgroup_get_controller',['../group__group__groups.html#gafbc8bd483ee6fbd3b1ccbbd159beccf6',1,'cgroup_get_controller(struct cgroup *cgroup, const char *name): wrapper.c'],['../group__group__groups.html#gafbc8bd483ee6fbd3b1ccbbd159beccf6',1,'cgroup_get_controller(struct cgroup *cgrp, const char *name): wrapper.c']]], - ['cgroup_5fget_5fcontroller_5fbegin_49',['cgroup_get_controller_begin',['../group__group__iterators.html#ga5f9f21138f9b18912a16b21a45b53c44',1,'cgroup_get_controller_begin(void **handle, struct cgroup_mount_point *info): api.c'],['../group__group__iterators.html#ga5f9f21138f9b18912a16b21a45b53c44',1,'cgroup_get_controller_begin(void **handle, struct cgroup_mount_point *info): api.c']]], - ['cgroup_5fget_5fcontroller_5fby_5findex_50',['cgroup_get_controller_by_index',['../group__group__groups.html#gaba11ac0b3b74400501a1b030dfd7be9a',1,'cgroup_get_controller_by_index(struct cgroup *cgrp, int index): api.c'],['../group__group__groups.html#gaba11ac0b3b74400501a1b030dfd7be9a',1,'cgroup_get_controller_by_index(struct cgroup *cgrp, int index): api.c']]], - ['cgroup_5fget_5fcontroller_5fcount_51',['cgroup_get_controller_count',['../group__group__groups.html#ga42d5c13ecb8d9d7e625bb473034a26c3',1,'cgroup_get_controller_count(struct cgroup *cgrp): api.c'],['../group__group__groups.html#ga42d5c13ecb8d9d7e625bb473034a26c3',1,'cgroup_get_controller_count(struct cgroup *cgrp): api.c']]], - ['cgroup_5fget_5fcontroller_5fend_52',['cgroup_get_controller_end',['../group__group__iterators.html#gab485cda2bc9640bacbf61f1953ae750c',1,'cgroup_get_controller_end(void **handle): api.c'],['../group__group__iterators.html#gab485cda2bc9640bacbf61f1953ae750c',1,'cgroup_get_controller_end(void **handle): api.c']]], - ['cgroup_5fget_5fcontroller_5fname_53',['cgroup_get_controller_name',['../group__group__groups.html#gac13c5570894e6581bd1ebbdcbb73c74e',1,'cgroup_get_controller_name(struct cgroup_controller *controller): api.c'],['../group__group__groups.html#gac13c5570894e6581bd1ebbdcbb73c74e',1,'cgroup_get_controller_name(struct cgroup_controller *controller): api.c']]], - ['cgroup_5fget_5fcontroller_5fnext_54',['cgroup_get_controller_next',['../group__group__iterators.html#ga926b70423b6c087c21a14670cd23cd7d',1,'cgroup_get_controller_next(void **handle, struct cgroup_mount_point *info): api.c'],['../group__group__iterators.html#ga926b70423b6c087c21a14670cd23cd7d',1,'cgroup_get_controller_next(void **handle, struct cgroup_mount_point *info): api.c']]], - ['cgroup_5fget_5fcontroller_5fversion_55',['cgroup_get_controller_version',['../group__group__groups.html#ga452d8c5e95c8d694e26e7efda045360f',1,'cgroup_get_controller_version(const char *const controller, enum cg_version_t *const version): api.c'],['../group__group__groups.html#ga452d8c5e95c8d694e26e7efda045360f',1,'cgroup_get_controller_version(const char *const controller, enum cg_version_t *const version): api.c']]], - ['cgroup_5fget_5fcurrent_5fcontroller_5fpath_56',['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): api.c'],['../group__group__tasks.html#ga6f2c17b99cf2526cb46df4769eb3f46e',1,'cgroup_get_current_controller_path(pid_t pid, const char *controller, char **current_path): api.c']]], - ['cgroup_5fget_5flast_5ferrno_57',['cgroup_get_last_errno',['../group__group__errors.html#ga29057c4aec05bef2b6bf2855ae5d5d46',1,'cgroup_get_last_errno(void): api.c'],['../group__group__errors.html#ga29057c4aec05bef2b6bf2855ae5d5d46',1,'cgroup_get_last_errno(void): api.c']]], - ['cgroup_5fget_5floglevel_58',['cgroup_get_loglevel',['../group__group__log.html#ga75c24d59f2fcf3320575a40befcd66d4',1,'cgroup_get_loglevel(void): log.c'],['../group__group__log.html#ga75c24d59f2fcf3320575a40befcd66d4',1,'cgroup_get_loglevel(void): log.c']]], - ['cgroup_5fget_5fprocs_59',['cgroup_get_procs',['../group__group__groups.html#ga65ece0f619100492d758fbeb3788358a',1,'cgroup_get_procs(const char *name, const char *controller, pid_t **pids, int *size): api.c'],['../group__group__groups.html#ga65ece0f619100492d758fbeb3788358a',1,'cgroup_get_procs(const char *name, const char *controller, pid_t **pids, int *size): api.c']]], - ['cgroup_5fget_5fsubsys_5fmount_5fpoint_5fbegin_60',['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): api.c'],['../group__group__iterators.html#ga18a3c6fe7da42b9da96ce34dce1e31b8',1,'cgroup_get_subsys_mount_point_begin(const char *controller, void **handle, char *path): api.c']]], - ['cgroup_5fget_5fsubsys_5fmount_5fpoint_5fend_61',['cgroup_get_subsys_mount_point_end',['../group__group__iterators.html#ga9c9b0f1921c205bd25bfc6c1d20486eb',1,'cgroup_get_subsys_mount_point_end(void **handle): api.c'],['../group__group__iterators.html#ga9c9b0f1921c205bd25bfc6c1d20486eb',1,'cgroup_get_subsys_mount_point_end(void **handle): api.c']]], - ['cgroup_5fget_5fsubsys_5fmount_5fpoint_5fnext_62',['cgroup_get_subsys_mount_point_next',['../group__group__iterators.html#ga3d66997158cb8a334317923ad94cc789',1,'cgroup_get_subsys_mount_point_next(void **handle, char *path): api.c'],['../group__group__iterators.html#ga3d66997158cb8a334317923ad94cc789',1,'cgroup_get_subsys_mount_point_next(void **handle, char *path): api.c']]], - ['cgroup_5fget_5ftask_5fbegin_63',['cgroup_get_task_begin',['../group__group__iterators.html#gad194c8c62288dd37349ed947c91217d6',1,'cgroup_get_task_begin(const char *cgrp, const char *controller, void **handle, pid_t *pid): api.c'],['../group__group__iterators.html#gad194c8c62288dd37349ed947c91217d6',1,'cgroup_get_task_begin(const char *cgrp, const char *controller, void **handle, pid_t *pid): api.c']]], - ['cgroup_5fget_5ftask_5fend_64',['cgroup_get_task_end',['../group__group__iterators.html#gaeb955e5f4da551268380b1271d478816',1,'cgroup_get_task_end(void **handle): api.c'],['../group__group__iterators.html#gaeb955e5f4da551268380b1271d478816',1,'cgroup_get_task_end(void **handle): api.c']]], - ['cgroup_5fget_5ftask_5fnext_65',['cgroup_get_task_next',['../group__group__iterators.html#gaf3a0364682b7449ddccfb0862bbb565e',1,'cgroup_get_task_next(void **handle, pid_t *pid): api.c'],['../group__group__iterators.html#gaf3a0364682b7449ddccfb0862bbb565e',1,'cgroup_get_task_next(void **handle, pid_t *pid): api.c']]], - ['cgroup_5fget_5fthreads_66',['cgroup_get_threads',['../group__group__groups.html#ga5a9cb81b0a1e0f3bd08599084d4ae300',1,'cgroup_get_threads(const char *name, const char *controller, pid_t **pids, int *size): api.c'],['../group__group__groups.html#ga5a9cb81b0a1e0f3bd08599084d4ae300',1,'cgroup_get_threads(const char *name, const char *controller, pid_t **pids, int *size): api.c']]], - ['cgroup_5fget_5fuid_5fgid_67',['cgroup_get_uid_gid',['../group__group__groups.html#ga3b560f12d9d50c177cc48d5016c93412',1,'cgroup_get_uid_gid(struct cgroup *cgrp, uid_t *tasks_uid, gid_t *tasks_gid, uid_t *control_uid, gid_t *control_gid): wrapper.c'],['../group__group__groups.html#ga3b560f12d9d50c177cc48d5016c93412',1,'cgroup_get_uid_gid(struct cgroup *cgroup, uid_t *tasks_uid, gid_t *tasks_gid, uid_t *control_uid, gid_t *control_gid): wrapper.c']]], - ['cgroup_5fget_5fvalue_5fbool_68',['cgroup_get_value_bool',['../group__group__groups.html#gab95007148eac89b7e935d93a4524787b',1,'cgroup_get_value_bool(struct cgroup_controller *controller, const char *name, bool *value): wrapper.c'],['../group__group__groups.html#gab95007148eac89b7e935d93a4524787b',1,'cgroup_get_value_bool(struct cgroup_controller *controller, const char *name, bool *value): wrapper.c']]], - ['cgroup_5fget_5fvalue_5fint64_69',['cgroup_get_value_int64',['../group__group__groups.html#ga0fe9b05f26b3cab21fc446c9a2700526',1,'cgroup_get_value_int64(struct cgroup_controller *controller, const char *name, int64_t *value): wrapper.c'],['../group__group__groups.html#ga0fe9b05f26b3cab21fc446c9a2700526',1,'cgroup_get_value_int64(struct cgroup_controller *controller, const char *name, int64_t *value): wrapper.c']]], - ['cgroup_5fget_5fvalue_5fname_70',['cgroup_get_value_name',['../group__group__groups.html#ga9d01743fd3f97014e08fc67149ec5f0b',1,'cgroup_get_value_name(struct cgroup_controller *controller, int index): wrapper.c'],['../group__group__groups.html#ga9d01743fd3f97014e08fc67149ec5f0b',1,'cgroup_get_value_name(struct cgroup_controller *controller, int index): wrapper.c']]], - ['cgroup_5fget_5fvalue_5fname_5fcount_71',['cgroup_get_value_name_count',['../group__group__groups.html#ga25115085978ce2a8d671e7876cc49c1d',1,'cgroup_get_value_name_count(struct cgroup_controller *controller): wrapper.c'],['../group__group__groups.html#ga25115085978ce2a8d671e7876cc49c1d',1,'cgroup_get_value_name_count(struct cgroup_controller *controller): wrapper.c']]], - ['cgroup_5fget_5fvalue_5fstring_72',['cgroup_get_value_string',['../group__group__groups.html#gafaa51e5ffe09f8ad05585a1d3b6f7fa9',1,'cgroup_get_value_string(struct cgroup_controller *controller, const char *name, char **value): wrapper.c'],['../group__group__groups.html#gafaa51e5ffe09f8ad05585a1d3b6f7fa9',1,'cgroup_get_value_string(struct cgroup_controller *controller, const char *name, char **value): wrapper.c']]], - ['cgroup_5fget_5fvalue_5fuint64_73',['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): wrapper.c'],['../group__group__groups.html#ga951861259c0373895bfb637fce337312',1,'cgroup_get_value_uint64(struct cgroup_controller *controller, const char *name, u_int64_t *value): wrapper.c']]], - ['cgroup_5fgroup_5fspec_74',['cgroup_group_spec',['../structcgroup__group__spec.html',1,'']]], - ['cgroup_5finfo_75',['cgroup_info',['../structcgroup__info.html',1,'']]], - ['cgroup_5finit_5frules_5fcache_76',['cgroup_init_rules_cache',['../group__group__tasks.html#gad7fa5a2c4db08d31da5bfbecaf482d3d',1,'cgroup_init_rules_cache(void): api.c'],['../group__group__tasks.html#gad7fa5a2c4db08d31da5bfbecaf482d3d',1,'cgroup_init_rules_cache(void): api.c']]], - ['cgroup_5finit_5ftemplates_5fcache_77',['cgroup_init_templates_cache',['../group__group__config.html#ga6f8c41bb920565e674787fe6dabaef00',1,'cgroup_init_templates_cache(char *pathname): config.c'],['../group__group__config.html#ga6f8c41bb920565e674787fe6dabaef00',1,'cgroup_init_templates_cache(char *pathname): config.c']]], - ['cgroup_5flist_5fmount_5fpoints_78',['cgroup_list_mount_points',['../group__group__groups.html#ga0fd537a3ba09c497378dc494fa405f82',1,'cgroup_list_mount_points(const enum cg_version_t cgrp_version, char ***mount_paths): api.c'],['../group__group__groups.html#ga0fd537a3ba09c497378dc494fa405f82',1,'cgroup_list_mount_points(const enum cg_version_t cgrp_version, char ***mount_paths): api.c']]], - ['cgroup_5fload_5ftemplates_5fcache_5ffrom_5ffiles_79',['cgroup_load_templates_cache_from_files',['../group__group__config.html#ga924860998c37da53cababe24163fc89b',1,'cgroup_load_templates_cache_from_files(int *file_index): config.c'],['../group__group__config.html#ga924860998c37da53cababe24163fc89b',1,'cgroup_load_templates_cache_from_files(int *file_index): config.c']]], - ['cgroup_5flog_80',['cgroup_log',['../group__group__log.html#gab514ad5d83422ddfe479bdf651e80958',1,'cgroup_log(int loglevel, const char *fmt,...): log.c'],['../group__group__log.html#gab514ad5d83422ddfe479bdf651e80958',1,'cgroup_log(int level, const char *fmt,...): log.c']]], - ['cgroup_5flog_5fcont_81',['CGROUP_LOG_CONT',['../group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aa915b87fe26cc45572e40508dc6d62e88',1,'log.h']]], - ['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#gadadc95782f82d1e4265ece226ee0a9ed',1,'cgroup_modify_cgroup(struct cgroup *cgrp): api.c'],['../group__group__groups.html#gadadc95782f82d1e4265ece226ee0a9ed',1,'cgroup_modify_cgroup(struct cgroup *cgrp): 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#gad34c82ead174988d418f3dcb003aaca7',1,'cgroup_new_cgroup(const char *name): wrapper.c'],['../group__group__groups.html#gad34c82ead174988d418f3dcb003aaca7',1,'cgroup_new_cgroup(const char *name): 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): log.c'],['../group__group__log.html#gaa364a06aee0e99228a1e6a26b25a9794',1,'cgroup_parse_log_level_str(const char *levelstr): log.c']]], - ['cgroup_5fprint_5frules_5fconfig_91',['cgroup_print_rules_config',['../group__group__tasks.html#gac4e3f29cfbdc3d77f08c9fe60857274a',1,'cgroup_print_rules_config(FILE *fp): api.c'],['../group__group__tasks.html#gac4e3f29cfbdc3d77f08c9fe60857274a',1,'cgroup_print_rules_config(FILE *fp): 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): api.c'],['../group__group__iterators.html#ga1138e47f124f0f634586db5e0c4ae5de',1,'cgroup_read_stats_begin(const char *controller, const char *path, void **handle, struct cgroup_stat *cgrp_stat): api.c']]], - ['cgroup_5fread_5fstats_5fend_93',['cgroup_read_stats_end',['../group__group__iterators.html#gaba386d9db6cadc6ad85c2552f63447bb',1,'cgroup_read_stats_end(void **handle): api.c'],['../group__group__iterators.html#gaba386d9db6cadc6ad85c2552f63447bb',1,'cgroup_read_stats_end(void **handle): 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 *stat): api.c'],['../group__group__iterators.html#gaf95587508fc15d74fd5ed0df58024be7',1,'cgroup_read_stats_next(void **handle, struct cgroup_stat *cgrp_stat): api.c']]], - ['cgroup_5fread_5fvalue_5fbegin_95',['cgroup_read_value_begin',['../group__group__iterators.html#ga9378ee0f1f6e65900df8e25b3d7ce236',1,'cgroup_read_value_begin(const char *const controller, const char *path, const char *const name, void **handle, char *buffer, int max): api.c'],['../group__group__iterators.html#ga9378ee0f1f6e65900df8e25b3d7ce236',1,'cgroup_read_value_begin(const char *const controller, const char *path, const char *const name, void **handle, char *buffer, int max): api.c']]], - ['cgroup_5fread_5fvalue_5fend_96',['cgroup_read_value_end',['../group__group__iterators.html#gad348f041e283860cbf6bcea567e23a21',1,'cgroup_read_value_end(void **handle): api.c'],['../group__group__iterators.html#gad348f041e283860cbf6bcea567e23a21',1,'cgroup_read_value_end(void **handle): 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): api.c'],['../group__group__iterators.html#gaced2fe331f19d599a3270db2440847cc',1,'cgroup_read_value_next(void **handle, char *buffer, int max): 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): api.c'],['../group__group__tasks.html#ga64f7967d6d5edfff9afddaa6a6974b1c',1,'cgroup_register_unchanged_process(pid_t pid, int flags): api.c']]], - ['cgroup_5freload_5fcached_5frules_99',['cgroup_reload_cached_rules',['../group__group__tasks.html#gaf81ebd9cb5575c75b4c85f385ebda1ce',1,'cgroup_reload_cached_rules(void): api.c'],['../group__group__tasks.html#gaf81ebd9cb5575c75b4c85f385ebda1ce',1,'cgroup_reload_cached_rules(void): api.c']]], - ['cgroup_5freload_5fcached_5ftemplates_100',['cgroup_reload_cached_templates',['../group__group__config.html#ga89fe0d7943b29cc10d57b07abcdfa7b5',1,'cgroup_reload_cached_templates(char *pathname): config.c'],['../group__group__config.html#ga89fe0d7943b29cc10d57b07abcdfa7b5',1,'cgroup_reload_cached_templates(char *pathname): 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): log.c'],['../group__group__log.html#gab1457ce518dcde0b9f3c14ec9efa2de7',1,'cgroup_set_default_logger(int level): 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): log.c'],['../group__group__log.html#ga76d7032206f9b9d1c0be1a71a68c43d0',1,'cgroup_set_logger(cgroup_logger_callback logger, int loglevel, void *userdata): log.c']]], - ['cgroup_5fset_5floglevel_106',['cgroup_set_loglevel',['../group__group__log.html#gaac5fe2352800ff62465a5abe649d5b8c',1,'cgroup_set_loglevel(int loglevel): log.c'],['../group__group__log.html#gaac5fe2352800ff62465a5abe649d5b8c',1,'cgroup_set_loglevel(int loglevel): log.c']]], - ['cgroup_5fset_5fpermissions_107',['cgroup_set_permissions',['../group__group__groups.html#gae8c8f601680e79150608073a55afcac0',1,'cgroup_set_permissions(struct cgroup *cgrp, mode_t control_dperm, mode_t control_fperm, mode_t task_fperm): api.c'],['../group__group__groups.html#gae8c8f601680e79150608073a55afcac0',1,'cgroup_set_permissions(struct cgroup *cgrp, mode_t control_dperm, mode_t control_fperm, mode_t task_fperm): api.c']]], - ['cgroup_5fset_5fuid_5fgid_108',['cgroup_set_uid_gid',['../group__group__groups.html#ga51f539b526d2a4939f03f0b4d4ed9040',1,'cgroup_set_uid_gid(struct cgroup *cgrp, uid_t tasks_uid, gid_t tasks_gid, uid_t control_uid, gid_t control_gid): wrapper.c'],['../group__group__groups.html#ga51f539b526d2a4939f03f0b4d4ed9040',1,'cgroup_set_uid_gid(struct cgroup *cgroup, uid_t tasks_uid, gid_t tasks_gid, uid_t control_uid, gid_t control_gid): 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): wrapper.c'],['../group__group__groups.html#gafb24892bc221cffee0f5fe07f64d54d7',1,'cgroup_set_value_bool(struct cgroup_controller *controller, const char *name, bool value): 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): wrapper.c'],['../group__group__groups.html#gaa5c39e51035cc43dd26a3c620441a956',1,'cgroup_set_value_int64(struct cgroup_controller *controller, const char *name, int64_t value): 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): wrapper.c'],['../group__group__groups.html#ga938febc02b59cbeb8e4ceb2dc7fdac82',1,'cgroup_set_value_string(struct cgroup_controller *controller, const char *name, const char *value): 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): wrapper.c'],['../group__group__groups.html#gade01aa1fe30ccc968af9fe8a3bc821e5',1,'cgroup_set_value_uint64(struct cgroup_controller *controller, const char *name, u_int64_t value): wrapper.c']]], - ['cgroup_5fsetup_5fmode_113',['cgroup_setup_mode',['../group__group__groups.html#gaebf0c15818fa8201b8a458f3e3e044da',1,'cgroup_setup_mode(void): api.c'],['../group__group__groups.html#gaebf0c15818fa8201b8a458f3e3e044da',1,'cgroup_setup_mode(void): api.c']]], - ['cgroup_5fstat_114',['cgroup_stat',['../structcgroup__stat.html',1,'']]], - ['cgroup_5fstrerror_115',['cgroup_strerror',['../group__group__errors.html#ga7ee3be57533b25d597a2bfd19819307a',1,'cgroup_strerror(int code): api.c'],['../group__group__errors.html#ga7ee3be57533b25d597a2bfd19819307a',1,'cgroup_strerror(int code): api.c']]], - ['cgroup_5fstring_5flist_116',['cgroup_string_list',['../structcgroup__string__list.html',1,'']]], - ['cgroup_5fsystemd_5fopts_117',['cgroup_systemd_opts',['../structcgroup__systemd__opts.html',1,'']]], - ['cgroup_5fsystemd_5fscope_5fopts_118',['cgroup_systemd_scope_opts',['../structcgroup__systemd__scope__opts.html',1,'']]], - ['cgroup_5ftemplates_5fcache_5fset_5fsource_5ffiles_119',['cgroup_templates_cache_set_source_files',['../group__group__config.html#gacb09024dc469a1a1ff8cdebd8d0ab422',1,'cgroup_templates_cache_set_source_files(struct cgroup_string_list *tmpl_files): config.c'],['../group__group__config.html#gacb09024dc469a1a1ff8cdebd8d0ab422',1,'cgroup_templates_cache_set_source_files(struct cgroup_string_list *tmpl_files): config.c']]], - ['cgroup_5ftree_5fhandle_120',['cgroup_tree_handle',['../structcgroup__tree__handle.html',1,'']]], - ['cgroup_5funload_5fcgroups_121',['cgroup_unload_cgroups',['../group__group__config.html#ga85b285712354faca495193075035938d',1,'cgroup_unload_cgroups(void): config.c'],['../group__group__config.html#ga85b285712354faca495193075035938d',1,'cgroup_unload_cgroups(void): config.c']]], - ['cgroup_5fwalk_5ftree_5fbegin_122',['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): 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): api.c']]], - ['cgroup_5fwalk_5ftree_5fend_123',['cgroup_walk_tree_end',['../group__group__iterators.html#ga09a70990837a58e506a264f8c50d4cde',1,'cgroup_walk_tree_end(void **handle): api.c'],['../group__group__iterators.html#ga09a70990837a58e506a264f8c50d4cde',1,'cgroup_walk_tree_end(void **handle): api.c']]], - ['cgroup_5fwalk_5ftree_5fnext_124',['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): api.c'],['../group__group__iterators.html#ga527f5499b0aa04d325074435baebdff1',1,'cgroup_walk_tree_next(int depth, void **handle, struct cgroup_file_info *info, int base_level): api.c']]], - ['cgroup_5fwalk_5ftree_5fset_5fflags_125',['cgroup_walk_tree_set_flags',['../group__group__iterators.html#ga645ec7a6206dffb32667e7a0e148edc8',1,'cgroup_walk_tree_set_flags(void **handle, int flags): api.c'],['../group__group__iterators.html#ga645ec7a6206dffb32667e7a0e148edc8',1,'cgroup_walk_tree_set_flags(void **handle, int flags): api.c']]], - ['cgroup_5fwalk_5ftype_126',['cgroup_walk_type',['../group__group__iterators.html#ga29a572cbc0c07e2b02dfa0f1ac0067d3',1,'iterators.h']]], - ['cgroup_5fwalk_5ftype_5fpost_5fdir_127',['CGROUP_WALK_TYPE_POST_DIR',['../group__group__iterators.html#gga29a572cbc0c07e2b02dfa0f1ac0067d3abf3c31227768960bd6622d2562aae3e1',1,'iterators.h']]], - ['cgroup_5fwalk_5ftype_5fpre_5fdir_128',['CGROUP_WALK_TYPE_PRE_DIR',['../group__group__iterators.html#gga29a572cbc0c07e2b02dfa0f1ac0067d3af865296e6a0e55cff574fbb132b9f913',1,'iterators.h']]], - ['cgroupcompareignoreruletest_129',['CgroupCompareIgnoreRuleTest',['../classCgroupCompareIgnoreRuleTest.html',1,'']]], - ['cgroupcreatecgrouptest_130',['CgroupCreateCgroupTest',['../classCgroupCreateCgroupTest.html',1,'']]], - ['cgrouperror_131',['CgroupError',['../classftests_1_1cgroup_1_1CgroupError.html',1,'ftests::cgroup']]], - ['cgroupgetcgrouptest_132',['CgroupGetCgroupTest',['../classCgroupGetCgroupTest.html',1,'']]], - ['cgroupmount_133',['CgroupMount',['../classftests_1_1cgroup_1_1CgroupMount.html',1,'ftests::cgroup']]], - ['cgroupprocessv1mnttest_134',['CgroupProcessV1MntTest',['../classCgroupProcessV1MntTest.html',1,'']]], - ['cgroupprocessv2mnttest_135',['CgroupProcessV2MntTest',['../classCgroupProcessV2MntTest.html',1,'']]], - ['cgroupv2controllerenabled_136',['CgroupV2ControllerEnabled',['../classCgroupV2ControllerEnabled.html',1,'']]], - ['cgroupversion_137',['CgroupVersion',['../classftests_1_1cgroup_1_1CgroupVersion.html',1,'ftests::cgroup']]], - ['cgsetparserflagtest_138',['CgsetParseRFlagTest',['../classCgsetParseRFlagTest.html',1,'']]], - ['changes_20restart_20the_20process_139',['7. If any problems were found up to this point that resulted in code changes, restart the process',['../md_doc_2internal_2release-github.html#autotoc_md15',1,'']]], - ['checksum_20for_20the_20release_20tarball_140',['13. Generate a checksum for the release tarball',['../md_doc_2internal_2release-github.html#autotoc_md21',1,'']]], - ['checksum_20using_20the_20maintainer_20s_20key_141',['14. GPG sign the release tarball and checksum using the maintainer's key',['../md_doc_2internal_2release-github.html#autotoc_md22',1,'']]], - ['child_20hierarchy_20via_20libcgroup_20command_20line_142',['Creating a Systemd Scope and Child Hierarchy via Libcgroup Command Line',['../md_samples_2cmdline_2systemd-with-idle-process.html#autotoc_md26',1,'']]], - ['chownchmodtaskstest_143',['ChownChmodTasksTest',['../classChownChmodTasksTest.html',1,'']]], - ['code_20changes_20restart_20the_20process_144',['7. If any problems were found up to this point that resulted in code changes, restart the process',['../md_doc_2internal_2release-github.html#autotoc_md15',1,'']]], - ['code_20using_20existing_20tests_145',['Test Your Code Using Existing Tests',['../md_CONTRIBUTING.html#autotoc_md1',1,'']]], - ['command_20line_146',['Creating a Systemd Scope and Child Hierarchy via Libcgroup Command Line',['../md_samples_2cmdline_2systemd-with-idle-process.html#autotoc_md26',1,'']]], - ['commit_20the_20version_20number_20in_20configure_20ac_20ac_5finit_20macro_20and_20library_20version_20macros_147',['9. Update and commit the version number in configure.ac AC_INIT(...) macro and LIBRARY version macros',['../md_doc_2internal_2release-github.html#autotoc_md17',1,'']]], - ['community_148',['Interacting with the Community',['../md_CONTRIBUTING.html#autotoc_md0',1,'']]], - ['config_149',['Config',['../classftests_1_1config_1_1Config.html',1,'ftests::config']]], - ['configerror_150',['ConfigError',['../classftests_1_1config_1_1ConfigError.html',1,'ftests::config']]], - ['configparser_151',['configparser',['../classftests_1_1cgroup_1_1Cgroup.html#ad02a62b22751f057e6befba23b820e8a',1,'ftests::cgroup::Cgroup']]], - ['configuration_152',['5. Configuration',['../group__group__config.html',1,'']]], - ['configure_20ac_20ac_5finit_20macro_20and_20library_20version_20macros_153',['9. Update and commit the version number in configure.ac AC_INIT(...) macro and LIBRARY version macros',['../md_doc_2internal_2release-github.html#autotoc_md17',1,'']]], - ['container_154',['Container',['../classftests_1_1container_1_1Container.html',1,'ftests::container']]], - ['containererror_155',['ContainerError',['../classftests_1_1container_1_1ContainerError.html',1,'ftests::container']]], - ['contribute_20to_20the_20libcgroup_20project_156',['How to Contribute to the libcgroup Project',['../md_CONTRIBUTING.html',1,'']]], - ['control_5fvalue_157',['control_value',['../structcontrol__value.html',1,'']]], - ['controller_158',['Controller',['../classftests_1_1controller_1_1Controller.html',1,'ftests::controller']]], - ['controller_5fdata_159',['controller_data',['../structcontroller__data.html',1,'']]], - ['correct_160',['4. Verify that the packaging is correct',['../md_doc_2internal_2release-github.html#autotoc_md12',1,'']]], - ['coverity_161',['5. Verify that there are no outstanding defects from Coverity',['../md_doc_2internal_2release-github.html#autotoc_md13',1,'']]], - ['create_20a_20new_20github_20release_20using_20the_20associated_20tag_20and_20upload_20the_20following_20files_162',['16. Create a new GitHub release using the associated tag and upload the following files',['../md_doc_2internal_2release-github.html#autotoc_md24',1,'']]], - ['create_20new_20release_20x_20y_20branch_163',['8. If this is a new major/minor release, create new 'release-X.Y' branch',['../md_doc_2internal_2release-github.html#autotoc_md16',1,'']]], - ['creating_20a_20systemd_20scope_20and_20child_20hierarchy_20via_20libcgroup_20command_20line_164',['Creating a Systemd Scope and Child Hierarchy via Libcgroup Command Line',['../md_samples_2cmdline_2systemd-with-idle-process.html#autotoc_md26',1,'']]] + ['cgroup_5',['Cgroup',['../classftests_1_1cgroup_1_1Cgroup.html',1,'ftests::cgroup']]], + ['cgroup_6',['cgroup',['../structcgroup.html',1,'']]], + ['cgroup_5fabstraction_5fmap_7',['cgroup_abstraction_map',['../structcgroup__abstraction__map.html',1,'']]], + ['cgroup_5fadd_5fall_5fcontrollers_8',['cgroup_add_all_controllers',['../group__group__groups.html#ga68f90377f6183dc8b326876cd1ecf4b1',1,'cgroup_add_all_controllers(struct cgroup *cgrp): wrapper.c'],['../group__group__groups.html#ga68f90377f6183dc8b326876cd1ecf4b1',1,'cgroup_add_all_controllers(struct cgroup *cgroup): wrapper.c']]], + ['cgroup_5fadd_5fcontroller_9',['cgroup_add_controller',['../group__group__groups.html#ga86b514fe6f99ded356eb5e799787f3f5',1,'cgroup_add_controller(struct cgroup *cgrp, const char *name): wrapper.c'],['../group__group__groups.html#ga86b514fe6f99ded356eb5e799787f3f5',1,'cgroup_add_controller(struct cgroup *cgroup, const char *name): wrapper.c']]], + ['cgroup_5fadd_5fvalue_5fbool_10',['cgroup_add_value_bool',['../group__group__groups.html#ga4b191a600f84b00ea7afd12c01d918f3',1,'cgroup_add_value_bool(struct cgroup_controller *controller, const char *name, bool value): wrapper.c'],['../group__group__groups.html#ga4b191a600f84b00ea7afd12c01d918f3',1,'cgroup_add_value_bool(struct cgroup_controller *controller, const char *name, bool value): wrapper.c']]], + ['cgroup_5fadd_5fvalue_5fint64_11',['cgroup_add_value_int64',['../group__group__groups.html#ga6c973bb5ce99e7a91def2032f23d7087',1,'cgroup_add_value_int64(struct cgroup_controller *controller, const char *name, int64_t value): wrapper.c'],['../group__group__groups.html#ga6c973bb5ce99e7a91def2032f23d7087',1,'cgroup_add_value_int64(struct cgroup_controller *controller, const char *name, int64_t value): wrapper.c']]], + ['cgroup_5fadd_5fvalue_5fstring_12',['cgroup_add_value_string',['../group__group__groups.html#ga4817c68ab791c09c07b663c29b3fb029',1,'cgroup_add_value_string(struct cgroup_controller *controller, const char *name, const char *value): wrapper.c'],['../group__group__groups.html#ga4817c68ab791c09c07b663c29b3fb029',1,'cgroup_add_value_string(struct cgroup_controller *controller, const char *name, const char *value): wrapper.c']]], + ['cgroup_5fadd_5fvalue_5fuint64_13',['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): wrapper.c'],['../group__group__groups.html#gad9d2216205b96278c626122f8d5e63bb',1,'cgroup_add_value_uint64(struct cgroup_controller *controller, const char *name, u_int64_t value): wrapper.c']]], + ['cgroup_5fattach_5ftask_14',['cgroup_attach_task',['../group__group__tasks.html#ga221ec5280a475ef096b3604a2e4a32e7',1,'cgroup_attach_task(struct cgroup *cgrp): api.c'],['../group__group__tasks.html#ga221ec5280a475ef096b3604a2e4a32e7',1,'cgroup_attach_task(struct cgroup *cgroup): api.c']]], + ['cgroup_5fattach_5ftask_5fpid_15',['cgroup_attach_task_pid',['../group__group__tasks.html#ga1fcd62dd6fcfb7b6c9361702d374a96d',1,'cgroup_attach_task_pid(struct cgroup *cgrp, pid_t tid): api.c'],['../group__group__tasks.html#ga1fcd62dd6fcfb7b6c9361702d374a96d',1,'cgroup_attach_task_pid(struct cgroup *cgroup, pid_t tid): api.c']]], + ['cgroup_5fattach_5fthread_5ftid_16',['cgroup_attach_thread_tid',['../group__group__tasks.html#gabdb49127e5959831abb3a03e384c3dee',1,'cgroup_attach_thread_tid(struct cgroup *cgroup, pid_t tid): api.c'],['../group__group__tasks.html#gabdb49127e5959831abb3a03e384c3dee',1,'cgroup_attach_thread_tid(struct cgroup *cgroup, pid_t tid): api.c']]], + ['cgroup_5fchange_5fall_5fcgroups_17',['cgroup_change_all_cgroups',['../group__group__tasks.html#gafc69658b012b6f1c11ba078ffccd70a2',1,'cgroup_change_all_cgroups(void): api.c'],['../group__group__tasks.html#gafc69658b012b6f1c11ba078ffccd70a2',1,'cgroup_change_all_cgroups(void): api.c']]], + ['cgroup_5fchange_5fcgroup_5fflags_18',['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): 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): api.c']]], + ['cgroup_5fchange_5fcgroup_5fpath_19',['cgroup_change_cgroup_path',['../group__group__tasks.html#ga2d4677baef780c003fc6fba6b5dc78f2',1,'cgroup_change_cgroup_path(const char *path, pid_t pid, const char *const controllers[]): api.c'],['../group__group__tasks.html#ga2d4677baef780c003fc6fba6b5dc78f2',1,'cgroup_change_cgroup_path(const char *dest, pid_t pid, const char *const controllers[]): api.c']]], + ['cgroup_5fchange_5fcgroup_5fuid_5fgid_20',['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): api.c'],['../group__group__tasks.html#ga5eab78a922dbacd368360f03c70146be',1,'cgroup_change_cgroup_uid_gid(uid_t uid, gid_t gid, pid_t pid): api.c']]], + ['cgroup_5fchange_5fcgroup_5fuid_5fgid_5fflags_21',['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): 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): api.c']]], + ['cgroup_5fcompare_5fcgroup_22',['cgroup_compare_cgroup',['../group__group__groups.html#gaf066e538ebf4aa1f32a654f302a8c353',1,'cgroup_compare_cgroup(struct cgroup *cgrp_a, struct cgroup *cgrp_b): wrapper.c'],['../group__group__groups.html#gaf066e538ebf4aa1f32a654f302a8c353',1,'cgroup_compare_cgroup(struct cgroup *cgroup_a, struct cgroup *cgroup_b): wrapper.c']]], + ['cgroup_5fcompare_5fcontrollers_23',['cgroup_compare_controllers',['../group__group__groups.html#gab1725c50c49cec4b0bdad1f26b150ca7',1,'cgroup_compare_controllers(struct cgroup_controller *cgca, struct cgroup_controller *cgcb): wrapper.c'],['../group__group__groups.html#gab1725c50c49cec4b0bdad1f26b150ca7',1,'cgroup_compare_controllers(struct cgroup_controller *cgca, struct cgroup_controller *cgcb): wrapper.c']]], + ['cgroup_5fconfig_5fcreate_5ftemplate_5fgroup_24',['cgroup_config_create_template_group',['../group__group__config.html#ga37d49cceb927c44292e3137bceeeb5eb',1,'cgroup_config_create_template_group(struct cgroup *cgrp, char *template_name, int flags): config.c'],['../group__group__config.html#ga37d49cceb927c44292e3137bceeeb5eb',1,'cgroup_config_create_template_group(struct cgroup *cgroup, char *template_name, int flags): config.c']]], + ['cgroup_5fconfig_5fload_5fconfig_25',['cgroup_config_load_config',['../group__group__config.html#ga8adfaca013333acf922a167f55b84140',1,'cgroup_config_load_config(const char *pathname): config.c'],['../group__group__config.html#ga8adfaca013333acf922a167f55b84140',1,'cgroup_config_load_config(const char *pathname): config.c']]], + ['cgroup_5fconfig_5fset_5fdefault_26',['cgroup_config_set_default',['../group__group__config.html#ga2d3a252b2c0c61c8f64cb1fc41e370ea',1,'cgroup_config_set_default(struct cgroup *new_default): config.c'],['../group__group__config.html#ga2d3a252b2c0c61c8f64cb1fc41e370ea',1,'cgroup_config_set_default(struct cgroup *new_default): config.c']]], + ['cgroup_5fconfig_5funload_5fconfig_27',['cgroup_config_unload_config',['../group__group__config.html#gaff77affa0b80ccf507b4b46cc0a8c085',1,'cgroup_config_unload_config(const char *pathname, int flags): config.c'],['../group__group__config.html#gaff77affa0b80ccf507b4b46cc0a8c085',1,'cgroup_config_unload_config(const char *pathname, int flags): config.c']]], + ['cgroup_5fcontroller_28',['cgroup_controller',['../structcgroup__controller.html',1,'']]], + ['cgroup_5fcopy_5fcgroup_29',['cgroup_copy_cgroup',['../group__group__groups.html#gaa981a95e0917d3167601a4c1b392336a',1,'cgroup_copy_cgroup(struct cgroup *dst, struct cgroup *src): api.c'],['../group__group__groups.html#gaa981a95e0917d3167601a4c1b392336a',1,'cgroup_copy_cgroup(struct cgroup *dst, struct cgroup *src): api.c']]], + ['cgroup_5fcreate_5fcgroup_30',['cgroup_create_cgroup',['../group__group__groups.html#ga74c5b4a1d3bc7729af1383c131254fbd',1,'cgroup_create_cgroup(struct cgroup *cgrp, int ignore_ownership): api.c'],['../group__group__groups.html#ga74c5b4a1d3bc7729af1383c131254fbd',1,'cgroup_create_cgroup(struct cgroup *cgrp, int ignore_ownership): api.c']]], + ['cgroup_5fcreate_5fcgroup_5ffrom_5fparent_31',['cgroup_create_cgroup_from_parent',['../group__group__groups.html#ga4d1f015f3fe8bad80fec2abb69e69841',1,'cgroup_create_cgroup_from_parent(struct cgroup *cgrp, int ignore_ownership): api.c'],['../group__group__groups.html#ga4d1f015f3fe8bad80fec2abb69e69841',1,'cgroup_create_cgroup_from_parent(struct cgroup *cgrp, int ignore_ownership): api.c']]], + ['cgroup_5fdelete_5fcgroup_32',['cgroup_delete_cgroup',['../group__group__groups.html#ga4e21815cc612604cdf3d58fa2b34db16',1,'cgroup_delete_cgroup(struct cgroup *cgrp, int ignore_migration): api.c'],['../group__group__groups.html#ga4e21815cc612604cdf3d58fa2b34db16',1,'cgroup_delete_cgroup(struct cgroup *cgrp, int ignore_migration): api.c']]], + ['cgroup_5fdelete_5fcgroup_5fext_33',['cgroup_delete_cgroup_ext',['../group__group__groups.html#gab70ff2b86d261411262c4be31e3140e8',1,'cgroup_delete_cgroup_ext(struct cgroup *cgrp, int flags): api.c'],['../group__group__groups.html#gab70ff2b86d261411262c4be31e3140e8',1,'cgroup_delete_cgroup_ext(struct cgroup *cgrp, int flags): api.c']]], + ['cgroup_5fdictionary_34',['cgroup_dictionary',['../structcgroup__dictionary.html',1,'']]], + ['cgroup_5fdictionary_5fitem_35',['cgroup_dictionary_item',['../structcgroup__dictionary__item.html',1,'']]], + ['cgroup_5fdictionary_5fiterator_36',['cgroup_dictionary_iterator',['../structcgroup__dictionary__iterator.html',1,'']]], + ['cgroup_5ffile_5finfo_37',['cgroup_file_info',['../structcgroup__file__info.html',1,'']]], + ['cgroup_5ffile_5ftype_38',['cgroup_file_type',['../group__group__iterators.html#ga608b4aa32e2db58fed34771a6a272444',1,'iterators.h']]], + ['cgroup_5ffile_5ftype_5fdir_39',['CGROUP_FILE_TYPE_DIR',['../group__group__iterators.html#gga608b4aa32e2db58fed34771a6a272444a5418798fc4bf9634429c6af167a0e7c3',1,'iterators.h']]], + ['cgroup_5ffile_5ftype_5ffile_40',['CGROUP_FILE_TYPE_FILE',['../group__group__iterators.html#gga608b4aa32e2db58fed34771a6a272444ad925cc45f1b34fe80e14fc6b05269740',1,'iterators.h']]], + ['cgroup_5ffile_5ftype_5fother_41',['CGROUP_FILE_TYPE_OTHER',['../group__group__iterators.html#gga608b4aa32e2db58fed34771a6a272444a24e202c59f318e63ad8cafcc1b4b102b',1,'iterators.h']]], + ['cgroup_5ffree_42',['cgroup_free',['../group__group__groups.html#ga7e719c74424040d0d8d3a13d66080a80',1,'cgroup_free(struct cgroup **cgrp): wrapper.c'],['../group__group__groups.html#ga7e719c74424040d0d8d3a13d66080a80',1,'cgroup_free(struct cgroup **cgroup): wrapper.c']]], + ['cgroup_5ffree_5fcontrollers_43',['cgroup_free_controllers',['../group__group__groups.html#ga4104e108e85a8576c878822f353b4e39',1,'cgroup_free_controllers(struct cgroup *cgrp): wrapper.c'],['../group__group__groups.html#ga4104e108e85a8576c878822f353b4e39',1,'cgroup_free_controllers(struct cgroup *cgroup): wrapper.c']]], + ['cgroup_5fget_5fall_5fcontroller_5fbegin_44',['cgroup_get_all_controller_begin',['../group__group__iterators.html#gad48ef653388ca6739a9b6bbb9d7da82e',1,'cgroup_get_all_controller_begin(void **handle, struct controller_data *info): api.c'],['../group__group__iterators.html#gad48ef653388ca6739a9b6bbb9d7da82e',1,'cgroup_get_all_controller_begin(void **handle, struct controller_data *info): api.c']]], + ['cgroup_5fget_5fall_5fcontroller_5fend_45',['cgroup_get_all_controller_end',['../group__group__iterators.html#ga0c467d42a2c9a916a0edd339a6d7afc8',1,'cgroup_get_all_controller_end(void **handle): api.c'],['../group__group__iterators.html#ga0c467d42a2c9a916a0edd339a6d7afc8',1,'cgroup_get_all_controller_end(void **handle): api.c']]], + ['cgroup_5fget_5fall_5fcontroller_5fnext_46',['cgroup_get_all_controller_next',['../group__group__iterators.html#ga3d98a04b29b1fe409db1114b7aa76809',1,'cgroup_get_all_controller_next(void **handle, struct controller_data *info): api.c'],['../group__group__iterators.html#ga3d98a04b29b1fe409db1114b7aa76809',1,'cgroup_get_all_controller_next(void **handle, struct controller_data *info): api.c']]], + ['cgroup_5fget_5fcgroup_47',['cgroup_get_cgroup',['../group__group__groups.html#ga25ef7e1c839c682e4bb6bab4bd24c37f',1,'cgroup_get_cgroup(struct cgroup *cgrp): api.c'],['../group__group__groups.html#ga25ef7e1c839c682e4bb6bab4bd24c37f',1,'cgroup_get_cgroup(struct cgroup *cgrp): api.c']]], + ['cgroup_5fget_5fcgroup_5fname_48',['cgroup_get_cgroup_name',['../group__group__groups.html#ga7d759f21861ed546c12094cabc0b7054',1,'cgroup_get_cgroup_name(struct cgroup *cgrp): wrapper.c'],['../group__group__groups.html#ga7d759f21861ed546c12094cabc0b7054',1,'cgroup_get_cgroup_name(struct cgroup *cgroup): wrapper.c']]], + ['cgroup_5fget_5fcontroller_49',['cgroup_get_controller',['../group__group__groups.html#gafbc8bd483ee6fbd3b1ccbbd159beccf6',1,'cgroup_get_controller(struct cgroup *cgrp, const char *name): wrapper.c'],['../group__group__groups.html#gafbc8bd483ee6fbd3b1ccbbd159beccf6',1,'cgroup_get_controller(struct cgroup *cgroup, const char *name): wrapper.c']]], + ['cgroup_5fget_5fcontroller_5fbegin_50',['cgroup_get_controller_begin',['../group__group__iterators.html#ga5f9f21138f9b18912a16b21a45b53c44',1,'cgroup_get_controller_begin(void **handle, struct cgroup_mount_point *info): api.c'],['../group__group__iterators.html#ga5f9f21138f9b18912a16b21a45b53c44',1,'cgroup_get_controller_begin(void **handle, struct cgroup_mount_point *info): api.c']]], + ['cgroup_5fget_5fcontroller_5fby_5findex_51',['cgroup_get_controller_by_index',['../group__group__groups.html#gaba11ac0b3b74400501a1b030dfd7be9a',1,'cgroup_get_controller_by_index(struct cgroup *cgrp, int index): api.c'],['../group__group__groups.html#gaba11ac0b3b74400501a1b030dfd7be9a',1,'cgroup_get_controller_by_index(struct cgroup *cgrp, int index): api.c']]], + ['cgroup_5fget_5fcontroller_5fcount_52',['cgroup_get_controller_count',['../group__group__groups.html#ga42d5c13ecb8d9d7e625bb473034a26c3',1,'cgroup_get_controller_count(struct cgroup *cgrp): api.c'],['../group__group__groups.html#ga42d5c13ecb8d9d7e625bb473034a26c3',1,'cgroup_get_controller_count(struct cgroup *cgrp): api.c']]], + ['cgroup_5fget_5fcontroller_5fend_53',['cgroup_get_controller_end',['../group__group__iterators.html#gab485cda2bc9640bacbf61f1953ae750c',1,'cgroup_get_controller_end(void **handle): api.c'],['../group__group__iterators.html#gab485cda2bc9640bacbf61f1953ae750c',1,'cgroup_get_controller_end(void **handle): api.c']]], + ['cgroup_5fget_5fcontroller_5fname_54',['cgroup_get_controller_name',['../group__group__groups.html#gac13c5570894e6581bd1ebbdcbb73c74e',1,'cgroup_get_controller_name(struct cgroup_controller *controller): api.c'],['../group__group__groups.html#gac13c5570894e6581bd1ebbdcbb73c74e',1,'cgroup_get_controller_name(struct cgroup_controller *controller): api.c']]], + ['cgroup_5fget_5fcontroller_5fnext_55',['cgroup_get_controller_next',['../group__group__iterators.html#ga926b70423b6c087c21a14670cd23cd7d',1,'cgroup_get_controller_next(void **handle, struct cgroup_mount_point *info): api.c'],['../group__group__iterators.html#ga926b70423b6c087c21a14670cd23cd7d',1,'cgroup_get_controller_next(void **handle, struct cgroup_mount_point *info): api.c']]], + ['cgroup_5fget_5fcontroller_5fversion_56',['cgroup_get_controller_version',['../group__group__groups.html#ga452d8c5e95c8d694e26e7efda045360f',1,'cgroup_get_controller_version(const char *const controller, enum cg_version_t *const version): api.c'],['../group__group__groups.html#ga452d8c5e95c8d694e26e7efda045360f',1,'cgroup_get_controller_version(const char *const controller, enum cg_version_t *const version): api.c']]], + ['cgroup_5fget_5fcurrent_5fcontroller_5fpath_57',['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): api.c'],['../group__group__tasks.html#ga6f2c17b99cf2526cb46df4769eb3f46e',1,'cgroup_get_current_controller_path(pid_t pid, const char *controller, char **current_path): api.c']]], + ['cgroup_5fget_5flast_5ferrno_58',['cgroup_get_last_errno',['../group__group__errors.html#ga29057c4aec05bef2b6bf2855ae5d5d46',1,'cgroup_get_last_errno(void): api.c'],['../group__group__errors.html#ga29057c4aec05bef2b6bf2855ae5d5d46',1,'cgroup_get_last_errno(void): api.c']]], + ['cgroup_5fget_5floglevel_59',['cgroup_get_loglevel',['../group__group__log.html#ga75c24d59f2fcf3320575a40befcd66d4',1,'cgroup_get_loglevel(void): log.c'],['../group__group__log.html#ga75c24d59f2fcf3320575a40befcd66d4',1,'cgroup_get_loglevel(void): log.c']]], + ['cgroup_5fget_5fprocs_60',['cgroup_get_procs',['../group__group__groups.html#ga65ece0f619100492d758fbeb3788358a',1,'cgroup_get_procs(const char *name, const char *controller, pid_t **pids, int *size): api.c'],['../group__group__groups.html#ga65ece0f619100492d758fbeb3788358a',1,'cgroup_get_procs(const char *name, const char *controller, pid_t **pids, int *size): api.c']]], + ['cgroup_5fget_5fsubsys_5fmount_5fpoint_5fbegin_61',['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): api.c'],['../group__group__iterators.html#ga18a3c6fe7da42b9da96ce34dce1e31b8',1,'cgroup_get_subsys_mount_point_begin(const char *controller, void **handle, char *path): api.c']]], + ['cgroup_5fget_5fsubsys_5fmount_5fpoint_5fend_62',['cgroup_get_subsys_mount_point_end',['../group__group__iterators.html#ga9c9b0f1921c205bd25bfc6c1d20486eb',1,'cgroup_get_subsys_mount_point_end(void **handle): api.c'],['../group__group__iterators.html#ga9c9b0f1921c205bd25bfc6c1d20486eb',1,'cgroup_get_subsys_mount_point_end(void **handle): api.c']]], + ['cgroup_5fget_5fsubsys_5fmount_5fpoint_5fnext_63',['cgroup_get_subsys_mount_point_next',['../group__group__iterators.html#ga3d66997158cb8a334317923ad94cc789',1,'cgroup_get_subsys_mount_point_next(void **handle, char *path): api.c'],['../group__group__iterators.html#ga3d66997158cb8a334317923ad94cc789',1,'cgroup_get_subsys_mount_point_next(void **handle, char *path): api.c']]], + ['cgroup_5fget_5ftask_5fbegin_64',['cgroup_get_task_begin',['../group__group__iterators.html#gad194c8c62288dd37349ed947c91217d6',1,'cgroup_get_task_begin(const char *cgrp, const char *controller, void **handle, pid_t *pid): api.c'],['../group__group__iterators.html#gad194c8c62288dd37349ed947c91217d6',1,'cgroup_get_task_begin(const char *cgrp, const char *controller, void **handle, pid_t *pid): api.c']]], + ['cgroup_5fget_5ftask_5fend_65',['cgroup_get_task_end',['../group__group__iterators.html#gaeb955e5f4da551268380b1271d478816',1,'cgroup_get_task_end(void **handle): api.c'],['../group__group__iterators.html#gaeb955e5f4da551268380b1271d478816',1,'cgroup_get_task_end(void **handle): api.c']]], + ['cgroup_5fget_5ftask_5fnext_66',['cgroup_get_task_next',['../group__group__iterators.html#gaf3a0364682b7449ddccfb0862bbb565e',1,'cgroup_get_task_next(void **handle, pid_t *pid): api.c'],['../group__group__iterators.html#gaf3a0364682b7449ddccfb0862bbb565e',1,'cgroup_get_task_next(void **handle, pid_t *pid): api.c']]], + ['cgroup_5fget_5fthreads_67',['cgroup_get_threads',['../group__group__groups.html#ga5a9cb81b0a1e0f3bd08599084d4ae300',1,'cgroup_get_threads(const char *name, const char *controller, pid_t **pids, int *size): api.c'],['../group__group__groups.html#ga5a9cb81b0a1e0f3bd08599084d4ae300',1,'cgroup_get_threads(const char *name, const char *controller, pid_t **pids, int *size): api.c']]], + ['cgroup_5fget_5fuid_5fgid_68',['cgroup_get_uid_gid',['../group__group__groups.html#ga3b560f12d9d50c177cc48d5016c93412',1,'cgroup_get_uid_gid(struct cgroup *cgrp, uid_t *tasks_uid, gid_t *tasks_gid, uid_t *control_uid, gid_t *control_gid): wrapper.c'],['../group__group__groups.html#ga3b560f12d9d50c177cc48d5016c93412',1,'cgroup_get_uid_gid(struct cgroup *cgroup, uid_t *tasks_uid, gid_t *tasks_gid, uid_t *control_uid, gid_t *control_gid): wrapper.c']]], + ['cgroup_5fget_5fvalue_5fbool_69',['cgroup_get_value_bool',['../group__group__groups.html#gab95007148eac89b7e935d93a4524787b',1,'cgroup_get_value_bool(struct cgroup_controller *controller, const char *name, bool *value): wrapper.c'],['../group__group__groups.html#gab95007148eac89b7e935d93a4524787b',1,'cgroup_get_value_bool(struct cgroup_controller *controller, const char *name, bool *value): wrapper.c']]], + ['cgroup_5fget_5fvalue_5fint64_70',['cgroup_get_value_int64',['../group__group__groups.html#ga0fe9b05f26b3cab21fc446c9a2700526',1,'cgroup_get_value_int64(struct cgroup_controller *controller, const char *name, int64_t *value): wrapper.c'],['../group__group__groups.html#ga0fe9b05f26b3cab21fc446c9a2700526',1,'cgroup_get_value_int64(struct cgroup_controller *controller, const char *name, int64_t *value): wrapper.c']]], + ['cgroup_5fget_5fvalue_5fname_71',['cgroup_get_value_name',['../group__group__groups.html#ga9d01743fd3f97014e08fc67149ec5f0b',1,'cgroup_get_value_name(struct cgroup_controller *controller, int index): wrapper.c'],['../group__group__groups.html#ga9d01743fd3f97014e08fc67149ec5f0b',1,'cgroup_get_value_name(struct cgroup_controller *controller, int index): wrapper.c']]], + ['cgroup_5fget_5fvalue_5fname_5fcount_72',['cgroup_get_value_name_count',['../group__group__groups.html#ga25115085978ce2a8d671e7876cc49c1d',1,'cgroup_get_value_name_count(struct cgroup_controller *controller): wrapper.c'],['../group__group__groups.html#ga25115085978ce2a8d671e7876cc49c1d',1,'cgroup_get_value_name_count(struct cgroup_controller *controller): wrapper.c']]], + ['cgroup_5fget_5fvalue_5fstring_73',['cgroup_get_value_string',['../group__group__groups.html#gafaa51e5ffe09f8ad05585a1d3b6f7fa9',1,'cgroup_get_value_string(struct cgroup_controller *controller, const char *name, char **value): wrapper.c'],['../group__group__groups.html#gafaa51e5ffe09f8ad05585a1d3b6f7fa9',1,'cgroup_get_value_string(struct cgroup_controller *controller, const char *name, char **value): wrapper.c']]], + ['cgroup_5fget_5fvalue_5fuint64_74',['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): wrapper.c'],['../group__group__groups.html#ga951861259c0373895bfb637fce337312',1,'cgroup_get_value_uint64(struct cgroup_controller *controller, const char *name, u_int64_t *value): wrapper.c']]], + ['cgroup_5fgroup_5fspec_75',['cgroup_group_spec',['../structcgroup__group__spec.html',1,'']]], + ['cgroup_5finfo_76',['cgroup_info',['../structcgroup__info.html',1,'']]], + ['cgroup_5finit_5frules_5fcache_77',['cgroup_init_rules_cache',['../group__group__tasks.html#gad7fa5a2c4db08d31da5bfbecaf482d3d',1,'cgroup_init_rules_cache(void): api.c'],['../group__group__tasks.html#gad7fa5a2c4db08d31da5bfbecaf482d3d',1,'cgroup_init_rules_cache(void): api.c']]], + ['cgroup_5finit_5ftemplates_5fcache_78',['cgroup_init_templates_cache',['../group__group__config.html#ga6f8c41bb920565e674787fe6dabaef00',1,'cgroup_init_templates_cache(char *pathname): config.c'],['../group__group__config.html#ga6f8c41bb920565e674787fe6dabaef00',1,'cgroup_init_templates_cache(char *pathname): config.c']]], + ['cgroup_5flist_5fmount_5fpoints_79',['cgroup_list_mount_points',['../group__group__groups.html#ga0fd537a3ba09c497378dc494fa405f82',1,'cgroup_list_mount_points(const enum cg_version_t cgrp_version, char ***mount_paths): api.c'],['../group__group__groups.html#ga0fd537a3ba09c497378dc494fa405f82',1,'cgroup_list_mount_points(const enum cg_version_t cgrp_version, char ***mount_paths): api.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): config.c'],['../group__group__config.html#ga924860998c37da53cababe24163fc89b',1,'cgroup_load_templates_cache_from_files(int *file_index): config.c']]], + ['cgroup_5flog_81',['cgroup_log',['../group__group__log.html#gab514ad5d83422ddfe479bdf651e80958',1,'cgroup_log(int loglevel, const char *fmt,...): log.c'],['../group__group__log.html#gab514ad5d83422ddfe479bdf651e80958',1,'cgroup_log(int level, const char *fmt,...): log.c']]], + ['cgroup_5flog_5fcont_82',['CGROUP_LOG_CONT',['../group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aa915b87fe26cc45572e40508dc6d62e88',1,'log.h']]], + ['cgroup_5flog_5fdebug_83',['CGROUP_LOG_DEBUG',['../group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aa86b4157fb38d9f8053c6b7429bd26c72',1,'log.h']]], + ['cgroup_5flog_5ferror_84',['CGROUP_LOG_ERROR',['../group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aa4dd44215cd3553e79dbf91eb9ca418a2',1,'log.h']]], + ['cgroup_5flog_5finfo_85',['CGROUP_LOG_INFO',['../group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aad66ab51dba078ffc3b1c6d397053f9e2',1,'log.h']]], + ['cgroup_5flog_5flevel_86',['cgroup_log_level',['../group__group__log.html#ga98b7aea5d23411e70c7e3da54d90233a',1,'log.h']]], + ['cgroup_5flog_5fwarning_87',['CGROUP_LOG_WARNING',['../group__group__log.html#gga98b7aea5d23411e70c7e3da54d90233aaa99ec9e854a543901bddf854d1960057',1,'log.h']]], + ['cgroup_5fmodify_5fcgroup_88',['cgroup_modify_cgroup',['../group__group__groups.html#gadadc95782f82d1e4265ece226ee0a9ed',1,'cgroup_modify_cgroup(struct cgroup *cgrp): api.c'],['../group__group__groups.html#gadadc95782f82d1e4265ece226ee0a9ed',1,'cgroup_modify_cgroup(struct cgroup *cgrp): api.c']]], + ['cgroup_5fmount_5fpoint_89',['cgroup_mount_point',['../structcgroup__mount__point.html',1,'']]], + ['cgroup_5fnew_5fcgroup_90',['cgroup_new_cgroup',['../group__group__groups.html#gad34c82ead174988d418f3dcb003aaca7',1,'cgroup_new_cgroup(const char *name): wrapper.c'],['../group__group__groups.html#gad34c82ead174988d418f3dcb003aaca7',1,'cgroup_new_cgroup(const char *name): wrapper.c']]], + ['cgroup_5fparse_5flog_5flevel_5fstr_91',['cgroup_parse_log_level_str',['../group__group__log.html#gaa364a06aee0e99228a1e6a26b25a9794',1,'cgroup_parse_log_level_str(const char *levelstr): log.c'],['../group__group__log.html#gaa364a06aee0e99228a1e6a26b25a9794',1,'cgroup_parse_log_level_str(const char *levelstr): log.c']]], + ['cgroup_5fprint_5frules_5fconfig_92',['cgroup_print_rules_config',['../group__group__tasks.html#gac4e3f29cfbdc3d77f08c9fe60857274a',1,'cgroup_print_rules_config(FILE *fp): api.c'],['../group__group__tasks.html#gac4e3f29cfbdc3d77f08c9fe60857274a',1,'cgroup_print_rules_config(FILE *fp): api.c']]], + ['cgroup_5fread_5fstats_5fbegin_93',['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): api.c'],['../group__group__iterators.html#ga1138e47f124f0f634586db5e0c4ae5de',1,'cgroup_read_stats_begin(const char *controller, const char *path, void **handle, struct cgroup_stat *cgrp_stat): api.c']]], + ['cgroup_5fread_5fstats_5fend_94',['cgroup_read_stats_end',['../group__group__iterators.html#gaba386d9db6cadc6ad85c2552f63447bb',1,'cgroup_read_stats_end(void **handle): api.c'],['../group__group__iterators.html#gaba386d9db6cadc6ad85c2552f63447bb',1,'cgroup_read_stats_end(void **handle): api.c']]], + ['cgroup_5fread_5fstats_5fnext_95',['cgroup_read_stats_next',['../group__group__iterators.html#gaf95587508fc15d74fd5ed0df58024be7',1,'cgroup_read_stats_next(void **handle, struct cgroup_stat *stat): api.c'],['../group__group__iterators.html#gaf95587508fc15d74fd5ed0df58024be7',1,'cgroup_read_stats_next(void **handle, struct cgroup_stat *cgrp_stat): api.c']]], + ['cgroup_5fread_5fvalue_5fbegin_96',['cgroup_read_value_begin',['../group__group__iterators.html#ga9378ee0f1f6e65900df8e25b3d7ce236',1,'cgroup_read_value_begin(const char *const controller, const char *path, const char *const name, void **handle, char *buffer, int max): api.c'],['../group__group__iterators.html#ga9378ee0f1f6e65900df8e25b3d7ce236',1,'cgroup_read_value_begin(const char *const controller, const char *path, const char *const name, void **handle, char *buffer, int max): api.c']]], + ['cgroup_5fread_5fvalue_5fend_97',['cgroup_read_value_end',['../group__group__iterators.html#gad348f041e283860cbf6bcea567e23a21',1,'cgroup_read_value_end(void **handle): api.c'],['../group__group__iterators.html#gad348f041e283860cbf6bcea567e23a21',1,'cgroup_read_value_end(void **handle): api.c']]], + ['cgroup_5fread_5fvalue_5fnext_98',['cgroup_read_value_next',['../group__group__iterators.html#gaced2fe331f19d599a3270db2440847cc',1,'cgroup_read_value_next(void **handle, char *buffer, int max): api.c'],['../group__group__iterators.html#gaced2fe331f19d599a3270db2440847cc',1,'cgroup_read_value_next(void **handle, char *buffer, int max): api.c']]], + ['cgroup_5fregister_5funchanged_5fprocess_99',['cgroup_register_unchanged_process',['../group__group__tasks.html#ga64f7967d6d5edfff9afddaa6a6974b1c',1,'cgroup_register_unchanged_process(pid_t pid, int flags): api.c'],['../group__group__tasks.html#ga64f7967d6d5edfff9afddaa6a6974b1c',1,'cgroup_register_unchanged_process(pid_t pid, int flags): api.c']]], + ['cgroup_5freload_5fcached_5frules_100',['cgroup_reload_cached_rules',['../group__group__tasks.html#gaf81ebd9cb5575c75b4c85f385ebda1ce',1,'cgroup_reload_cached_rules(void): api.c'],['../group__group__tasks.html#gaf81ebd9cb5575c75b4c85f385ebda1ce',1,'cgroup_reload_cached_rules(void): api.c']]], + ['cgroup_5freload_5fcached_5ftemplates_101',['cgroup_reload_cached_templates',['../group__group__config.html#ga89fe0d7943b29cc10d57b07abcdfa7b5',1,'cgroup_reload_cached_templates(char *pathname): config.c'],['../group__group__config.html#ga89fe0d7943b29cc10d57b07abcdfa7b5',1,'cgroup_reload_cached_templates(char *pathname): config.c']]], + ['cgroup_5frule_102',['cgroup_rule',['../structcgroup__rule.html',1,'']]], + ['cgroup_5frule_5flist_103',['cgroup_rule_list',['../structcgroup__rule__list.html',1,'']]], + ['cgroup_5frules_5fdata_104',['cgroup_rules_data',['../structcgroup__rules__data.html',1,'']]], + ['cgroup_5fset_5fdefault_5flogger_105',['cgroup_set_default_logger',['../group__group__log.html#gab1457ce518dcde0b9f3c14ec9efa2de7',1,'cgroup_set_default_logger(int loglevel): log.c'],['../group__group__log.html#gab1457ce518dcde0b9f3c14ec9efa2de7',1,'cgroup_set_default_logger(int level): log.c']]], + ['cgroup_5fset_5flogger_106',['cgroup_set_logger',['../group__group__log.html#ga76d7032206f9b9d1c0be1a71a68c43d0',1,'cgroup_set_logger(cgroup_logger_callback logger, int loglevel, void *userdata): log.c'],['../group__group__log.html#ga76d7032206f9b9d1c0be1a71a68c43d0',1,'cgroup_set_logger(cgroup_logger_callback logger, int loglevel, void *userdata): log.c']]], + ['cgroup_5fset_5floglevel_107',['cgroup_set_loglevel',['../group__group__log.html#gaac5fe2352800ff62465a5abe649d5b8c',1,'cgroup_set_loglevel(int loglevel): log.c'],['../group__group__log.html#gaac5fe2352800ff62465a5abe649d5b8c',1,'cgroup_set_loglevel(int loglevel): log.c']]], + ['cgroup_5fset_5fpermissions_108',['cgroup_set_permissions',['../group__group__groups.html#gae8c8f601680e79150608073a55afcac0',1,'cgroup_set_permissions(struct cgroup *cgrp, mode_t control_dperm, mode_t control_fperm, mode_t task_fperm): api.c'],['../group__group__groups.html#gae8c8f601680e79150608073a55afcac0',1,'cgroup_set_permissions(struct cgroup *cgrp, mode_t control_dperm, mode_t control_fperm, mode_t task_fperm): api.c']]], + ['cgroup_5fset_5fuid_5fgid_109',['cgroup_set_uid_gid',['../group__group__groups.html#ga51f539b526d2a4939f03f0b4d4ed9040',1,'cgroup_set_uid_gid(struct cgroup *cgrp, uid_t tasks_uid, gid_t tasks_gid, uid_t control_uid, gid_t control_gid): wrapper.c'],['../group__group__groups.html#ga51f539b526d2a4939f03f0b4d4ed9040',1,'cgroup_set_uid_gid(struct cgroup *cgroup, uid_t tasks_uid, gid_t tasks_gid, uid_t control_uid, gid_t control_gid): wrapper.c']]], + ['cgroup_5fset_5fvalue_5fbool_110',['cgroup_set_value_bool',['../group__group__groups.html#gafb24892bc221cffee0f5fe07f64d54d7',1,'cgroup_set_value_bool(struct cgroup_controller *controller, const char *name, bool value): wrapper.c'],['../group__group__groups.html#gafb24892bc221cffee0f5fe07f64d54d7',1,'cgroup_set_value_bool(struct cgroup_controller *controller, const char *name, bool value): wrapper.c']]], + ['cgroup_5fset_5fvalue_5fint64_111',['cgroup_set_value_int64',['../group__group__groups.html#gaa5c39e51035cc43dd26a3c620441a956',1,'cgroup_set_value_int64(struct cgroup_controller *controller, const char *name, int64_t value): wrapper.c'],['../group__group__groups.html#gaa5c39e51035cc43dd26a3c620441a956',1,'cgroup_set_value_int64(struct cgroup_controller *controller, const char *name, int64_t value): wrapper.c']]], + ['cgroup_5fset_5fvalue_5fstring_112',['cgroup_set_value_string',['../group__group__groups.html#ga938febc02b59cbeb8e4ceb2dc7fdac82',1,'cgroup_set_value_string(struct cgroup_controller *controller, const char *name, const char *value): wrapper.c'],['../group__group__groups.html#ga938febc02b59cbeb8e4ceb2dc7fdac82',1,'cgroup_set_value_string(struct cgroup_controller *controller, const char *name, const char *value): wrapper.c']]], + ['cgroup_5fset_5fvalue_5fuint64_113',['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): wrapper.c'],['../group__group__groups.html#gade01aa1fe30ccc968af9fe8a3bc821e5',1,'cgroup_set_value_uint64(struct cgroup_controller *controller, const char *name, u_int64_t value): wrapper.c']]], + ['cgroup_5fsetup_5fmode_114',['cgroup_setup_mode',['../group__group__groups.html#gaebf0c15818fa8201b8a458f3e3e044da',1,'cgroup_setup_mode(void): api.c'],['../group__group__groups.html#gaebf0c15818fa8201b8a458f3e3e044da',1,'cgroup_setup_mode(void): api.c']]], + ['cgroup_5fstat_115',['cgroup_stat',['../structcgroup__stat.html',1,'']]], + ['cgroup_5fstrerror_116',['cgroup_strerror',['../group__group__errors.html#ga7ee3be57533b25d597a2bfd19819307a',1,'cgroup_strerror(int code): api.c'],['../group__group__errors.html#ga7ee3be57533b25d597a2bfd19819307a',1,'cgroup_strerror(int code): api.c']]], + ['cgroup_5fstring_5flist_117',['cgroup_string_list',['../structcgroup__string__list.html',1,'']]], + ['cgroup_5fsystemd_5fopts_118',['cgroup_systemd_opts',['../structcgroup__systemd__opts.html',1,'']]], + ['cgroup_5fsystemd_5fscope_5fopts_119',['cgroup_systemd_scope_opts',['../structcgroup__systemd__scope__opts.html',1,'']]], + ['cgroup_5ftemplates_5fcache_5fset_5fsource_5ffiles_120',['cgroup_templates_cache_set_source_files',['../group__group__config.html#gacb09024dc469a1a1ff8cdebd8d0ab422',1,'cgroup_templates_cache_set_source_files(struct cgroup_string_list *tmpl_files): config.c'],['../group__group__config.html#gacb09024dc469a1a1ff8cdebd8d0ab422',1,'cgroup_templates_cache_set_source_files(struct cgroup_string_list *tmpl_files): config.c']]], + ['cgroup_5ftree_5fhandle_121',['cgroup_tree_handle',['../structcgroup__tree__handle.html',1,'']]], + ['cgroup_5funload_5fcgroups_122',['cgroup_unload_cgroups',['../group__group__config.html#ga85b285712354faca495193075035938d',1,'cgroup_unload_cgroups(void): config.c'],['../group__group__config.html#ga85b285712354faca495193075035938d',1,'cgroup_unload_cgroups(void): config.c']]], + ['cgroup_5fwalk_5ftree_5fbegin_123',['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): 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): api.c']]], + ['cgroup_5fwalk_5ftree_5fend_124',['cgroup_walk_tree_end',['../group__group__iterators.html#ga09a70990837a58e506a264f8c50d4cde',1,'cgroup_walk_tree_end(void **handle): api.c'],['../group__group__iterators.html#ga09a70990837a58e506a264f8c50d4cde',1,'cgroup_walk_tree_end(void **handle): api.c']]], + ['cgroup_5fwalk_5ftree_5fnext_125',['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): api.c'],['../group__group__iterators.html#ga527f5499b0aa04d325074435baebdff1',1,'cgroup_walk_tree_next(int depth, void **handle, struct cgroup_file_info *info, int base_level): api.c']]], + ['cgroup_5fwalk_5ftree_5fset_5fflags_126',['cgroup_walk_tree_set_flags',['../group__group__iterators.html#ga645ec7a6206dffb32667e7a0e148edc8',1,'cgroup_walk_tree_set_flags(void **handle, int flags): api.c'],['../group__group__iterators.html#ga645ec7a6206dffb32667e7a0e148edc8',1,'cgroup_walk_tree_set_flags(void **handle, int flags): api.c']]], + ['cgroup_5fwalk_5ftype_127',['cgroup_walk_type',['../group__group__iterators.html#ga29a572cbc0c07e2b02dfa0f1ac0067d3',1,'iterators.h']]], + ['cgroup_5fwalk_5ftype_5fpost_5fdir_128',['CGROUP_WALK_TYPE_POST_DIR',['../group__group__iterators.html#gga29a572cbc0c07e2b02dfa0f1ac0067d3abf3c31227768960bd6622d2562aae3e1',1,'iterators.h']]], + ['cgroup_5fwalk_5ftype_5fpre_5fdir_129',['CGROUP_WALK_TYPE_PRE_DIR',['../group__group__iterators.html#gga29a572cbc0c07e2b02dfa0f1ac0067d3af865296e6a0e55cff574fbb132b9f913',1,'iterators.h']]], + ['cgroupcompareignoreruletest_130',['CgroupCompareIgnoreRuleTest',['../classCgroupCompareIgnoreRuleTest.html',1,'']]], + ['cgroupcreatecgrouptest_131',['CgroupCreateCgroupTest',['../classCgroupCreateCgroupTest.html',1,'']]], + ['cgrouperror_132',['CgroupError',['../classftests_1_1cgroup_1_1CgroupError.html',1,'ftests::cgroup']]], + ['cgroupgetcgrouptest_133',['CgroupGetCgroupTest',['../classCgroupGetCgroupTest.html',1,'']]], + ['cgroupmount_134',['CgroupMount',['../classftests_1_1cgroup_1_1CgroupMount.html',1,'ftests::cgroup']]], + ['cgroupprocessv1mnttest_135',['CgroupProcessV1MntTest',['../classCgroupProcessV1MntTest.html',1,'']]], + ['cgroupprocessv2mnttest_136',['CgroupProcessV2MntTest',['../classCgroupProcessV2MntTest.html',1,'']]], + ['cgroupv2controllerenabled_137',['CgroupV2ControllerEnabled',['../classCgroupV2ControllerEnabled.html',1,'']]], + ['cgroupversion_138',['CgroupVersion',['../classftests_1_1cgroup_1_1CgroupVersion.html',1,'ftests::cgroup']]], + ['cgsetparserflagtest_139',['CgsetParseRFlagTest',['../classCgsetParseRFlagTest.html',1,'']]], + ['changes_20restart_20the_20process_140',['7. If any problems were found up to this point that resulted in code changes, restart the process',['../md_doc_2internal_2release-github.html#autotoc_md15',1,'']]], + ['checksum_20for_20the_20release_20tarball_141',['13. Generate a checksum for the release tarball',['../md_doc_2internal_2release-github.html#autotoc_md21',1,'']]], + ['checksum_20using_20the_20maintainer_20s_20key_142',['14. GPG sign the release tarball and checksum using the maintainer's key',['../md_doc_2internal_2release-github.html#autotoc_md22',1,'']]], + ['child_20hierarchy_20via_20libcgroup_20command_20line_143',['Creating a Systemd Scope and Child Hierarchy via Libcgroup Command Line',['../md_samples_2cmdline_2systemd-with-idle-process.html#autotoc_md26',1,'']]], + ['chownchmodtaskstest_144',['ChownChmodTasksTest',['../classChownChmodTasksTest.html',1,'']]], + ['code_20changes_20restart_20the_20process_145',['7. If any problems were found up to this point that resulted in code changes, restart the process',['../md_doc_2internal_2release-github.html#autotoc_md15',1,'']]], + ['code_20using_20existing_20tests_146',['Test Your Code Using Existing Tests',['../md_CONTRIBUTING.html#autotoc_md1',1,'']]], + ['command_20line_147',['Creating a Systemd Scope and Child Hierarchy via Libcgroup Command Line',['../md_samples_2cmdline_2systemd-with-idle-process.html#autotoc_md26',1,'']]], + ['commit_20the_20version_20number_20in_20configure_20ac_20ac_5finit_20macro_20and_20library_20version_20macros_148',['9. Update and commit the version number in configure.ac AC_INIT(...) macro and LIBRARY version macros',['../md_doc_2internal_2release-github.html#autotoc_md17',1,'']]], + ['community_149',['Interacting with the Community',['../md_CONTRIBUTING.html#autotoc_md0',1,'']]], + ['config_150',['Config',['../classftests_1_1config_1_1Config.html',1,'ftests::config']]], + ['configerror_151',['ConfigError',['../classftests_1_1config_1_1ConfigError.html',1,'ftests::config']]], + ['configparser_152',['configparser',['../classftests_1_1cgroup_1_1Cgroup.html#ad02a62b22751f057e6befba23b820e8a',1,'ftests::cgroup::Cgroup']]], + ['configuration_153',['5. Configuration',['../group__group__config.html',1,'']]], + ['configure_20ac_20ac_5finit_20macro_20and_20library_20version_20macros_154',['9. Update and commit the version number in configure.ac AC_INIT(...) macro and LIBRARY version macros',['../md_doc_2internal_2release-github.html#autotoc_md17',1,'']]], + ['container_155',['Container',['../classftests_1_1container_1_1Container.html',1,'ftests::container']]], + ['containererror_156',['ContainerError',['../classftests_1_1container_1_1ContainerError.html',1,'ftests::container']]], + ['contribute_20to_20the_20libcgroup_20project_157',['How to Contribute to the libcgroup Project',['../md_CONTRIBUTING.html',1,'']]], + ['control_5fvalue_158',['control_value',['../structcontrol__value.html',1,'']]], + ['controller_159',['Controller',['../classftests_1_1controller_1_1Controller.html',1,'ftests::controller']]], + ['controller_5fdata_160',['controller_data',['../structcontroller__data.html',1,'']]], + ['correct_161',['4. Verify that the packaging is correct',['../md_doc_2internal_2release-github.html#autotoc_md12',1,'']]], + ['coverity_162',['5. Verify that there are no outstanding defects from Coverity',['../md_doc_2internal_2release-github.html#autotoc_md13',1,'']]], + ['create_20a_20new_20github_20release_20using_20the_20associated_20tag_20and_20upload_20the_20following_20files_163',['16. Create a new GitHub release using the associated tag and upload the following files',['../md_doc_2internal_2release-github.html#autotoc_md24',1,'']]], + ['create_20new_20release_20x_20y_20branch_164',['8. If this is a new major/minor release, create new 'release-X.Y' branch',['../md_doc_2internal_2release-github.html#autotoc_md16',1,'']]], + ['creating_20a_20systemd_20scope_20and_20child_20hierarchy_20via_20libcgroup_20command_20line_165',['Creating a Systemd Scope and Child Hierarchy via Libcgroup Command Line',['../md_samples_2cmdline_2systemd-with-idle-process.html#autotoc_md26',1,'']]] ]; diff --git a/search/classes_2.js b/search/classes_2.js index 0bafc591..87e447f5 100644 --- a/search/classes_2.js +++ b/search/classes_2.js @@ -2,40 +2,41 @@ var searchData= [ ['cg_5fmount_5fpoint_0',['cg_mount_point',['../structcg__mount__point.html',1,'']]], ['cg_5fmount_5ftable_5fs_1',['cg_mount_table_s',['../structcg__mount__table__s.html',1,'']]], - ['cgroup_2',['cgroup',['../classftests_1_1cgroup_1_1Cgroup.html',1,'ftests.cgroup.Cgroup'],['../structcgroup.html',1,'cgroup']]], - ['cgroup_5fabstraction_5fmap_3',['cgroup_abstraction_map',['../structcgroup__abstraction__map.html',1,'']]], - ['cgroup_5fcontroller_4',['cgroup_controller',['../structcgroup__controller.html',1,'']]], - ['cgroup_5fdictionary_5',['cgroup_dictionary',['../structcgroup__dictionary.html',1,'']]], - ['cgroup_5fdictionary_5fitem_6',['cgroup_dictionary_item',['../structcgroup__dictionary__item.html',1,'']]], - ['cgroup_5fdictionary_5fiterator_7',['cgroup_dictionary_iterator',['../structcgroup__dictionary__iterator.html',1,'']]], - ['cgroup_5ffile_5finfo_8',['cgroup_file_info',['../structcgroup__file__info.html',1,'']]], - ['cgroup_5fgroup_5fspec_9',['cgroup_group_spec',['../structcgroup__group__spec.html',1,'']]], - ['cgroup_5finfo_10',['cgroup_info',['../structcgroup__info.html',1,'']]], - ['cgroup_5fmount_5fpoint_11',['cgroup_mount_point',['../structcgroup__mount__point.html',1,'']]], - ['cgroup_5frule_12',['cgroup_rule',['../structcgroup__rule.html',1,'']]], - ['cgroup_5frule_5flist_13',['cgroup_rule_list',['../structcgroup__rule__list.html',1,'']]], - ['cgroup_5frules_5fdata_14',['cgroup_rules_data',['../structcgroup__rules__data.html',1,'']]], - ['cgroup_5fstat_15',['cgroup_stat',['../structcgroup__stat.html',1,'']]], - ['cgroup_5fstring_5flist_16',['cgroup_string_list',['../structcgroup__string__list.html',1,'']]], - ['cgroup_5fsystemd_5fopts_17',['cgroup_systemd_opts',['../structcgroup__systemd__opts.html',1,'']]], - ['cgroup_5fsystemd_5fscope_5fopts_18',['cgroup_systemd_scope_opts',['../structcgroup__systemd__scope__opts.html',1,'']]], - ['cgroup_5ftree_5fhandle_19',['cgroup_tree_handle',['../structcgroup__tree__handle.html',1,'']]], - ['cgroupcompareignoreruletest_20',['CgroupCompareIgnoreRuleTest',['../classCgroupCompareIgnoreRuleTest.html',1,'']]], - ['cgroupcreatecgrouptest_21',['CgroupCreateCgroupTest',['../classCgroupCreateCgroupTest.html',1,'']]], - ['cgrouperror_22',['CgroupError',['../classftests_1_1cgroup_1_1CgroupError.html',1,'ftests::cgroup']]], - ['cgroupgetcgrouptest_23',['CgroupGetCgroupTest',['../classCgroupGetCgroupTest.html',1,'']]], - ['cgroupmount_24',['CgroupMount',['../classftests_1_1cgroup_1_1CgroupMount.html',1,'ftests::cgroup']]], - ['cgroupprocessv1mnttest_25',['CgroupProcessV1MntTest',['../classCgroupProcessV1MntTest.html',1,'']]], - ['cgroupprocessv2mnttest_26',['CgroupProcessV2MntTest',['../classCgroupProcessV2MntTest.html',1,'']]], - ['cgroupv2controllerenabled_27',['CgroupV2ControllerEnabled',['../classCgroupV2ControllerEnabled.html',1,'']]], - ['cgroupversion_28',['CgroupVersion',['../classftests_1_1cgroup_1_1CgroupVersion.html',1,'ftests::cgroup']]], - ['cgsetparserflagtest_29',['CgsetParseRFlagTest',['../classCgsetParseRFlagTest.html',1,'']]], - ['chownchmodtaskstest_30',['ChownChmodTasksTest',['../classChownChmodTasksTest.html',1,'']]], - ['config_31',['Config',['../classftests_1_1config_1_1Config.html',1,'ftests::config']]], - ['configerror_32',['ConfigError',['../classftests_1_1config_1_1ConfigError.html',1,'ftests::config']]], - ['container_33',['Container',['../classftests_1_1container_1_1Container.html',1,'ftests::container']]], - ['containererror_34',['ContainerError',['../classftests_1_1container_1_1ContainerError.html',1,'ftests::container']]], - ['control_5fvalue_35',['control_value',['../structcontrol__value.html',1,'']]], - ['controller_36',['Controller',['../classftests_1_1controller_1_1Controller.html',1,'ftests::controller']]], - ['controller_5fdata_37',['controller_data',['../structcontroller__data.html',1,'']]] + ['cgroup_2',['Cgroup',['../classftests_1_1cgroup_1_1Cgroup.html',1,'ftests::cgroup']]], + ['cgroup_3',['cgroup',['../structcgroup.html',1,'']]], + ['cgroup_5fabstraction_5fmap_4',['cgroup_abstraction_map',['../structcgroup__abstraction__map.html',1,'']]], + ['cgroup_5fcontroller_5',['cgroup_controller',['../structcgroup__controller.html',1,'']]], + ['cgroup_5fdictionary_6',['cgroup_dictionary',['../structcgroup__dictionary.html',1,'']]], + ['cgroup_5fdictionary_5fitem_7',['cgroup_dictionary_item',['../structcgroup__dictionary__item.html',1,'']]], + ['cgroup_5fdictionary_5fiterator_8',['cgroup_dictionary_iterator',['../structcgroup__dictionary__iterator.html',1,'']]], + ['cgroup_5ffile_5finfo_9',['cgroup_file_info',['../structcgroup__file__info.html',1,'']]], + ['cgroup_5fgroup_5fspec_10',['cgroup_group_spec',['../structcgroup__group__spec.html',1,'']]], + ['cgroup_5finfo_11',['cgroup_info',['../structcgroup__info.html',1,'']]], + ['cgroup_5fmount_5fpoint_12',['cgroup_mount_point',['../structcgroup__mount__point.html',1,'']]], + ['cgroup_5frule_13',['cgroup_rule',['../structcgroup__rule.html',1,'']]], + ['cgroup_5frule_5flist_14',['cgroup_rule_list',['../structcgroup__rule__list.html',1,'']]], + ['cgroup_5frules_5fdata_15',['cgroup_rules_data',['../structcgroup__rules__data.html',1,'']]], + ['cgroup_5fstat_16',['cgroup_stat',['../structcgroup__stat.html',1,'']]], + ['cgroup_5fstring_5flist_17',['cgroup_string_list',['../structcgroup__string__list.html',1,'']]], + ['cgroup_5fsystemd_5fopts_18',['cgroup_systemd_opts',['../structcgroup__systemd__opts.html',1,'']]], + ['cgroup_5fsystemd_5fscope_5fopts_19',['cgroup_systemd_scope_opts',['../structcgroup__systemd__scope__opts.html',1,'']]], + ['cgroup_5ftree_5fhandle_20',['cgroup_tree_handle',['../structcgroup__tree__handle.html',1,'']]], + ['cgroupcompareignoreruletest_21',['CgroupCompareIgnoreRuleTest',['../classCgroupCompareIgnoreRuleTest.html',1,'']]], + ['cgroupcreatecgrouptest_22',['CgroupCreateCgroupTest',['../classCgroupCreateCgroupTest.html',1,'']]], + ['cgrouperror_23',['CgroupError',['../classftests_1_1cgroup_1_1CgroupError.html',1,'ftests::cgroup']]], + ['cgroupgetcgrouptest_24',['CgroupGetCgroupTest',['../classCgroupGetCgroupTest.html',1,'']]], + ['cgroupmount_25',['CgroupMount',['../classftests_1_1cgroup_1_1CgroupMount.html',1,'ftests::cgroup']]], + ['cgroupprocessv1mnttest_26',['CgroupProcessV1MntTest',['../classCgroupProcessV1MntTest.html',1,'']]], + ['cgroupprocessv2mnttest_27',['CgroupProcessV2MntTest',['../classCgroupProcessV2MntTest.html',1,'']]], + ['cgroupv2controllerenabled_28',['CgroupV2ControllerEnabled',['../classCgroupV2ControllerEnabled.html',1,'']]], + ['cgroupversion_29',['CgroupVersion',['../classftests_1_1cgroup_1_1CgroupVersion.html',1,'ftests::cgroup']]], + ['cgsetparserflagtest_30',['CgsetParseRFlagTest',['../classCgsetParseRFlagTest.html',1,'']]], + ['chownchmodtaskstest_31',['ChownChmodTasksTest',['../classChownChmodTasksTest.html',1,'']]], + ['config_32',['Config',['../classftests_1_1config_1_1Config.html',1,'ftests::config']]], + ['configerror_33',['ConfigError',['../classftests_1_1config_1_1ConfigError.html',1,'ftests::config']]], + ['container_34',['Container',['../classftests_1_1container_1_1Container.html',1,'ftests::container']]], + ['containererror_35',['ContainerError',['../classftests_1_1container_1_1ContainerError.html',1,'ftests::container']]], + ['control_5fvalue_36',['control_value',['../structcontrol__value.html',1,'']]], + ['controller_37',['Controller',['../classftests_1_1controller_1_1Controller.html',1,'ftests::controller']]], + ['controller_5fdata_38',['controller_data',['../structcontroller__data.html',1,'']]] ]; diff --git a/search/functions_0.js b/search/functions_0.js index 62ac919f..1b30d688 100644 --- a/search/functions_0.js +++ b/search/functions_0.js @@ -16,7 +16,7 @@ var searchData= ['cgroup_5fchange_5fcgroup_5fpath_13',['cgroup_change_cgroup_path',['../group__group__tasks.html#ga2d4677baef780c003fc6fba6b5dc78f2',1,'cgroup_change_cgroup_path(const char *path, pid_t pid, const char *const controllers[]): api.c'],['../group__group__tasks.html#ga2d4677baef780c003fc6fba6b5dc78f2',1,'cgroup_change_cgroup_path(const char *dest, pid_t pid, const char *const controllers[]): api.c']]], ['cgroup_5fchange_5fcgroup_5fuid_5fgid_14',['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): api.c'],['../group__group__tasks.html#ga5eab78a922dbacd368360f03c70146be',1,'cgroup_change_cgroup_uid_gid(uid_t uid, gid_t gid, pid_t pid): api.c']]], ['cgroup_5fchange_5fcgroup_5fuid_5fgid_5fflags_15',['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): 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): api.c']]], - ['cgroup_5fcompare_5fcgroup_16',['cgroup_compare_cgroup',['../group__group__groups.html#gaf066e538ebf4aa1f32a654f302a8c353',1,'cgroup_compare_cgroup(struct cgroup *cgroup_a, struct cgroup *cgroup_b): wrapper.c'],['../group__group__groups.html#gaf066e538ebf4aa1f32a654f302a8c353',1,'cgroup_compare_cgroup(struct cgroup *cgrp_a, struct cgroup *cgrp_b): wrapper.c']]], + ['cgroup_5fcompare_5fcgroup_16',['cgroup_compare_cgroup',['../group__group__groups.html#gaf066e538ebf4aa1f32a654f302a8c353',1,'cgroup_compare_cgroup(struct cgroup *cgrp_a, struct cgroup *cgrp_b): wrapper.c'],['../group__group__groups.html#gaf066e538ebf4aa1f32a654f302a8c353',1,'cgroup_compare_cgroup(struct cgroup *cgroup_a, struct cgroup *cgroup_b): wrapper.c']]], ['cgroup_5fcompare_5fcontrollers_17',['cgroup_compare_controllers',['../group__group__groups.html#gab1725c50c49cec4b0bdad1f26b150ca7',1,'cgroup_compare_controllers(struct cgroup_controller *cgca, struct cgroup_controller *cgcb): wrapper.c'],['../group__group__groups.html#gab1725c50c49cec4b0bdad1f26b150ca7',1,'cgroup_compare_controllers(struct cgroup_controller *cgca, struct cgroup_controller *cgcb): wrapper.c']]], ['cgroup_5fconfig_5fcreate_5ftemplate_5fgroup_18',['cgroup_config_create_template_group',['../group__group__config.html#ga37d49cceb927c44292e3137bceeeb5eb',1,'cgroup_config_create_template_group(struct cgroup *cgrp, char *template_name, int flags): config.c'],['../group__group__config.html#ga37d49cceb927c44292e3137bceeeb5eb',1,'cgroup_config_create_template_group(struct cgroup *cgroup, char *template_name, int flags): config.c']]], ['cgroup_5fconfig_5fload_5fconfig_19',['cgroup_config_load_config',['../group__group__config.html#ga8adfaca013333acf922a167f55b84140',1,'cgroup_config_load_config(const char *pathname): config.c'],['../group__group__config.html#ga8adfaca013333acf922a167f55b84140',1,'cgroup_config_load_config(const char *pathname): config.c']]], @@ -69,7 +69,7 @@ var searchData= ['cgroup_5fnew_5fcgroup_66',['cgroup_new_cgroup',['../group__group__groups.html#gad34c82ead174988d418f3dcb003aaca7',1,'cgroup_new_cgroup(const char *name): wrapper.c'],['../group__group__groups.html#gad34c82ead174988d418f3dcb003aaca7',1,'cgroup_new_cgroup(const char *name): wrapper.c']]], ['cgroup_5fparse_5flog_5flevel_5fstr_67',['cgroup_parse_log_level_str',['../group__group__log.html#gaa364a06aee0e99228a1e6a26b25a9794',1,'cgroup_parse_log_level_str(const char *levelstr): log.c'],['../group__group__log.html#gaa364a06aee0e99228a1e6a26b25a9794',1,'cgroup_parse_log_level_str(const char *levelstr): log.c']]], ['cgroup_5fprint_5frules_5fconfig_68',['cgroup_print_rules_config',['../group__group__tasks.html#gac4e3f29cfbdc3d77f08c9fe60857274a',1,'cgroup_print_rules_config(FILE *fp): api.c'],['../group__group__tasks.html#gac4e3f29cfbdc3d77f08c9fe60857274a',1,'cgroup_print_rules_config(FILE *fp): api.c']]], - ['cgroup_5fread_5fstats_5fbegin_69',['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 *cgrp_stat): api.c'],['../group__group__iterators.html#ga1138e47f124f0f634586db5e0c4ae5de',1,'cgroup_read_stats_begin(const char *controller, const char *path, void **handle, struct cgroup_stat *stat): api.c']]], + ['cgroup_5fread_5fstats_5fbegin_69',['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): api.c'],['../group__group__iterators.html#ga1138e47f124f0f634586db5e0c4ae5de',1,'cgroup_read_stats_begin(const char *controller, const char *path, void **handle, struct cgroup_stat *cgrp_stat): api.c']]], ['cgroup_5fread_5fstats_5fend_70',['cgroup_read_stats_end',['../group__group__iterators.html#gaba386d9db6cadc6ad85c2552f63447bb',1,'cgroup_read_stats_end(void **handle): api.c'],['../group__group__iterators.html#gaba386d9db6cadc6ad85c2552f63447bb',1,'cgroup_read_stats_end(void **handle): api.c']]], ['cgroup_5fread_5fstats_5fnext_71',['cgroup_read_stats_next',['../group__group__iterators.html#gaf95587508fc15d74fd5ed0df58024be7',1,'cgroup_read_stats_next(void **handle, struct cgroup_stat *stat): api.c'],['../group__group__iterators.html#gaf95587508fc15d74fd5ed0df58024be7',1,'cgroup_read_stats_next(void **handle, struct cgroup_stat *cgrp_stat): api.c']]], ['cgroup_5fread_5fvalue_5fbegin_72',['cgroup_read_value_begin',['../group__group__iterators.html#ga9378ee0f1f6e65900df8e25b3d7ce236',1,'cgroup_read_value_begin(const char *const controller, const char *path, const char *const name, void **handle, char *buffer, int max): api.c'],['../group__group__iterators.html#ga9378ee0f1f6e65900df8e25b3d7ce236',1,'cgroup_read_value_begin(const char *const controller, const char *path, const char *const name, void **handle, char *buffer, int max): api.c']]], diff --git a/search/functions_3.js b/search/functions_3.js index 30ee4c85..b158ff86 100644 --- a/search/functions_3.js +++ b/search/functions_3.js @@ -2,5 +2,5 @@ var searchData= [ ['set_0',['set',['../classftests_1_1cgroup_1_1Cgroup.html#aafa420c27460164b65f904ec531ae2b1',1,'ftests::cgroup::Cgroup']]], ['set_5fand_5fvalidate_1',['set_and_validate',['../classftests_1_1cgroup_1_1Cgroup.html#a6e776be252ad6a2fa0609d48ce71abd8',1,'ftests::cgroup::Cgroup']]], - ['setup_2',['setup',['../classBuildPathV1Test.html#ae2d0708d4c36d3f8d1e24b311afe8fc3',1,'BuildPathV1Test::SetUp()'],['../classBuildTasksProcPathTest.html#aba31e09a4df0a3cdb94d81985f2e86b7',1,'BuildTasksProcPathTest::SetUp()']]] + ['setup_2',['SetUp',['../classBuildPathV1Test.html#ae2d0708d4c36d3f8d1e24b311afe8fc3',1,'BuildPathV1Test::SetUp()'],['../classBuildTasksProcPathTest.html#aba31e09a4df0a3cdb94d81985f2e86b7',1,'BuildTasksProcPathTest::SetUp()']]] ]; diff --git a/search/pages_5.js b/search/pages_5.js index d357b9f0..2d946f3a 100644 --- a/search/pages_5.js +++ b/search/pages_5.js @@ -1,5 +1,6 @@ var searchData= [ - ['process_0',['process',['../md_samples_2cmdline_2systemd-with-idle-process.html',1,'systemd-with-idle-process'],['../md_doc_2internal_2release-github.html',1,'The libcgroup Release Process'],['../md_SECURITY.html',1,'The libcgroup Security Vulnerability Handling Process']]], - ['project_1',['How to Contribute to the libcgroup Project',['../md_CONTRIBUTING.html',1,'']]] + ['process_0',['Process',['../md_doc_2internal_2release-github.html',1,'The libcgroup Release Process'],['../md_SECURITY.html',1,'The libcgroup Security Vulnerability Handling Process']]], + ['process_1',['systemd-with-idle-process',['../md_samples_2cmdline_2systemd-with-idle-process.html',1,'']]], + ['project_2',['How to Contribute to the libcgroup Project',['../md_CONTRIBUTING.html',1,'']]] ]; diff --git a/search/pages_6.js b/search/pages_6.js index b40e5f05..ffa1e01c 100644 --- a/search/pages_6.js +++ b/search/pages_6.js @@ -1,5 +1,5 @@ var searchData= [ - ['readme_0',['readme',['../md_README.html',1,'README'],['../md_tests_2README.html',1,'README']]], + ['readme_0',['README',['../md_README.html',1,'README'],['../md_tests_2README.html',1,'README']]], ['release_20process_1',['The libcgroup Release Process',['../md_doc_2internal_2release-github.html',1,'']]] ]; diff --git a/search/pages_8.js b/search/pages_8.js index ce5154d5..c1d396ce 100644 --- a/search/pages_8.js +++ b/search/pages_8.js @@ -5,5 +5,6 @@ var searchData= ['the_20libcgroup_20release_20process_2',['The libcgroup Release Process',['../md_doc_2internal_2release-github.html',1,'']]], ['the_20libcgroup_20security_20vulnerability_20handling_20process_3',['The libcgroup Security Vulnerability Handling Process',['../md_SECURITY.html',1,'']]], ['to_20contribute_20to_20the_20libcgroup_20project_4',['How to Contribute to the libcgroup Project',['../md_CONTRIBUTING.html',1,'']]], - ['todo_20list_5',['Todo List',['../todo.html',1,'']]] + ['to_20the_20libcgroup_20project_5',['How to Contribute to the libcgroup Project',['../md_CONTRIBUTING.html',1,'']]], + ['todo_20list_6',['Todo List',['../todo.html',1,'']]] ]; diff --git a/search/search.js b/search/search.js index 6fd40c67..666af01e 100644 --- a/search/search.js +++ b/search/search.js @@ -22,58 +22,9 @@ @licend The above is the entire license notice for the JavaScript code in this file */ -function convertToId(search) -{ - var result = ''; - for (i=0;i document.getElementById("MSearchField"); + this.DOMSearchSelect = () => document.getElementById("MSearchSelect"); + this.DOMSearchSelectWindow = () => document.getElementById("MSearchSelectWindow"); + this.DOMPopupSearchResults = () => document.getElementById("MSearchResults"); + this.DOMPopupSearchResultsWindow = () => document.getElementById("MSearchResultsWindow"); + this.DOMSearchClose = () => document.getElementById("MSearchClose"); + this.DOMSearchBox = () => document.getElementById("MSearchBox"); // ------------ Event Handlers // Called when focus is added or removed from the search field. - this.OnSearchFieldFocus = function(isActive) - { + this.OnSearchFieldFocus = function(isActive) { this.Activate(isActive); } - this.OnSearchSelectShow = function() - { - var searchSelectWindow = this.DOMSearchSelectWindow(); - var searchField = this.DOMSearchSelect(); + this.OnSearchSelectShow = function() { + const searchSelectWindow = this.DOMSearchSelectWindow(); + const searchField = this.DOMSearchSelect(); - var left = getXPos(searchField); - var top = getYPos(searchField); - top += searchField.offsetHeight; + const left = getXPos(searchField); + const top = getYPos(searchField) + searchField.offsetHeight; // show search selection popup searchSelectWindow.style.display='block'; @@ -146,55 +102,43 @@ function SearchBox(name, resultsPath, extension) searchSelectWindow.style.top = top + 'px'; // stop selection hide timer - if (this.hideTimeout) - { + if (this.hideTimeout) { clearTimeout(this.hideTimeout); this.hideTimeout=0; } return false; // to avoid "image drag" default event } - this.OnSearchSelectHide = function() - { + this.OnSearchSelectHide = function() { this.hideTimeout = setTimeout(this.CloseSelectionWindow.bind(this), this.closeSelectionTimeout); } // Called when the content of the search field is changed. - this.OnSearchFieldChange = function(evt) - { - if (this.keyTimeout) // kill running timer - { + 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) - { + const 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 do a search - { + const 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.searchIndex0) // Up - { + } else if (e.keyCode==38 && this.searchIndex>0) { // Up this.searchIndex--; this.OnSelectItem(this.searchIndex); - } - else if (e.keyCode==13 || e.keyCode==27) - { + } else if (e.keyCode==13 || e.keyCode==27) { e.stopPropagation(); this.OnSelectItem(this.searchIndex); this.CloseSelectionWindow(); @@ -301,82 +239,75 @@ function SearchBox(name, resultsPath, extension) // --------- Actions // Closes the results window. - this.CloseResultsWindow = function() - { + this.CloseResultsWindow = function() { this.DOMPopupSearchResultsWindow().style.display = 'none'; this.DOMSearchClose().style.display = 'none'; this.Activate(false); } - this.CloseSelectionWindow = function() - { + this.CloseSelectionWindow = function() { this.DOMSearchSelectWindow().style.display = 'none'; } // Performs a search. - this.Search = function() - { + this.Search = function() { this.keyTimeout = 0; // strip leading whitespace - var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + const 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 - { + const code = searchValue.toLowerCase().charCodeAt(0); + let idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) { // surrogate pair idxChar = searchValue.substr(0, 2); } - var jsFile; - - var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) - { - var hexCode=idx.toString(16); - jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + let jsFile; + let idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) { + const hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; } - var loadJS = function(url, impl, loc){ - var scriptTag = document.createElement('script'); + const loadJS = function(url, impl, loc) { + const scriptTag = document.createElement('script'); scriptTag.src = url; scriptTag.onload = impl; scriptTag.onreadystatechange = impl; loc.appendChild(scriptTag); } - var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - var domSearchBox = this.DOMSearchBox(); - var domPopupSearchResults = this.DOMPopupSearchResults(); - var domSearchClose = this.DOMSearchClose(); - var resultsPath = this.resultsPath; + const domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + const domSearchBox = this.DOMSearchBox(); + const domPopupSearchResults = this.DOMPopupSearchResults(); + const domSearchClose = this.DOMSearchClose(); + const resultsPath = this.resultsPath; - var handleResults = function() { + const handleResults = function() { document.getElementById("Loading").style.display="none"; if (typeof searchData !== 'undefined') { createResults(resultsPath); document.getElementById("NoMatches").style.display="none"; } - + if (idx!=-1) { searchResults.Search(searchValue); } else { // no file with search results => force empty search results searchResults.Search('===='); } - if (domPopupSearchResultsWindow.style.display!='block') - { + if (domPopupSearchResultsWindow.style.display!='block') { domSearchClose.style.display = 'inline-block'; - var left = getXPos(domSearchBox) + 150; - var top = getYPos(domSearchBox) + 20; + let left = getXPos(domSearchBox) + 150; + let top = getYPos(domSearchBox) + 20; domPopupSearchResultsWindow.style.display = 'block'; left -= domPopupSearchResults.offsetWidth; - var maxWidth = document.body.clientWidth; - var maxHeight = document.body.clientHeight; - var width = 300; + const maxWidth = document.body.clientWidth; + const maxHeight = document.body.clientHeight; + let width = 300; if (left<10) left=10; if (width+left+8>maxWidth) width=maxWidth-left-8; - var height = 400; + let height = 400; if (height+top+8>maxHeight) height=maxHeight-top-8; domPopupSearchResultsWindow.style.top = top + 'px'; domPopupSearchResultsWindow.style.left = left + 'px'; @@ -398,17 +329,13 @@ function SearchBox(name, resultsPath, extension) // Activates or deactivates the search panel, resetting things to // their default values if necessary. - this.Activate = function(isActive) - { + this.Activate = function(isActive) { if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) - { + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) { this.DOMSearchBox().className = 'MSearchBoxActive'; this.searchActive = true; - } - else if (!isActive) // directly remove the panel - { + } else if (!isActive) { // directly remove the panel this.DOMSearchBox().className = 'MSearchBoxInactive'; this.searchActive = false; this.lastSearchValue = '' @@ -421,409 +348,333 @@ function SearchBox(name, resultsPath, extension) // ----------------------------------------------------------------------- // The class that handles everything on the search results page. -function SearchResults(name) -{ - // The number of matches from the last run of . - 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; - } +function SearchResults() { + + function convertToId(search) { + let result = ''; + for (let i=0;i. + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; - if (element && element!=parentElement) - { - element = element.nextSibling; - } - } + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) { + const parentElement = document.getElementById(id); + let element = parentElement.firstChild; + + while (element && element!=parentElement) { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') { + return element; } - } - this.Toggle = function(id) - { - var element = this.FindChildElement(id); - if (element) - { - if (element.style.display == 'block') - { - element.style.display = 'none'; + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) { + element = element.firstChild; + } else if (element.nextSibling) { + element = element.nextSibling; + } else { + do { + element = element.parentNode; } - else - { - element.style.display = 'block'; + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) { + element = element.nextSibling; } } } + } - // 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.Toggle = function(id) { + const element = this.FindChildElement(id); + if (element) { + if (element.style.display == 'block') { + element.style.display = 'none'; + } else { + element.style.display = 'block'; } - 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; + // 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); + + const resultRows = document.getElementsByTagName("div"); + let matches = 0; + + let i = 0; + while (i < resultRows.length) { + const row = resultRows.item(i); + if (row.className == "SRResult") { + let 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'; } - focusItem=null; - index++; } - return focusItem; + 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; + } - 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 the first item with index index or higher that is visible + this.NavNext = function(index) { + let focusItem; + for (;;) { + const 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) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; } - return focusItem; + 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; + 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 } - return this.lastKey!=0; + } 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++; + this.Nav = function(evt,itemIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + const newIndex = itemIndex-1; + let focusItem = this.NavPrev(newIndex); + if (focusItem) { + let child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') { // children visible + let n=0; + let tmpElem; + for (;;) { // 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 - { - 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 - { - e.stopPropagation(); - searchBox.CloseResultsWindow(); + if (focusItem) { + focusItem.focus(); + } else { // return focus to search field document.getElementById("MSearchField").focus(); } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; + } else if (this.lastKey==40) { // Down + const newIndex = itemIndex+1; + let focusItem; + const item = document.getElementById('Item'+itemIndex); + const 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 + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } else if (this.lastKey==37) { // Left + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + 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(); - } + this.NavChild = function(evt,itemIndex,childIndex) { + const 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) { + const 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==40) { // Down + const newIndex = childIndex+1; + let elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) { // last child, jump to parent next parent + elem = this.NavNext(itemIndex+1); } - else if (this.lastKey==27) // Escape - { - e.stopPropagation(); - searchBox.CloseResultsWindow(); - document.getElementById("MSearchField").focus(); + if (elem) { + elem.focus(); } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + 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 createResults(resultsPath) { -function setClassAttr(elem,attr) -{ - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); -} + 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(resultsPath) -{ - var results = document.getElementById("SRResults"); + const results = document.getElementById("SRResults"); results.innerHTML = ''; - for (var e=0; e { + const id = elem[0]; + const srResult = document.createElement('div'); srResult.setAttribute('id','SR_'+id); setClassAttr(srResult,'SRResult'); - var srEntry = document.createElement('div'); + const srEntry = document.createElement('div'); setClassAttr(srEntry,'SREntry'); - var srLink = document.createElement('a'); - srLink.setAttribute('id','Item'+e); - setKeyActions(srLink,'return searchResults.Nav(event,'+e+')'); + const srLink = document.createElement('a'); + srLink.setAttribute('id','Item'+index); + setKeyActions(srLink,'return searchResults.Nav(event,'+index+')'); setClassAttr(srLink,'SRSymbol'); - srLink.innerHTML = searchData[e][1][0]; + srLink.innerHTML = elem[1][0]; srEntry.appendChild(srLink); - if (searchData[e][1].length==2) // single result - { - srLink.setAttribute('href',resultsPath+searchData[e][1][1][0]); + if (elem[1].length==2) { // single result + srLink.setAttribute('href',resultsPath+elem[1][1][0]); srLink.setAttribute('onclick','searchBox.CloseResultsWindow()'); - if (searchData[e][1][1][1]) - { + if (elem[1][1][1]) { srLink.setAttribute('target','_parent'); - } - else - { + } else { srLink.setAttribute('target','_blank'); } - var srScope = document.createElement('span'); + const srScope = document.createElement('span'); setClassAttr(srScope,'SRScope'); - srScope.innerHTML = searchData[e][1][1][2]; + srScope.innerHTML = elem[1][1][2]; srEntry.appendChild(srScope); - } - else // multiple results - { + } else { // multiple results srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); - var srChildren = document.createElement('div'); + const srChildren = document.createElement('div'); setClassAttr(srChildren,'SRChildren'); - for (var c=0; c - + libcgroup: array_parent_info Struct Reference + + + + @@ -29,23 +33,33 @@
    - + + +
    +
    @@ -93,7 +108,8 @@ struct parent_info **  +
    diff --git a/structarray__unchanged.html b/structarray__unchanged.html index 860fd102..d56b7ed1 100644 --- a/structarray__unchanged.html +++ b/structarray__unchanged.html @@ -3,12 +3,16 @@ - + libcgroup: array_unchanged Struct Reference + + + + @@ -29,23 +33,33 @@
    - + + +
    +
    @@ -93,7 +108,8 @@ struct unchanged_pid * <
    +
    diff --git a/structcg__mount__point.html b/structcg__mount__point.html index 4b825f8c..b0743b1d 100644 --- a/structcg__mount__point.html +++ b/structcg__mount__point.html @@ -3,12 +3,16 @@ - + libcgroup: cg_mount_point Struct Reference + + + + @@ -29,23 +33,33 @@
    - + + +
    +
    @@ -90,7 +105,8 @@ struct cg_mount_point *
    +
    diff --git a/structcg__mount__table__s.html b/structcg__mount__table__s.html index 6ed35335..49573ff7 100644 --- a/structcg__mount__table__s.html +++ b/structcg__mount__table__s.html @@ -3,12 +3,16 @@ - + libcgroup: cg_mount_table_s Struct Reference + + + + @@ -29,23 +33,33 @@
    - + + +
    +
    @@ -77,9 +92,9 @@ $(function() { - + - + @@ -128,7 +143,8 @@ enum cg_version_t 

    Data Fields

    char name [CONTROL_NAMELEN_MAX]
    char name [CONTROL_NAMELEN_MAX]
     
    struct cg_mount_point mount
    struct cg_mount_point mount
     
    int index
    version< + diff --git a/structcgroup.html b/structcgroup.html index 3a1eb817..f0c2629f 100644 --- a/structcgroup.html +++ b/structcgroup.html @@ -3,12 +3,16 @@ - + libcgroup: cgroup Struct Reference + + + + @@ -29,23 +33,33 @@
    - + + +
    +
    @@ -118,7 +133,8 @@ mode_t control_dperm +
    diff --git a/structcgroup__abstraction__map.html b/structcgroup__abstraction__map.html index 0dfe1502..346f4c43 100644 --- a/structcgroup__abstraction__map.html +++ b/structcgroup__abstraction__map.html @@ -3,12 +3,16 @@ - + libcgroup: cgroup_abstraction_map Struct Reference + + + + @@ -29,23 +33,33 @@
    - + + +
    +
    @@ -104,7 +119,8 @@ void * out_dflt +
    diff --git a/structcgroup__controller.html b/structcgroup__controller.html index 08e47ddf..37abc663 100644 --- a/structcgroup__controller.html +++ b/structcgroup__controller.html @@ -3,12 +3,16 @@ - + libcgroup: cgroup_controller Struct Reference + + + + @@ -29,23 +33,33 @@
    - + + +
    +
    @@ -103,7 +118,8 @@ enum cg_version_t version<
    +
    diff --git a/structcgroup__dictionary.html b/structcgroup__dictionary.html index f1e1e297..312e61fb 100644 --- a/structcgroup__dictionary.html +++ b/structcgroup__dictionary.html @@ -3,12 +3,16 @@ - + libcgroup: cgroup_dictionary Struct Reference + + + + @@ -29,23 +33,33 @@
    - + + +
    +
    @@ -97,7 +112,8 @@ int flags
    +
    diff --git a/structcgroup__dictionary__item.html b/structcgroup__dictionary__item.html index 957a888d..ea3b8c7e 100644 --- a/structcgroup__dictionary__item.html +++ b/structcgroup__dictionary__item.html @@ -3,12 +3,16 @@ - + libcgroup: cgroup_dictionary_item Struct Reference + + + + @@ -29,23 +33,33 @@
    - + + +
    +
    @@ -97,7 +112,8 @@ struct cgroup_dictionar
    +
    diff --git a/structcgroup__dictionary__iterator.html b/structcgroup__dictionary__iterator.html index 11713b32..1604d070 100644 --- a/structcgroup__dictionary__iterator.html +++ b/structcgroup__dictionary__iterator.html @@ -3,12 +3,16 @@ - + libcgroup: cgroup_dictionary_iterator Struct Reference + + + + @@ -29,23 +33,33 @@ - + + +
    +
    @@ -91,7 +106,8 @@ struct cgroup_dictionar
    +
    diff --git a/structcgroup__file__info.html b/structcgroup__file__info.html index f09df006..03ad98a1 100644 --- a/structcgroup__file__info.html +++ b/structcgroup__file__info.html @@ -3,12 +3,16 @@ - + libcgroup: cgroup_file_info Struct Reference + + + + @@ -29,23 +33,33 @@ - + + +
    +
    @@ -79,15 +94,15 @@ $(function() { - + - + - + - + - +

    Data Fields

    enum cgroup_file_type type
    enum cgroup_file_type type
     
    const char * path
    const char * path
     
    const char * parent
    const char * parent
     
    const char * full_path
    const char * full_path
     
    short depth
    short depth
     

    Detailed Description

    @@ -174,7 +189,8 @@ Data Fields
    +
    diff --git a/structcgroup__group__spec.html b/structcgroup__group__spec.html index 4e1bc17c..971c5bbc 100644 --- a/structcgroup__group__spec.html +++ b/structcgroup__group__spec.html @@ -3,12 +3,16 @@ - + libcgroup: cgroup_group_spec Struct Reference + + + + @@ -29,23 +33,33 @@ - + + +
    +
    @@ -94,7 +109,8 @@ char * controllers [CG
    +
    diff --git a/structcgroup__info.html b/structcgroup__info.html index 7dcff7d7..47250efa 100644 --- a/structcgroup__info.html +++ b/structcgroup__info.html @@ -3,12 +3,16 @@ - + libcgroup: cgroup_info Struct Reference + + + + @@ -29,23 +33,33 @@ - + + +
    +
    @@ -90,7 +105,8 @@ char cgrp_path [FILENA
    +
    diff --git a/structcgroup__mount__point.html b/structcgroup__mount__point.html index a6762262..75dd31cb 100644 --- a/structcgroup__mount__point.html +++ b/structcgroup__mount__point.html @@ -3,12 +3,16 @@ - + libcgroup: cgroup_mount_point Struct Reference + + + + @@ -29,23 +33,33 @@ - + + +
    +
    @@ -79,9 +94,9 @@ $(function() { - + - +

    Data Fields

    char name [FILENAME_MAX]
    char name [FILENAME_MAX]
     
    char path [FILENAME_MAX]
    char path [FILENAME_MAX]
     

    Detailed Description

    @@ -123,7 +138,8 @@ Data Fields
    +
    diff --git a/structcgroup__rule.html b/structcgroup__rule.html index 6b1e5ab2..a3ecca04 100644 --- a/structcgroup__rule.html +++ b/structcgroup__rule.html @@ -3,12 +3,16 @@ - + libcgroup: cgroup_rule Struct Reference + + + + @@ -29,23 +33,33 @@ - + + +
    +
    @@ -108,7 +123,8 @@ struct cgroup_rule
    +
    diff --git a/structcgroup__rule__list.html b/structcgroup__rule__list.html index 31fd70a6..86f91c60 100644 --- a/structcgroup__rule__list.html +++ b/structcgroup__rule__list.html @@ -3,12 +3,16 @@ - + libcgroup: cgroup_rule_list Struct Reference + + + + @@ -29,23 +33,33 @@ - + + +
    +
    @@ -93,7 +108,8 @@ int len
    +
    diff --git a/structcgroup__rules__data.html b/structcgroup__rules__data.html index c992b45f..bb6a2df1 100644 --- a/structcgroup__rules__data.html +++ b/structcgroup__rules__data.html @@ -3,12 +3,16 @@ - + libcgroup: cgroup_rules_data Struct Reference + + + + @@ -29,23 +33,33 @@ - + + +
    +
    @@ -93,7 +108,8 @@ gid_t gid
    +
    diff --git a/structcgroup__stat.html b/structcgroup__stat.html index 889bc7dd..a91e7f62 100644 --- a/structcgroup__stat.html +++ b/structcgroup__stat.html @@ -3,12 +3,16 @@ - + libcgroup: cgroup_stat Struct Reference + + + + @@ -29,23 +33,33 @@ - + + +
    +
    @@ -94,7 +109,8 @@ char value [ +
    diff --git a/structcgroup__string__list.html b/structcgroup__string__list.html index f21112c7..f63d5c32 100644 --- a/structcgroup__string__list.html +++ b/structcgroup__string__list.html @@ -3,12 +3,16 @@ - + libcgroup: cgroup_string_list Struct Reference + + + + @@ -29,23 +33,33 @@
    - + + +
    +
    @@ -97,7 +112,8 @@ int count
    +
    diff --git a/structcgroup__systemd__opts.html b/structcgroup__systemd__opts.html index c0843122..f0b8ebb4 100644 --- a/structcgroup__systemd__opts.html +++ b/structcgroup__systemd__opts.html @@ -3,12 +3,16 @@ - + libcgroup: cgroup_systemd_opts Struct Reference + + + + @@ -29,23 +33,33 @@ - + + +
    +
    @@ -99,7 +114,8 @@ struct cgroup_systemd_opts
    +
    diff --git a/structcgroup__systemd__scope__opts.html b/structcgroup__systemd__scope__opts.html index c5eba74f..9aecbda1 100644 --- a/structcgroup__systemd__scope__opts.html +++ b/structcgroup__systemd__scope__opts.html @@ -3,12 +3,16 @@ - + libcgroup: cgroup_systemd_scope_opts Struct Reference + + + + @@ -29,23 +33,33 @@ - + + +
    +
    @@ -79,11 +94,11 @@ $(function() { - + - + - +

    Data Fields

    int delegated
    int delegated
     
    enum cgroup_systemd_mode_t mode
    enum cgroup_systemd_mode_t mode
     
    pid_t pid
    pid_t pid
     

    Detailed Description

    @@ -140,7 +155,8 @@ Data Fields
    +
    diff --git a/structcgroup__tree__handle.html b/structcgroup__tree__handle.html index 191f800d..942ec4c3 100644 --- a/structcgroup__tree__handle.html +++ b/structcgroup__tree__handle.html @@ -3,12 +3,16 @@ - + libcgroup: cgroup_tree_handle Struct Reference + + + + @@ -29,23 +33,33 @@ - + + +
    +
    @@ -90,7 +105,8 @@ int flags
    +
    diff --git a/structcontrol__value.html b/structcontrol__value.html index 3f55a6ac..b4c61689 100644 --- a/structcontrol__value.html +++ b/structcontrol__value.html @@ -3,12 +3,16 @@ - + libcgroup: control_value Struct Reference + + + + @@ -29,23 +33,33 @@ - + + +
    +
    @@ -99,7 +114,8 @@ bool dirty
    +
    diff --git a/structcontroller__data.html b/structcontroller__data.html index 64458967..63d2228c 100644 --- a/structcontroller__data.html +++ b/structcontroller__data.html @@ -3,12 +3,16 @@ - + libcgroup: controller_data Struct Reference + + + + @@ -29,23 +33,33 @@ - + + +
    +
    @@ -79,13 +94,13 @@ $(function() { - + - + - + - +

    Data Fields

    char name [FILENAME_MAX]
    char name [FILENAME_MAX]
     
    int hierarchy
    int hierarchy
     
    int num_cgroups
    int num_cgroups
     
    int enabled
    int enabled
     

    Detailed Description

    @@ -157,7 +172,8 @@ Data Fields
    +
    diff --git a/structdeny__list__type.html b/structdeny__list__type.html index c19887a3..51705fa8 100644 --- a/structdeny__list__type.html +++ b/structdeny__list__type.html @@ -3,12 +3,16 @@ - + libcgroup: deny_list_type Struct Reference + + + + @@ -29,23 +33,33 @@ - + + +
    +
    @@ -90,7 +105,8 @@ struct deny_list_type *
    +
    diff --git a/structexample__opts.html b/structexample__opts.html index 702eb5d2..b2413b36 100644 --- a/structexample__opts.html +++ b/structexample__opts.html @@ -3,12 +3,16 @@ - + libcgroup: example_opts Struct Reference + + + + @@ -29,23 +33,33 @@ - + + +
    +
    @@ -96,7 +111,8 @@ bool debug
    +
    diff --git a/structext__cgroup__record.html b/structext__cgroup__record.html index 9cf12d24..0aa6e2ee 100644 --- a/structext__cgroup__record.html +++ b/structext__cgroup__record.html @@ -3,12 +3,16 @@ - + libcgroup: ext_cgroup_record Struct Reference + + + + @@ -29,23 +33,33 @@ - + + +
    +
    @@ -93,7 +108,8 @@ int h_number
    +
    diff --git a/structparent__info.html b/structparent__info.html index 2fd3af09..4c9bd0d8 100644 --- a/structparent__info.html +++ b/structparent__info.html @@ -3,12 +3,16 @@ - + libcgroup: parent_info Struct Reference + + + + @@ -29,23 +33,33 @@ - + + +
    +
    @@ -90,7 +105,8 @@ pid_t pid
    +
    diff --git a/structunchanged__pid.html b/structunchanged__pid.html index 4d838d95..3e097596 100644 --- a/structunchanged__pid.html +++ b/structunchanged__pid.html @@ -3,12 +3,16 @@ - + libcgroup: unchanged_pid Struct Reference + + + + @@ -29,23 +33,33 @@ - + + +
    +
    @@ -90,7 +105,8 @@ int flags
    +
    diff --git a/systemd_8h_source.html b/systemd_8h_source.html index 45b988f1..b66521eb 100644 --- a/systemd_8h_source.html +++ b/systemd_8h_source.html @@ -3,12 +3,16 @@ - + libcgroup: include/libcgroup/systemd.h Source File + + + + @@ -29,26 +33,31 @@ - + + @@ -77,6 +86,7 @@ $(document).ready(function() { init_codefold(0); }); +
    systemd.h
    @@ -172,7 +182,8 @@ $(document).ready(function() { init_codefold(0); });
    + diff --git a/tabs.css b/tabs.css index 71c8a470..7fa4268a 100644 --- a/tabs.css +++ b/tabs.css @@ -1 +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}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.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:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.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:var(--nav-menu-background-color)}.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:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);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:var(--nav-gradient-image);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:var(--nav-text-normal-color) 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:var(--nav-separator-image);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:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) 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 var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-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 var(--nav-menu-foreground-color);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:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);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 var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) 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:var(--nav-gradient-image)}.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:var(--nav-menu-background-color)}} \ No newline at end of file +.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}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.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:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.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:var(--nav-menu-background-color)}.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:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);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:var(--nav-gradient-image);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:var(--nav-text-normal-color) 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:var(--nav-separator-image);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:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) 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 var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-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 var(--nav-menu-foreground-color);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:var(--nav-menu-foreground-color);background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);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 var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) 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:var(--nav-gradient-image)}.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:var(--nav-menu-background-color)}} diff --git a/tasks_8h_source.html b/tasks_8h_source.html index b3512da5..5b7debfb 100644 --- a/tasks_8h_source.html +++ b/tasks_8h_source.html @@ -3,12 +3,16 @@ - + libcgroup: include/libcgroup/tasks.h Source File + + + + @@ -29,26 +33,31 @@ - + + @@ -77,6 +86,7 @@ $(document).ready(function() { init_codefold(0); }); +
    tasks.h
    @@ -158,7 +168,8 @@ $(document).ready(function() { init_codefold(0); });
    + diff --git a/todo.html b/todo.html index 3c12a845..0a8a8ae0 100644 --- a/todo.html +++ b/todo.html @@ -3,12 +3,16 @@ - + libcgroup: Todo List + + + + @@ -29,23 +33,33 @@ - + + +
    +
    Todo List
    @@ -108,7 +123,8 @@ $(function() {
    +
    diff --git a/tools-common_8h_source.html b/tools-common_8h_source.html index 29cad4e1..93ed8a81 100644 --- a/tools-common_8h_source.html +++ b/tools-common_8h_source.html @@ -3,12 +3,16 @@ - + libcgroup: src/tools/tools-common.h Source File + + + + @@ -29,26 +33,31 @@ - + + @@ -77,6 +86,7 @@ $(document).ready(function() { init_codefold(0); }); +
    tools-common.h
    @@ -156,7 +166,8 @@ $(document).ready(function() { init_codefold(0); });
    + diff --git a/tools_8h_source.html b/tools_8h_source.html index d7c5ac80..17344bb3 100644 --- a/tools_8h_source.html +++ b/tools_8h_source.html @@ -3,12 +3,16 @@ - + libcgroup: include/libcgroup/tools.h Source File + + + + @@ -29,26 +33,31 @@ - + + @@ -77,6 +86,7 @@ $(document).ready(function() { init_codefold(0); }); +
    tools.h
    @@ -113,7 +123,8 @@ $(document).ready(function() { init_codefold(0); });
    + diff --git a/topics.html b/topics.html index 9ec701dd..4d1e2de4 100644 --- a/topics.html +++ b/topics.html @@ -3,12 +3,16 @@ - + libcgroup: Topics + + + + @@ -29,24 +33,35 @@ - + + +
    +
    +
    -- 2.47.2