[lxc-devel] [PATCH] lxc_cgroup: convert to using API

Dwight Engen dwight.engen at oracle.com
Wed Aug 21 20:31:37 UTC 2013


On Wed, 21 Aug 2013 14:35:28 -0500
Serge Hallyn <serge.hallyn at ubuntu.com> wrote:

> Signed-off-by: Serge Hallyn <serge.hallyn at ubuntu.com>

Acked-by: Dwight Engen <dwight.engen at oracle.com>

> ---
>  src/lxc/lxc_cgroup.c | 31 ++++++++++++++++++++-----------
>  1 file changed, 20 insertions(+), 11 deletions(-)
> 
> diff --git a/src/lxc/lxc_cgroup.c b/src/lxc/lxc_cgroup.c
> index 094686d..7f6eb63 100644
> --- a/src/lxc/lxc_cgroup.c
> +++ b/src/lxc/lxc_cgroup.c
> @@ -29,6 +29,7 @@
>  #include <lxc/lxc.h>
>  #include <lxc/log.h>
>  
> +#include <lxc/lxccontainer.h>
>  #include "arguments.h"
>  
>  lxc_log_define(lxc_cgroup_ui, lxc_cgroup);
> @@ -64,6 +65,7 @@ Options :\n\
>  int main(int argc, char *argv[])
>  {
>  	char *state_object = NULL, *value = NULL;
> +	struct lxc_container *c;
>  
>  	if (lxc_arguments_parse(&my_args, argc, argv))
>  		return -1;
> @@ -74,29 +76,36 @@ int main(int argc, char *argv[])
>  
>  	state_object = my_args.argv[0];
>  
> -	if ((argc) > 1)
> -		value = my_args.argv[1];
> +	c = lxc_container_new(my_args.name, my_args.lxcpath[0]);
> +	if (!c)
> +		return -1;
> +	if (!c->is_running(c)) {
> +		ERROR("'%s:%s' is not running", my_args.lxcpath[0],
> my_args.name);
> +		lxc_container_put(c);
> +		return -1;
> +	}
>  
> -	if (value) {
> -		if (lxc_cgroup_set(my_args.name, state_object,
> value, my_args.lxcpath[0])) {
> +	if ((my_args.argc) > 1) {
> +		value = my_args.argv[1];
> +		if (!c->set_cgroup_item(c, state_object, value)) {
>  			ERROR("failed to assign '%s' value to '%s'
> for '%s'", value, state_object, my_args.name);
> +			lxc_container_put(c);
>  			return -1;
>  		}
>  	} else {
> -		const unsigned long len = 4096;
> -		int ret;
> +		int len = 4096;
>  		char buffer[len];
> -
> -		ret = lxc_cgroup_get(my_args.name, state_object,
> buffer, len, my_args.lxcpath[0]);
> +		int ret = c->get_cgroup_item(c, state_object,
> buffer, len); if (ret < 0) {
> -			ERROR("failed to retrieve value of '%s' for
> '%s'",
> -			      state_object, my_args.name);
> +			ERROR("failed to retrieve value of '%s' for
> '%s:%s'",
> +			      state_object, my_args.lxcpath[0],
> my_args.name);
> +			lxc_container_put(c);
>  			return -1;
>  		}
> -
>  		printf("%*s", ret, buffer);
>  	}
>  
> +	lxc_container_put(c);
>  	return 0;
>  }





More information about the lxc-devel mailing list