1 /** 2 * Copyright (C) 2018-2022 Intel Corporation. 3 * SPDX-License-Identifier: BSD-3-Clause 4 */ 5 6 #ifndef _ACRNCTL_H_ 7 #define _ACRNCTL_H_ 8 9 #include <sys/queue.h> 10 #include "acrn_mngr.h" 11 12 enum vm_state { 13 VM_STATE_UNKNOWN = 0, 14 VM_CREATED, /* VM created / awaiting start (boot) */ 15 VM_STARTED, /* VM started (booted) */ 16 VM_PAUSED, /* VM paused */ 17 VM_SUSPENDED, /* VM suspended */ 18 VM_UNTRACKED, /* VM not created by acrnctl, or its launch script can change vm name */ 19 }; 20 21 extern const char *state_str[]; 22 23 /** 24 * @brief search vm indentified by vm from vmmngr_head 25 * 26 * @return vmmngr_struct * if find, NULL not find 27 */ 28 struct vmmngr_struct *vmmngr_find(const char *vmname); 29 30 /* Per-vm vm managerment struct */ 31 struct vmmngr_struct { 32 char name[MAX_VM_NAME_LEN]; 33 unsigned long state; 34 unsigned long state_tmp; 35 unsigned long update; /* update count, remove a vm if no update for it */ 36 LIST_ENTRY(vmmngr_struct) list; 37 }; 38 39 int shell_cmd(const char *cmd, char *outbuf, int len); 40 41 /* update names and states of VMs in Service VM 42 * before you stop, start, pause, resume, suspend continue a VM 43 * use a name, it is better to run vmmngr_update() first 44 * and use vmngr_find() to check is this VM is still available 45 */ 46 void vmmngr_update(void); 47 48 struct vmmngr_list_struct { 49 struct vmmngr_struct *lh_first; 50 }; 51 extern struct vmmngr_list_struct vmmngr_head; 52 53 /* vm life cycle ops */ 54 int list_vm(void); 55 int stop_vm(const char *vmname, int force); 56 int start_vm(const char *vmname); 57 int pause_vm(const char *vmname); 58 int continue_vm(const char *vmname); 59 int resume_vm(const char *vmname, unsigned reason); 60 int blkrescan_vm(const char *vmname, char *devargs); 61 62 #endif /* _ACRNCTL_H_ */ 63