qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] Add info commands for serial/parallel devices


From: Thiemo Seufer
Subject: Re: [Qemu-devel] [PATCH] Add info commands for serial/parallel devices
Date: Mon, 19 Mar 2007 16:13:42 +0000
User-agent: Mutt/1.5.13 (2006-08-11)

Anthony Liguori wrote:
> Howdy,
> 
> The following patch adds an info serial and an info parallel command.  
> Besides providing useful information (especially for the serial port), 
> it provides a method for management tools to connect to a running VM and 
> what character devices the serial/parallel ports have been redirected to.
> 
> The format of the info is similar to that of info block.
[snip]
> diff -r 18e99d1e8814 vl.c
> --- a/vl.c    Sat Mar 03 21:18:48 2007 -0600
> +++ b/vl.c    Sat Mar 03 21:33:07 2007 -0600
> @@ -2884,66 +2884,73 @@ CharDriverState *qemu_chr_open(const cha
>  CharDriverState *qemu_chr_open(const char *filename)
>  {
>      const char *p;
> +    CharDriverState *chr;
>  
>      if (!strcmp(filename, "vc")) {
> -        return text_console_init(&display_state);
> +        chr = text_console_init(&display_state);
>      } else if (!strcmp(filename, "null")) {
> -        return qemu_chr_open_null();
> +        chr = qemu_chr_open_null();
>      } else 
>      if (strstart(filename, "tcp:", &p)) {
> -        return qemu_chr_open_tcp(p, 0, 0);
> +        chr = qemu_chr_open_tcp(p, 0, 0);
>      } else
>      if (strstart(filename, "telnet:", &p)) {
> -        return qemu_chr_open_tcp(p, 1, 0);
> +        chr = qemu_chr_open_tcp(p, 1, 0);
>      } else
>      if (strstart(filename, "udp:", &p)) {
> -        return qemu_chr_open_udp(p);
> +        chr = qemu_chr_open_udp(p);
>      } else
>      if (strstart(filename, "mon:", &p)) {
>          CharDriverState *drv = qemu_chr_open(p);
>          if (drv) {
>              drv = qemu_chr_open_mux(drv);
>              monitor_init(drv, !nographic);
> -            return drv;
> -        }
> -        printf("Unable to open driver: %s\n", p);
> -        return 0;
> +            chr = drv;
> +        } else {
> +         printf("Unable to open driver: %s\n", p);
> +         return 0;
> +     }
>      } else
>  #ifndef _WIN32
>      if (strstart(filename, "unix:", &p)) {
> -     return qemu_chr_open_tcp(p, 0, 1);
> +     chr = qemu_chr_open_tcp(p, 0, 1);
>      } else if (strstart(filename, "file:", &p)) {
> -        return qemu_chr_open_file_out(p);
> +        chr = qemu_chr_open_file_out(p);
>      } else if (strstart(filename, "pipe:", &p)) {
> -        return qemu_chr_open_pipe(p);
> +        chr = qemu_chr_open_pipe(p);
>      } else if (!strcmp(filename, "pty")) {
> -        return qemu_chr_open_pty();
> +        chr = qemu_chr_open_pty();
>      } else if (!strcmp(filename, "stdio")) {
> -        return qemu_chr_open_stdio();
> +        chr = qemu_chr_open_stdio();
>      } else 
>  #endif
>  #if defined(__linux__)
>      if (strstart(filename, "/dev/parport", NULL)) {
> -        return qemu_chr_open_pp(filename);
> +        chr = qemu_chr_open_pp(filename);
>      } else 
>      if (strstart(filename, "/dev/", NULL)) {
> -        return qemu_chr_open_tty(filename);
> +        chr = qemu_chr_open_tty(filename);
>      } else 
>  #endif
>  #ifdef _WIN32
>      if (strstart(filename, "COM", NULL)) {
> -        return qemu_chr_open_win(filename);
> +        chr = qemu_chr_open_win(filename);
>      } else
>      if (strstart(filename, "pipe:", &p)) {
> -        return qemu_chr_open_win_pipe(p);
> +        chr = qemu_chr_open_win_pipe(p);
>      } else
>      if (strstart(filename, "file:", &p)) {
> -        return qemu_chr_open_win_file_out(p);
> -    }
> +        chr = qemu_chr_open_win_file_out(p);
> +    } else
>  #endif
>      {
>          return NULL;
>      }
> +
> +    if (chr)
> +     chr->filename = strdup(filename);
> +
> +    return chr;

Why is this part needed?

>  }
>  
>  void qemu_chr_close(CharDriverState *chr)
> diff -r 18e99d1e8814 vl.h
> --- a/vl.h    Sat Mar 03 21:18:48 2007 -0600
> +++ b/vl.h    Sat Mar 03 21:33:07 2007 -0600
> @@ -307,6 +307,7 @@ typedef struct CharDriverState {
>      void *opaque;
>      int focus;
>      QEMUBH *bh;
> +    char *filename;
>  } CharDriverState;

const char * ?


Thiemo




reply via email to

[Prev in Thread] Current Thread [Next in Thread]