From 423601c18d9a075c416f643c8d61a6c7c66d248f Mon Sep 17 00:00:00 2001 From: Enrico Scholz Date: Wed, 14 Apr 2004 23:31:16 +0000 Subject: [PATCH] applied new kernel API (*flags* -> *cflags*, *_context -> ctx_*) fixed '--fakeinit' option git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@1462 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- util-vserver/src/vcontext.c | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/util-vserver/src/vcontext.c b/util-vserver/src/vcontext.c index ea107d5..ca447ac 100644 --- a/util-vserver/src/vcontext.c +++ b/util-vserver/src/vcontext.c @@ -58,6 +58,7 @@ #define CMD_ENDSETUP 0x400b #define CMD_SILENTEXIST 0x400c + struct option const CMDLINE_OPTIONS[] = { { "help", no_argument, 0, CMD_HELP }, @@ -180,16 +181,26 @@ connectExternalSync(char const *filename) static void setFlags(struct Arguments const *args, xid_t xid) { - struct vc_ctx_flags flags = { 0,0 }; + struct vc_ctx_flags flags = { + .mask = 0, + .flagword = VC_VXF_STATE_INIT|VC_VXF_STATE_SETUP, + }; - if (args->is_fakeinit) - flags.mask |= VC_VXF_STATE_INIT; + if (args->is_fakeinit) { + flags.flagword &= ~VC_VXF_STATE_INIT; + flags.flagword |= VC_VXF_INFO_INIT; + flags.mask |= VC_VXF_INFO_INIT|VC_VXF_STATE_INIT; + } - if (args->do_endsetup) - flags.mask |= VC_VXF_STATE_SETUP; + if (args->do_endsetup) { + flags.flagword &= ~VC_VXF_STATE_SETUP; + flags.mask |= VC_VXF_STATE_SETUP; + } - if (flags.mask!=0) - Evc_set_flags(xid, &flags); + if (flags.mask!=0) { + DPRINTF("set_flags: mask=%08llx, flag=%08llx\n", flags.mask, flags.flagword); + Evc_set_cflags(xid, &flags); + } } static void @@ -223,7 +234,7 @@ doit(struct Arguments const *args, char *argv[]) doSyncStage0(p, args->do_disconnect); if (args->do_create) { - xid = vc_create_context(args->xid); + xid = vc_ctx_create(args->xid); if (xid==VC_NOCTX) { switch (errno) { case EEXIST : @@ -246,7 +257,7 @@ doit(struct Arguments const *args, char *argv[]) setFlags(args, xid); if (args->do_migrate && !args->do_migrateself) - Evc_migrate_context(xid); + Evc_ctx_migrate(xid); if (args->uid!=(uid_t)(-1) && getuid()!=args->uid) { Esetuid(args->uid); @@ -258,6 +269,7 @@ doit(struct Arguments const *args, char *argv[]) doExternalSync(ext_sync_fd, args->sync_msg); doSyncStage1(p, args->do_disconnect); + DPRINTF("doit: pid=%u, ppid=%u\n", getpid(), getppid()); execvp (argv[optind],argv+optind); doSyncStage2(p, args->do_disconnect); -- 1.8.1.5