Re: [Qemu-devel] [PATCH v4 03/46] windbg: modified windbgkd.h

2018-01-12 Thread Paolo Bonzini
On 11/12/2017 14:21, Mihail Abakumov wrote:
> Added useful name arrays of some defines. Not used yet. Needs for the future.
> 
> Signed-off-by: Mihail Abakumov 
> Signed-off-by: Pavel Dovgalyuk 
> Signed-off-by: Dmitriy Koltunov 
> ---
>  include/exec/windbgkd.h |   83 
> +++
>  1 file changed, 83 insertions(+)
> 
> diff --git a/include/exec/windbgkd.h b/include/exec/windbgkd.h
> index b8f98925e7..5008cbb729 100755
> --- a/include/exec/windbgkd.h
> +++ b/include/exec/windbgkd.h
> @@ -870,4 +870,87 @@ typedef struct _DBGKD_TRACE_IO {
> } u;
>  } DBGKD_TRACE_IO, *PDBGKD_TRACE_IO;
>  
> +__attribute__ ((unused)) /* maybe unused */
> +static const char *kd_api_names[] = {

Please put this in windbgstub-utils.c...

> +"DbgKdReadVirtualMemoryApi",
> +"DbgKdWriteVirtualMemoryApi",
> +"DbgKdGetContextApi",
> +"DbgKdSetContextApi",
> +"DbgKdWriteBreakPointApi",
> +"DbgKdRestoreBreakPointApi",
> +"DbgKdContinueApi",
> +"DbgKdReadControlSpaceApi",
> +"DbgKdWriteControlSpaceApi",
> +"DbgKdReadIoSpaceApi",
> +"DbgKdWriteIoSpaceApi",
> +"DbgKdRebootApi",
> +"DbgKdContinueApi2",
> +"DbgKdReadPhysicalMemoryApi",
> +"DbgKdWritePhysicalMemoryApi",
> +"DbgKdQuerySpecialCallsApi",
> +"DbgKdSetSpecialCallApi",
> +"DbgKdClearSpecialCallsApi",
> +"DbgKdSetInternalBreakPointApi",
> +"DbgKdGetInternalBreakPointApi",
> +"DbgKdReadIoSpaceExtendedApi",
> +"DbgKdWriteIoSpaceExtendedApi",
> +"DbgKdGetVersionApi",
> +"DbgKdWriteBreakPointExApi",
> +"DbgKdRestoreBreakPointExApi",
> +"DbgKdCauseBugCheckApi",
> +"",
> +"",
> +"",
> +"",
> +"",
> +"",
> +"DbgKdSwitchProcessor",
> +"DbgKdPageInApi",
> +"DbgKdReadMachineSpecificRegister",
> +"DbgKdWriteMachineSpecificRegister",
> +"OldVlm1",
> +"OldVlm2",
> +"DbgKdSearchMemoryApi",
> +"DbgKdGetBusDataApi",
> +"DbgKdSetBusDataApi",
> +"DbgKdCheckLowMemoryApi",
> +"DbgKdClearAllInternalBreakpointsApi",
> +"DbgKdFillMemoryApi",
> +"DbgKdQueryMemoryApi",
> +"DbgKdSwitchPartition",
> +"DbgKdUnknownApi"
> +};
> +
> +__attribute__ ((unused)) /* maybe unused */
> +static const char *kd_packet_type_names[] = {

... same here...

> +"PACKET_TYPE_UNUSED",
> +"PACKET_TYPE_KD_STATE_CHANGE32",
> +"PACKET_TYPE_KD_STATE_MANIPULATE",
> +"PACKET_TYPE_KD_DEBUG_IO",
> +"PACKET_TYPE_KD_ACKNOWLEDGE",
> +"PACKET_TYPE_KD_RESEND",
> +"PACKET_TYPE_KD_RESET",
> +"PACKET_TYPE_KD_STATE_CHANGE64",
> +"PACKET_TYPE_KD_POLL_BREAKIN",
> +"PACKET_TYPE_KD_TRACE_IO",
> +"PACKET_TYPE_KD_CONTROL_REQUEST",
> +"PACKET_TYPE_KD_FILE_IO",
> +"PACKET_TYPE_MAX"
> +};
> +
> +#define KD_API_NAME(id) ({  \

... and make this a function instead of a macro.

Paolo

> +QEMU_BUILD_BUG_ON(ARRAY_SIZE(kd_api_names) ==   \
> +  DbgKdMaximumManipulate - DbgKdMinimumManipulate + 2); \
> +(id >= DbgKdMinimumManipulate && id < DbgKdMaximumManipulate) ? \
> +kd_api_names[id - DbgKdMinimumManipulate] : \
> +kd_api_names[DbgKdMaximumManipulate - DbgKdMinimumManipulate];  \
> +})
> +
> +#define KD_PKT_TYPE_NAME(id) ({ \
> +QEMU_BUILD_BUG_ON(ARRAY_SIZE(kd_packet_type_names) == PACKET_TYPE_MAX); \
> +(id >= 0 && id < PACKET_TYPE_MAX) ? \
> +kd_packet_type_names[id] :  \
> +kd_packet_type_names[PACKET_TYPE_MAX - 1];  \
> +})
> +
>  #endif
> 
> 




