mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-01 03:45:29 +00:00
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>
83 lines
1.7 KiB
C
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;
|
|
}
|
|
|