* (C) Copyright IBM Corp. 2007, 2008
*
* Authors:
- * Daniel Lezcano <dlezcano at fr.ibm.com>
+ * Daniel Lezcano <daniel.lezcano at free.fr>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef __lxc_state_h
#define __lxc_state_h
+#include "config.h"
+
#include <lxc/state.h>
#include <sys/param.h>
struct lxc_conf;
-struct start_arg;
struct lxc_handler;
struct lxc_operations {
- int (*start)(struct lxc_handler *, struct start_arg *);
- int (*post_start)(struct lxc_handler *, struct start_arg *, int);
+ int (*start)(struct lxc_handler *, void *);
+ int (*post_start)(struct lxc_handler *, void *);
};
+struct cgroup_desc;
+
struct lxc_handler {
pid_t pid;
char *name;
lxc_state_t state;
+ int clone_flags;
int sigfd;
- char nsgroup[MAXPATHLEN];
sigset_t oldmask;
struct lxc_conf *conf;
struct lxc_operations *ops;
-};
-
-struct start_arg {
- struct lxc_handler *handler;
+ void *data;
int sv[2];
- char *const *argv;
- int sfd;
+ int pinfd;
+ const char *lxcpath;
+ struct cgroup_process_info *cgroup;
};
-extern struct lxc_handler *lxc_init(const char *name, struct lxc_conf *);
-extern int lxc_spawn(struct lxc_handler *, struct start_arg *start_arg,
- int restart_flags);
+extern struct lxc_handler *lxc_init(const char *name, struct lxc_conf *, const char *);
+extern int lxc_spawn(struct lxc_handler *);
extern int lxc_poll(const char *name, struct lxc_handler *handler);
extern void lxc_abort(const char *name, struct lxc_handler *handler);
-extern void lxc_fini(const char *name, struct lxc_handler *handler);
extern int lxc_set_state(const char *, struct lxc_handler *, lxc_state_t);
-extern int lxc_check_inherited(int fd_to_ignore);
+extern int lxc_check_inherited(struct lxc_conf *conf, int fd_to_ignore);
+int __lxc_start(const char *, struct lxc_conf *, struct lxc_operations *,
+ void *, const char *);
#endif