Balbir Singh wrote:
> Feature: Provide new libcgroup walk tree API
>
> From: Balbir Singh <[email protected]>
>
> This patch adds the capability to walk cgroups by providing a new API
> called cgroup_walk_tree. The API accepts the controller to walk and the
> order in which the directories and files must be visited. Everytime
> a node is visited, a callback function is invoked that can act or record
> the node being visited.
>
> libcgroup.map has been updated to reflect the same change and the prototype
> is exported in libcgroup.h.
>
> I've also added test cases (tests/walk_test.c). Sample output is show
> Walking post dir
> ---------------
> f -> e, [/cgroup/cpu///a/e/f]
> e -> a, [/cgroup/cpu///a/e]
> f -> a, [/cgroup/cpu///a/f]
> x -> a, [/cgroup/cpu///a/x]
> d -> c, [/cgroup/cpu///a/b/c/d]
> c -> b, [/cgroup/cpu///a/b/c]
> b -> a, [/cgroup/cpu///a/b]
> a -> , [/cgroup/cpu///a]
> default -> , [/cgroup/cpu///default]
> -> , [/cgroup/cpu///]
IMHO the API user is not interested into full path to group
(/cgroup/cpu///a/e/f), but to group name (a/e/f), which can be used in
later calls to the API (like cgroup_new_cgroup()).
> +/*
> + * TODO: Need to decide a better place to put this function.
> + */
> +int cgroup_walk_tree(char *controller, char *base_path, const int depth,
> + enum cgroup_walk_type type, cgroup_walk_callback cb,
> + void *arg)
> +{
> + int ret = 0;
> + dbg("path is %s\n", path);
Use base_path here ^.
> +typedef void *(*cgroup_walk_callback)(const struct cgroup_file_info *info,
> + void *arg);
I am still not convinced that callbacks are the best... I'd rewrite it
to iterator, if I had enough time... which will be after F11 beta,
probably next week :(.
The rest of the patch looks good to me.
------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Libcg-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libcg-devel