Skip to content

Commit 2dd4e8f

Browse files
KaigeFulijinxia
authored andcommitted
tools: acrnctl: Add support for reseting vm
Add command reset to stop and then start vm. Signed-off-by: Kaige Fu <kaige.fu@intel.com> Reviewed-by: Geoffroy Van Cutsem <geoffroy.vancutsem@intel.com> Reviewed-by: Yan, Like <like.yan@intel.com> Acked-by: Eddie Dong <eddie.dong@intel.com>
1 parent 7a0e8dd commit 2dd4e8f

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

tools/acrn-manager/README.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ You can see the available ``acrnctl`` commands by running:
3131
continue
3232
suspend
3333
resume
34+
reset
3435
Use acrnctl [cmd] help for details
3536
3637
Here are some usage examples:

tools/acrn-manager/acrnctl.c

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
#define CONTINUE_DESC "Start virtual machine from pause state"
3737
#define SUSPEND_DESC "Switch virtual machine to suspend state"
3838
#define RESUME_DESC "Resume virtual machine from suspend state"
39+
#define RESET_DESC "Stop and then start virtual machine VM_NAME"
3940

4041
struct acrnctl_cmd {
4142
const char *cmd;
@@ -491,6 +492,35 @@ static int acrnctl_do_resume(int argc, char *argv[])
491492
return 0;
492493
}
493494

495+
static int acrnctl_do_reset(int argc, char *argv[])
496+
{
497+
struct vmmngr_struct *s;
498+
int i;
499+
500+
for (i = 1; i < argc; i++) {
501+
s = vmmngr_find(argv[i]);
502+
if (!s) {
503+
printf("Can't find vm %s\n", argv[i]);
504+
continue;
505+
}
506+
507+
switch(s->state) {
508+
case VM_CREATED:
509+
start_vm(argv[i]);
510+
break;
511+
case VM_STARTED:
512+
case VM_PAUSED:
513+
stop_vm(argv[i]);
514+
start_vm(argv[i]);
515+
break;
516+
default:
517+
printf("%s current state: %s, can't reset\n",
518+
argv[i], state_str[s->state]);
519+
}
520+
}
521+
return 0;
522+
}
523+
494524
/* Default args validation function */
495525
int df_valid_args(struct acrnctl_cmd *cmd, int argc, char *argv[])
496526
{
@@ -548,6 +578,7 @@ struct acrnctl_cmd acmds[] = {
548578
ACMD("continue", acrnctl_do_continue, CONTINUE_DESC, df_valid_args),
549579
ACMD("suspend", acrnctl_do_suspend, SUSPEND_DESC, df_valid_args),
550580
ACMD("resume", acrnctl_do_resume, RESUME_DESC, df_valid_args),
581+
ACMD("reset", acrnctl_do_reset, RESET_DESC, df_valid_args),
551582
};
552583

553584
#define NCMD (sizeof(acmds)/sizeof(struct acrnctl_cmd))

0 commit comments

Comments
 (0)