Mercurial > archived > louis > perso > liblxcstats
diff lxcstats.h @ 0:6ce4443e7545
Add the draft of an API to collect statistics on LXC
author | Louis Opter <kalessin@kalessin.fr> |
---|---|
date | Wed, 29 Dec 2010 23:28:14 +0100 |
parents | |
children | 2cb8a6cbe468 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lxcstats.h Wed Dec 29 23:28:14 2010 +0100 @@ -0,0 +1,67 @@ +#ifndef _LXC_STATS_H_ +# define _LXC_STATS_H_ + +# include <stdint.h> + +/** + * Opaque structure used as a context for all liblxcst functions. + */ +typedef struct _lxcst_controller lxcst_handle; + +/** + * This structure contains available statistics on a container. + */ +struct lxcst { + char *name; /*< Name of the container */ + char *cgroup_dir;/*< cgroup directory of the container */ + struct { + uint32_t user; /*< CPU time spent in userland */ + uint32_t system; /*< CPU time spent in kernelland */ + uint64_t *percpu; /*< CPU time per CPU (zero-terminated array or NULL) */ + } cpuacct; +}; + +/** + * This structure contains globals statistics on LXC. + * + * Note: see how lxc-info gets these infos. + */ +struct lxcst_globals { + uint32_t running_containers; + uint32_t stopped_containers; +}; + +/** + * @brief Initialize the library. + * + * @return A pointer to an opaque structure which can be free'd with free + * or NULL on failure with errno set. + * + * @see lxcst_close + */ +lxcst_handle *lxcst_open(void); + +/** + * @brief Close the library. + * + * @param [in] hdl The pointer returned by lxcst_open. + * + * @return 0 on success, -1 if an error occured with errno set. + */ +int lxcst_close(lxcst_handle *hdl); + +/** + * @brief Collect statistic on all containers. + * + * @param [in] hdl The pointer returned by lxcst_handle. + * @param [in] cb A function pointer to a callback which takes a pointer to an + * user context and a pointer to lxcst structure. + * @param [in] ctx A pointer to an user defined variable which will be used as + * an argument to the callback. If the callback returns non zero + * lxcst_span_containers stops and return with -1 with errno set to EINTR. + * + * @return 0 on success, -1 on error with errno set. + */ +int lxcst_span_containers(lxcst_handle *hdl, int (*cb)(void *, const struct lxcst *), void *ctx); + +#endif