[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 10/43] windbg: structures for parsing data stream
From: |
Mihail Abakumov |
Subject: |
[Qemu-devel] [PATCH v2 10/43] windbg: structures for parsing data stream |
Date: |
Tue, 17 Oct 2017 16:09:47 +0300 |
User-agent: |
StGit/0.17.1-dirty |
Added structures for parsing data stream from windbg to packet.
Signed-off-by: Mihail Abakumov <address@hidden>
Signed-off-by: Pavel Dovgalyuk <address@hidden>
Signed-off-by: Dmitriy Koltunov <address@hidden>
---
include/exec/windbgstub-utils.h | 11 +++++++++++
windbgstub.c | 30 ++++++++++++++++++++++++++++++
2 files changed, 41 insertions(+)
diff --git a/include/exec/windbgstub-utils.h b/include/exec/windbgstub-utils.h
index ff260287dc..d6abb82dfa 100755
--- a/include/exec/windbgstub-utils.h
+++ b/include/exec/windbgstub-utils.h
@@ -55,6 +55,17 @@ typedef struct InitedAddr {
bool is_init;
} InitedAddr;
+typedef struct PacketData {
+ union {
+ struct {
+ DBGKD_MANIPULATE_STATE64 m64;
+ uint8_t extra[PACKET_MAX_SIZE - sizeof(DBGKD_MANIPULATE_STATE64)];
+ };
+ uint8_t buf[PACKET_MAX_SIZE];
+ };
+ uint16_t extra_size;
+} PacketData;
+
InitedAddr *windbg_get_KPCR(void);
InitedAddr *windbg_get_version(void);
diff --git a/windbgstub.c b/windbgstub.c
index e9aabd807b..395f244d4f 100755
--- a/windbgstub.c
+++ b/windbgstub.c
@@ -19,6 +19,36 @@
#include "sysemu/kvm.h"
#include "sysemu/reset.h"
+typedef enum ParsingState {
+ STATE_LEADER,
+ STATE_PACKET_TYPE,
+ STATE_PACKET_BYTE_COUNT,
+ STATE_PACKET_ID,
+ STATE_PACKET_CHECKSUM,
+ STATE_PACKET_DATA,
+ STATE_TRAILING_BYTE,
+} ParsingState;
+
+typedef enum ParsingResult {
+ RESULT_NONE,
+ RESULT_BREAKIN_BYTE,
+ RESULT_UNKNOWN_PACKET,
+ RESULT_CONTROL_PACKET,
+ RESULT_DATA_PACKET,
+ RESULT_ERROR,
+} ParsingResult;
+
+typedef struct ParsingContext {
+ /* index in the current buffer,
+ which depends on the current state */
+ int index;
+ ParsingState state;
+ ParsingResult result;
+ KD_PACKET packet;
+ PacketData data;
+ const char *name;
+} ParsingContext;
+
typedef struct WindbgState {
bool is_loaded;
- [Qemu-devel] [PATCH v2 00/43] Windbg supporting, Mihail Abakumov, 2017/10/17
- [Qemu-devel] [PATCH v2 01/43] windbg: added empty windbgstub files, Mihail Abakumov, 2017/10/17
- [Qemu-devel] [PATCH v2 02/43] windbg: added windbg's KD header file, Mihail Abakumov, 2017/10/17
- [Qemu-devel] [PATCH v2 03/43] windbg: modified windbgkd.h, Mihail Abakumov, 2017/10/17
- [Qemu-devel] [PATCH v2 04/43] windbg: added '-windbg' option, Mihail Abakumov, 2017/10/17
- [Qemu-devel] [PATCH v2 05/43] windbg: added helper features, Mihail Abakumov, 2017/10/17
- [Qemu-devel] [PATCH v2 06/43] windbg: added WindbgState, Mihail Abakumov, 2017/10/17
- [Qemu-devel] [PATCH v2 08/43] windbg: hook to wrmsr operation, Mihail Abakumov, 2017/10/17
- [Qemu-devel] [PATCH v2 07/43] windbg: added chardev, Mihail Abakumov, 2017/10/17
- [Qemu-devel] [PATCH v2 09/43] windbg: handler of fs/gs register, Mihail Abakumov, 2017/10/17
- [Qemu-devel] [PATCH v2 10/43] windbg: structures for parsing data stream,
Mihail Abakumov <=
- [Qemu-devel] [PATCH v2 11/43] windbg: parsing data stream, Mihail Abakumov, 2017/10/17
- [Qemu-devel] [PATCH v2 12/43] windbg: send data and control packets, Mihail Abakumov, 2017/10/17
- [Qemu-devel] [PATCH v2 14/43] windbg: init DBGKD_ANY_WAIT_STATE_CHANGE, Mihail Abakumov, 2017/10/17
- [Qemu-devel] [PATCH v2 13/43] windbg: handler of parsing context, Mihail Abakumov, 2017/10/17
- [Qemu-devel] [PATCH v2 15/43] windbg: sized data buffer, Mihail Abakumov, 2017/10/17
- [Qemu-devel] [PATCH v2 16/43] windbg: generate ExceptionStateChange, Mihail Abakumov, 2017/10/17
- [Qemu-devel] [PATCH v2 17/43] windbg: generate LoadSymbolsStateChange, Mihail Abakumov, 2017/10/17
- [Qemu-devel] [PATCH v2 18/43] windbg: windbg_vm_stop, Mihail Abakumov, 2017/10/17
- [Qemu-devel] [PATCH v2 19/43] windbg: implemented windbg_process_control_packet, Mihail Abakumov, 2017/10/17
- [Qemu-devel] [PATCH v2 21/43] windbg: implemented windbg_process_manipulate_packet, Mihail Abakumov, 2017/10/17