[Qemu-devel] [PATCH v4 03/46] windbg: modified windbgkd.h

2017-12-11 Thread Mihail Abakumov
Added useful name arrays of some defines. Not used yet. Needs for the future.

Signed-off-by: Mihail Abakumov 
Signed-off-by: Pavel Dovgalyuk 
Signed-off-by: Dmitriy Koltunov 
---
 include/exec/windbgkd.h |   83 +++
 1 file changed, 83 insertions(+)

diff --git a/include/exec/windbgkd.h b/include/exec/windbgkd.h
index b8f98925e7..5008cbb729 100755
--- a/include/exec/windbgkd.h
+++ b/include/exec/windbgkd.h
@@ -870,4 +870,87 @@ typedef struct _DBGKD_TRACE_IO {
} u;
 } DBGKD_TRACE_IO, *PDBGKD_TRACE_IO;
 
+__attribute__ ((unused)) /* maybe unused */
+static const char *kd_api_names[] = {
+"DbgKdReadVirtualMemoryApi",
+"DbgKdWriteVirtualMemoryApi",
+"DbgKdGetContextApi",
+"DbgKdSetContextApi",
+"DbgKdWriteBreakPointApi",
+"DbgKdRestoreBreakPointApi",
+"DbgKdContinueApi",
+"DbgKdReadControlSpaceApi",
+"DbgKdWriteControlSpaceApi",
+"DbgKdReadIoSpaceApi",
+"DbgKdWriteIoSpaceApi",
+"DbgKdRebootApi",
+"DbgKdContinueApi2",
+"DbgKdReadPhysicalMemoryApi",
+"DbgKdWritePhysicalMemoryApi",
+"DbgKdQuerySpecialCallsApi",
+"DbgKdSetSpecialCallApi",
+"DbgKdClearSpecialCallsApi",
+"DbgKdSetInternalBreakPointApi",
+"DbgKdGetInternalBreakPointApi",
+"DbgKdReadIoSpaceExtendedApi",
+"DbgKdWriteIoSpaceExtendedApi",
+"DbgKdGetVersionApi",
+"DbgKdWriteBreakPointExApi",
+"DbgKdRestoreBreakPointExApi",
+"DbgKdCauseBugCheckApi",
+"",
+"",
+"",
+"",
+"",
+"",
+"DbgKdSwitchProcessor",
+"DbgKdPageInApi",
+"DbgKdReadMachineSpecificRegister",
+"DbgKdWriteMachineSpecificRegister",
+"OldVlm1",
+"OldVlm2",
+"DbgKdSearchMemoryApi",
+"DbgKdGetBusDataApi",
+"DbgKdSetBusDataApi",
+"DbgKdCheckLowMemoryApi",
+"DbgKdClearAllInternalBreakpointsApi",
+"DbgKdFillMemoryApi",
+"DbgKdQueryMemoryApi",
+"DbgKdSwitchPartition",
+"DbgKdUnknownApi"
+};
+
+__attribute__ ((unused)) /* maybe unused */
+static const char *kd_packet_type_names[] = {
+"PACKET_TYPE_UNUSED",
+"PACKET_TYPE_KD_STATE_CHANGE32",
+"PACKET_TYPE_KD_STATE_MANIPULATE",
+"PACKET_TYPE_KD_DEBUG_IO",
+"PACKET_TYPE_KD_ACKNOWLEDGE",
+"PACKET_TYPE_KD_RESEND",
+"PACKET_TYPE_KD_RESET",
+"PACKET_TYPE_KD_STATE_CHANGE64",
+"PACKET_TYPE_KD_POLL_BREAKIN",
+"PACKET_TYPE_KD_TRACE_IO",
+"PACKET_TYPE_KD_CONTROL_REQUEST",
+"PACKET_TYPE_KD_FILE_IO",
+"PACKET_TYPE_MAX"
+};
+
+#define KD_API_NAME(id) ({  \
+QEMU_BUILD_BUG_ON(ARRAY_SIZE(kd_api_names) ==   \
+  DbgKdMaximumManipulate - DbgKdMinimumManipulate + 2); \
+(id >= DbgKdMinimumManipulate && id < DbgKdMaximumManipulate) ? \
+kd_api_names[id - DbgKdMinimumManipulate] : \
+kd_api_names[DbgKdMaximumManipulate - DbgKdMinimumManipulate];  \
+})
+
+#define KD_PKT_TYPE_NAME(id) ({ \
+QEMU_BUILD_BUG_ON(ARRAY_SIZE(kd_packet_type_names) == PACKET_TYPE_MAX); \
+(id >= 0 && id < PACKET_TYPE_MAX) ? \
+kd_packet_type_names[id] :  \
+kd_packet_type_names[PACKET_TYPE_MAX - 1];  \
+})
+
 #endif