Skip to content

Commit e7f7724

Browse files
liuygzhuliwenlingz
authored andcommitted
Tools: acrnctl fix return value when it fails to execute the commands
Acrnctl commands return 0,even if when it fails to execute the commands. In this patch,fix this issue.It return none-zero when acrnctl commands failed in command executed. Tracked-On: #1262 Signed-off-by:liuyonggang <yonggangx.liu@intel.com> Acked-by: Yan, Like <like.yan@intel.com>
1 parent eea0ecd commit e7f7724

File tree

1 file changed

+31
-17
lines changed

1 file changed

+31
-17
lines changed

tools/acrn-manager/acrnctl.c

Lines changed: 31 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -422,13 +422,14 @@ static int acrnctl_do_stop(int argc, char *argv[])
422422
s = vmmngr_find(argv[1]);
423423
if (!s) {
424424
printf("can't find %s\n", argv[1]);
425+
return -1;
425426
}
426427
if (s->state == VM_CREATED) {
427428
printf("%s is already (%s)\n", argv[1],state_str[s->state]);
429+
return -1;
428430
}
429-
stop_vm(argv[1]);
431+
return stop_vm(argv[1]);
430432

431-
return 0;
432433
}
433434

434435
/* Function: Delete runC configuration */
@@ -486,9 +487,11 @@ static int acrnctl_do_del(int argc, char *argv[])
486487
s = vmmngr_find(argv[1]);
487488
if (!s) {
488489
printf("can't find %s\n", argv[1]);
490+
return -1;
489491
}
490492
if (s->state != VM_CREATED) {
491493
printf("can't delete %s(%s)\n", argv[1],state_str[s->state]);
494+
return -1;
492495
}
493496
if (snprintf(cmd, sizeof(cmd), "rm -f %s/%s.sh",ACRN_CONF_PATH_ADD, argv[1]) >= sizeof(cmd)) {
494497
printf("WARN: cmd is truncated\n");
@@ -523,39 +526,42 @@ static int acrnctl_do_start(int argc, char *argv[])
523526
return -1;
524527
}
525528

526-
start_vm(argv[1]);
529+
return start_vm(argv[1]);
527530

528-
return 0;
529531
}
530532

531533
static int acrnctl_do_pause(int argc, char *argv[])
532534
{
533535
struct vmmngr_struct *s;
536+
int ret = -1;
534537

535538
s = vmmngr_find(argv[1]);
536539
if (!s) {
537540
printf("Can't find vm %s\n", argv[1]);
541+
return ret;
538542
}
539543

540544
/* Send pause cmd to arcn-dm only when vm is in VM_STARTED */
541545
switch (s->state) {
542546
case VM_STARTED:
543-
pause_vm(argv[1]);
547+
ret = pause_vm(argv[1]);
544548
break;
545549
default:
546550
printf("%s current state %s, can't pause\n",argv[1], state_str[s->state]);
547551
}
548552

549-
return 0;
553+
return ret;
550554
}
551555

552556
static int acrnctl_do_continue(int argc, char *argv[])
553557
{
554558
struct vmmngr_struct *s;
559+
int ret = -1;
555560

556561
s = vmmngr_find(argv[1]);
557562
if (!s) {
558563
printf("Can't find vm %s\n", argv[1]);
564+
return ret;
559565
}
560566

561567
/* Per current implemention, we can't know if vm is in paused
@@ -564,45 +570,48 @@ static int acrnctl_do_continue(int argc, char *argv[])
564570
paused */
565571
switch (s->state) {
566572
case VM_STARTED:
567-
continue_vm(argv[1]);
573+
ret = continue_vm(argv[1]);
568574
break;
569575
default:
570576
printf("%s current state %s, can't continue\n",argv[1], state_str[s->state]);
571577
}
572578

573-
return 0;
579+
return ret;
574580
}
575581

576582
static int acrnctl_do_suspend(int argc, char *argv[])
577583
{
578584
struct vmmngr_struct *s;
585+
int ret = -1;
579586

580587
s = vmmngr_find(argv[1]);
581588
if (!s) {
582589
printf("Can't find vm %s\n", argv[1]);
590+
return ret;
583591
}
584592

585593
/* Only send suspend cmd to acrn-dm now when VM_STARTED */
586594
switch (s->state) {
587595
case VM_STARTED:
588-
suspend_vm(argv[1]);
596+
ret = suspend_vm(argv[1]);
589597
break;
590598
default:
591599
printf("%s current state %s, can't suspend\n",argv[1], state_str[s->state]);
592600
}
593601

594-
return 0;
602+
return ret;
595603
}
596604

597605
static int acrnctl_do_resume(int argc, char *argv[])
598606
{
599607
struct vmmngr_struct *s;
600608
unsigned reason = CBC_WK_RSN_BTN;
609+
int ret = -1;
601610

602611
s = vmmngr_find(argv[1]);
603612
if (!s) {
604613
printf("Can't find vm %s\n", argv[1]);
605-
return -1;
614+
return ret;
606615
}
607616

608617
if (argc == 3) {
@@ -613,14 +622,14 @@ static int acrnctl_do_resume(int argc, char *argv[])
613622

614623
switch (s->state) {
615624
case VM_SUSPENDED:
616-
resume_vm(argv[1], reason);
625+
ret = resume_vm(argv[1], reason);
617626
printf("resume %s reason(0x%x\n", argv[1], reason);
618627
break;
619628
default:
620629
printf("%s current state %s, can't resume\n",argv[1], state_str[s->state]);
621630
}
622631

623-
return 0;
632+
return ret;
624633
}
625634

626635
static int wait_vm_stop(const char * vmname, unsigned int timeout)
@@ -652,26 +661,31 @@ static int wait_vm_stop(const char * vmname, unsigned int timeout)
652661
static int acrnctl_do_reset(int argc, char *argv[])
653662
{
654663
struct vmmngr_struct *s;
664+
int ret = -1;
655665

656666
s = vmmngr_find(argv[1]);
657667
if (!s) {
658668
printf("Can't find vm %s\n", argv[1]);
669+
return ret;
659670
}
660671

661672
switch(s->state) {
662673
case VM_STARTED:
663674
case VM_SUSPENDED:
664-
stop_vm(argv[1]);
675+
ret = stop_vm(argv[1]);
676+
if (ret != 0) {
677+
break;
678+
}
665679
if (wait_vm_stop(argv[1], STOP_TIMEOUT)) {
666680
printf("Failed to stop %s in %u sec, reset failed\n",argv[1], STOP_TIMEOUT);
667-
return -1;
681+
break;
668682
}
669-
start_vm(argv[1]);
683+
ret = start_vm(argv[1]);
670684
break;
671685
default:
672686
printf("%s current state: %s, can't reset\n",argv[1], state_str[s->state]);
673687
}
674-
return 0;
688+
return ret;
675689
}
676690

677691
/* Default args validation function */

0 commit comments

Comments
 (0)