All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thiemo Seufer <ths@networkno.de>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] Add info commands for serial/parallel devices
Date: Mon, 19 Mar 2007 16:13:42 +0000	[thread overview]
Message-ID: <20070319161342.GC28895@networkno.de> (raw)
In-Reply-To: <45EA3F28.5030807@codemonkey.ws>

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	other threads:[~2007-03-19 16:15 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-03-04  3:38 [Qemu-devel] [PATCH] Add info commands for serial/parallel devices Anthony Liguori
2007-03-19 16:13 ` Thiemo Seufer [this message]
2007-03-20 14:05   ` Anthony Liguori
2007-03-20 14:48     ` M. Warner Losh
2007-03-20 15:02       ` Andreas Schwab

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070319161342.GC28895@networkno.de \
    --to=ths@networkno.de \
    --cc=anthony@codemonkey.ws \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.