acrn-hypervisor/misc/services/life_mngr/life_mngr_win.c
Liu Long 3f4ea38158 ACRN: misc: Unify terminology for service vm/user vm
Rename SOS_VM type to SERVICE_VM
rename UOS to User VM in XML description
rename uos_thread_pid to user_vm_thread_pid
rename devname_uos to devname_user_vm
rename uosid to user_vmid
rename UOS_ACK to USER_VM_ACK
rename SOS_VM_CONFIG_CPU_AFFINITY to SERVICE_VM_CONFIG_CPU_AFFINITY
rename SOS_COM to SERVICE_VM_COM
rename SOS_UART1_VALID_NUM" to SERVICE_VM_UART1_VALID_NUM
rename SOS_BOOTARGS_DIFF to SERVICE_VM_BOOTARGS_DIFF
rename uos to user_vm in launch script and xml

Tracked-On: #6744
Signed-off-by: Liu Long <long.liu@linux.intel.com>
Reviewed-by: Geoffroy Van Cutsem <geoffroy.vancutsem@intel.com>
2021-11-02 10:00:55 +08:00

83 lines
1.7 KiB
C

/*
* Copyright (C)2019 Intel Corporation
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <windows.h>
#include <stdio.h>
#define SERVICE_VM_REQ "shutdown"
#define USER_VM_ACK "acked"
#define BUFF_SIZE 16U
#define MSG_SIZE 8U
HANDLE initCom(const char *szStr)
{
HANDLE hCom = CreateFile(szStr,
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
if (hCom == INVALID_HANDLE_VALUE)
{
printf("open %s failed!\n", szStr);
return hCom;
}
printf("open %s successed!\n", szStr);
SetupComm(hCom, 1024, 1024);
COMMTIMEOUTS TimeOuts;
TimeOuts.ReadIntervalTimeout = 100; /* Maximum time between read chars. */
TimeOuts.ReadTotalTimeoutMultiplier = 5000; /* Multiplier of characters. */
TimeOuts.ReadTotalTimeoutConstant = 5000; /* Constant in milliseconds. */
TimeOuts.WriteTotalTimeoutMultiplier = 500; /* Multiplier of characters. */
TimeOuts.WriteTotalTimeoutConstant = 2000; /* Constant in milliseconds. */
SetCommTimeouts(hCom, &TimeOuts);
DCB dcb;
GetCommState(hCom, &dcb);
dcb.BaudRate = 115200;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
SetCommState(hCom, &dcb);
return hCom;
}
int main()
{
DWORD recvsize = 0;
char recvbuf[BUFF_SIZE];
HANDLE hCom = initCom("COM2");
if (hCom == INVALID_HANDLE_VALUE)
{
return -1;
}
do {
memset(recvbuf, 0, sizeof(recvbuf));
ReadFile(hCom, recvbuf, sizeof(recvbuf), &recvsize, NULL);
if (recvsize < MSG_SIZE)
{
continue;
}
if (strncmp(recvbuf, SERVICE_VM_REQ, MSG_SIZE) == 0)
{
WriteFile(hCom, USER_VM_ACK, sizeof(USER_VM_ACK), NULL, NULL);
system("shutdown -s -t 0");
break;
}
} while (1);
return 0;
}