@@ -637,12 +637,12 @@ static int32_t shell_list_vcpu(__unused int32_t argc, __unused char **argv)
637
637
char temp_str [MAX_STR_SIZE ];
638
638
struct acrn_vm * vm ;
639
639
struct acrn_vcpu * vcpu ;
640
- char state [32 ];
640
+ char vcpu_state_str [ 32 ], thread_state_str [32 ];
641
641
uint16_t i ;
642
642
uint16_t idx ;
643
643
644
- shell_puts ("\r\nVM ID PCPU ID VCPU ID VCPU ROLE VCPU STATE"
645
- "\r\n===== ======= ======= ========= ==========\r\n" );
644
+ shell_puts ("\r\nVM ID PCPU ID VCPU ID VCPU ROLE VCPU STATE THREAD STATE "
645
+ "\r\n===== ======= ======= ========= ========== ========== \r\n" );
646
646
647
647
for (idx = 0U ; idx < CONFIG_MAX_VM_NUM ; idx ++ ) {
648
648
vm = get_vm_from_vmid (idx );
@@ -652,31 +652,47 @@ static int32_t shell_list_vcpu(__unused int32_t argc, __unused char **argv)
652
652
foreach_vcpu (i , vm , vcpu ) {
653
653
switch (vcpu -> state ) {
654
654
case VCPU_INIT :
655
- (void )strncpy_s (state , 32U , "Init" , 32U );
655
+ (void )strncpy_s (vcpu_state_str , 32U , "Init" , 32U );
656
656
break ;
657
657
case VCPU_PAUSED :
658
- (void )strncpy_s (state , 32U , "Paused" , 32U );
658
+ (void )strncpy_s (vcpu_state_str , 32U , "Paused" , 32U );
659
659
break ;
660
660
case VCPU_RUNNING :
661
- (void )strncpy_s (state , 32U , "Running" , 32U );
661
+ (void )strncpy_s (vcpu_state_str , 32U , "Running" , 32U );
662
662
break ;
663
663
case VCPU_ZOMBIE :
664
- (void )strncpy_s (state , 32U , "Zombie" , 32U );
664
+ (void )strncpy_s (vcpu_state_str , 32U , "Zombie" , 32U );
665
665
break ;
666
666
default :
667
- (void )strncpy_s (state , 32U , "Unknown" , 32U );
667
+ (void )strncpy_s (vcpu_state_str , 32U , "Unknown" , 32U );
668
+ break ;
669
+ }
670
+
671
+ switch (vcpu -> thread_obj .status ) {
672
+ case THREAD_STS_RUNNING :
673
+ (void )strncpy_s (thread_state_str , 32U , "RUNNING" , 32U );
674
+ break ;
675
+ case THREAD_STS_RUNNABLE :
676
+ (void )strncpy_s (thread_state_str , 32U , "RUNNABLE" , 32U );
677
+ break ;
678
+ case THREAD_STS_BLOCKED :
679
+ (void )strncpy_s (thread_state_str , 32U , "BLOCKED" , 32U );
680
+ break ;
681
+ default :
682
+ (void )strncpy_s (thread_state_str , 32U , "UNKNOWN" , 32U );
683
+ break ;
668
684
}
669
685
/* Create output string consisting of VM name
670
686
* and VM id
671
687
*/
672
688
snprintf (temp_str , MAX_STR_SIZE ,
673
- " %-9d %-10d %-7hu %-12s %-16s\r\n" ,
689
+ " %-9d %-10d %-7hu %-12s %-16s %-16s \r\n" ,
674
690
vm -> vm_id ,
675
691
pcpuid_from_vcpu (vcpu ),
676
692
vcpu -> vcpu_id ,
677
693
is_vcpu_bsp (vcpu ) ?
678
694
"PRIMARY" : "SECONDARY" ,
679
- state );
695
+ vcpu_state_str , thread_state_str );
680
696
/* Output information for this task */
681
697
shell_puts (temp_str );
682
698
}
0 commit comments