diff mbox series

[06/43] windbg: added WindbgState

Message ID 150642388004.3900.5767850617613782105.stgit@Misha-PC.lan02.inno
State New
Headers show
Series Windbg supporting | expand

Commit Message

Mikhail Abakumov Sept. 26, 2017, 11:04 a.m. UTC
Added definition of the WindbgState struct and its initialization.

Signed-off-by: Mihail Abakumov <mikhail.abakumov@ispras.ru>
Signed-off-by: Pavel Dovgalyuk <dovgaluk@ispras.ru>
Signed-off-by: Dmitriy Koltunov <koltunov@ispras.ru>
---
 windbgstub.c |   26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

Comments

Alistair Francis Sept. 26, 2017, 5:17 p.m. UTC | #1
On Tue, Sep 26, 2017 at 4:04 AM, Mihail Abakumov
<mikhail.abakumov@ispras.ru> wrote:
> Added definition of the WindbgState struct and its initialization.
>
> Signed-off-by: Mihail Abakumov <mikhail.abakumov@ispras.ru>
> Signed-off-by: Pavel Dovgalyuk <dovgaluk@ispras.ru>
> Signed-off-by: Dmitriy Koltunov <koltunov@ispras.ru>
> ---
>  windbgstub.c |   26 ++++++++++++++++++++++++++
>  1 file changed, 26 insertions(+)
>
> diff --git a/windbgstub.c b/windbgstub.c
> index 3830446988..60a380c213 100755
> --- a/windbgstub.c
> +++ b/windbgstub.c
> @@ -10,10 +10,36 @@
>   */
>
>  #include "qemu/osdep.h"
> +#include "chardev/char.h"
> +#include "chardev/char-fe.h"
>  #include "exec/windbgstub.h"
>  #include "exec/windbgstub-utils.h"
>
> +typedef struct WindbgState {
> +    bool is_loaded;
> +
> +    uint32_t ctrl_packet_id;
> +    uint32_t data_packet_id;
> +} WindbgState;
> +
> +static WindbgState *windbg_state;
> +
> +static void windbg_exit(void)
> +{
> +    g_free(windbg_state);
> +}
> +
>  int windbg_server_start(const char *device)
>  {
> +    if (windbg_state) {
> +        WINDBG_ERROR("Multiple instances are not supported");

Use error_report() to report errors.

Thanks,
Alistair

> +        exit(1);
> +    }
> +
> +    windbg_state = g_new0(WindbgState, 1);
> +    windbg_state->ctrl_packet_id = RESET_PACKET_ID;
> +    windbg_state->data_packet_id = INITIAL_PACKET_ID;
> +
> +    atexit(windbg_exit);

I don't think you need this.

Thanks,
Alistair

>      return 0;
>  }
>
>
diff mbox series

Patch

diff --git a/windbgstub.c b/windbgstub.c
index 3830446988..60a380c213 100755
--- a/windbgstub.c
+++ b/windbgstub.c
@@ -10,10 +10,36 @@ 
  */
 
 #include "qemu/osdep.h"
+#include "chardev/char.h"
+#include "chardev/char-fe.h"
 #include "exec/windbgstub.h"
 #include "exec/windbgstub-utils.h"
 
+typedef struct WindbgState {
+    bool is_loaded;
+
+    uint32_t ctrl_packet_id;
+    uint32_t data_packet_id;
+} WindbgState;
+
+static WindbgState *windbg_state;
+
+static void windbg_exit(void)
+{
+    g_free(windbg_state);
+}
+
 int windbg_server_start(const char *device)
 {
+    if (windbg_state) {
+        WINDBG_ERROR("Multiple instances are not supported");
+        exit(1);
+    }
+
+    windbg_state = g_new0(WindbgState, 1);
+    windbg_state->ctrl_packet_id = RESET_PACKET_ID;
+    windbg_state->data_packet_id = INITIAL_PACKET_ID;
+
+    atexit(windbg_exit);
     return 0;
 }