cgroups: implement "driver" and "driver_version"

parent 1a8848b3
...@@ -2800,12 +2800,12 @@ static struct cgroup_ops cgfsng_ops = { ...@@ -2800,12 +2800,12 @@ static struct cgroup_ops cgfsng_ops = {
.set = cgfsng_set, .set = cgfsng_set,
.unfreeze = cgfsng_unfreeze, .unfreeze = cgfsng_unfreeze,
.setup_limits = cgfsng_setup_limits, .setup_limits = cgfsng_setup_limits,
.name = "cgroupfs-ng", .driver = "cgfsng",
.version = "1.0.0",
.attach = cgfsng_attach, .attach = cgfsng_attach,
.chown = cgfsng_chown, .chown = cgfsng_chown,
.mount_cgroup = cgfsng_mount, .mount_cgroup = cgfsng_mount,
.nrtasks = cgfsng_nrtasks, .nrtasks = cgfsng_nrtasks,
.driver = CGFSNG,
/* unsupported */ /* unsupported */
.create_legacy = NULL, .create_legacy = NULL,
......
...@@ -39,14 +39,14 @@ extern struct cgroup_ops *cgfsng_ops_init(void); ...@@ -39,14 +39,14 @@ extern struct cgroup_ops *cgfsng_ops_init(void);
__attribute__((constructor)) void cgroup_ops_init(void) __attribute__((constructor)) void cgroup_ops_init(void)
{ {
if (ops) { if (ops) {
INFO("cgroup driver %s", ops->name); INFO("Running with %s in version %s", ops->driver, ops->version);
return; return;
} }
DEBUG("cgroup_init"); DEBUG("cgroup_init");
ops = cgfsng_ops_init(); ops = cgfsng_ops_init();
if (ops) if (ops)
INFO("Initialized cgroup driver %s", ops->name); INFO("Initialized cgroup driver %s", ops->driver);
} }
bool cgroup_init(struct lxc_handler *handler) bool cgroup_init(struct lxc_handler *handler)
...@@ -57,7 +57,7 @@ bool cgroup_init(struct lxc_handler *handler) ...@@ -57,7 +57,7 @@ bool cgroup_init(struct lxc_handler *handler)
} }
if (ops) { if (ops) {
INFO("cgroup driver %s initing for %s", ops->name, handler->name); INFO("cgroup driver %s initing for %s", ops->driver, handler->name);
handler->cgroup_data = ops->init(handler); handler->cgroup_data = ops->init(handler);
} }
...@@ -170,7 +170,7 @@ int cgroup_nrtasks(struct lxc_handler *handler) ...@@ -170,7 +170,7 @@ int cgroup_nrtasks(struct lxc_handler *handler)
if (ops->nrtasks) if (ops->nrtasks)
return ops->nrtasks(handler->cgroup_data); return ops->nrtasks(handler->cgroup_data);
else else
WARN("cgroup driver \"%s\" doesn't implement nrtasks", ops->name); WARN("cgroup driver \"%s\" doesn't implement nrtasks", ops->driver);
} }
return -1; return -1;
...@@ -208,11 +208,6 @@ void cgroup_disconnect(void) ...@@ -208,11 +208,6 @@ void cgroup_disconnect(void)
ops->disconnect(); ops->disconnect();
} }
cgroup_driver_t cgroup_driver(void)
{
return ops->driver;
}
#define INIT_SCOPE "/init.scope" #define INIT_SCOPE "/init.scope"
void prune_init_scope(char *cg) void prune_init_scope(char *cg)
{ {
......
...@@ -39,14 +39,9 @@ typedef enum { ...@@ -39,14 +39,9 @@ typedef enum {
CGROUP_LAYOUT_UNIFIED = 2, CGROUP_LAYOUT_UNIFIED = 2,
} cgroup_layout_t; } cgroup_layout_t;
typedef enum {
CGFS,
CGMANAGER,
CGFSNG,
} cgroup_driver_t;
struct cgroup_ops { struct cgroup_ops {
const char *name; const char *driver;
const char *version;
void *(*init)(struct lxc_handler *handler); void *(*init)(struct lxc_handler *handler);
void (*destroy)(void *hdata, struct lxc_conf *conf); void (*destroy)(void *hdata, struct lxc_conf *conf);
...@@ -66,7 +61,6 @@ struct cgroup_ops { ...@@ -66,7 +61,6 @@ struct cgroup_ops {
bool (*mount_cgroup)(void *hdata, const char *root, int type); bool (*mount_cgroup)(void *hdata, const char *root, int type);
int (*nrtasks)(void *hdata); int (*nrtasks)(void *hdata);
void (*disconnect)(void); void (*disconnect)(void);
cgroup_driver_t driver;
}; };
extern bool cgroup_attach(const char *name, const char *lxcpath, pid_t pid); extern bool cgroup_attach(const char *name, const char *lxcpath, pid_t pid);
...@@ -87,7 +81,6 @@ extern int cgroup_num_hierarchies(); ...@@ -87,7 +81,6 @@ extern int cgroup_num_hierarchies();
extern bool cgroup_get_hierarchies(int i, char ***out); extern bool cgroup_get_hierarchies(int i, char ***out);
extern bool cgroup_unfreeze(struct lxc_handler *handler); extern bool cgroup_unfreeze(struct lxc_handler *handler);
extern void cgroup_disconnect(void); extern void cgroup_disconnect(void);
extern cgroup_driver_t cgroup_driver(void);
extern void prune_init_scope(char *cg); extern void prune_init_scope(char *cg);
extern bool is_crucial_cgroup_subsystem(const char *s); extern bool is_crucial_cgroup_subsystem(const char *s);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment