All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Andreas Färber" <afaerber@suse.de>
To: gxt@mprc.pku.edu.cn
Cc: blauwirbel@gmail.com,
	Zhang Mengchi <zhangmengchi@mprc.pku.edu.cn>,
	qemu-devel@nongnu.org, chenwj@iis.sinica.edu.tw
Subject: Re: [Qemu-devel] [PATCHv2] unicore32-softmmu: Add a minimal curses screen support
Date: Wed, 01 Aug 2012 16:23:51 +0200	[thread overview]
Message-ID: <50193BF7.80601@suse.de> (raw)
In-Reply-To: <6e00a77f0ea5e11b7a060803040d4e58bf935c01.1343790517.git.gxt@mprc.pku.edu.cn>

Am 01.08.2012 05:09, schrieb gxt@mprc.pku.edu.cn:
> From: Guan Xuetao <gxt@mprc.pku.edu.cn>
> 
> This patch adds a minimal curses screen support for unicore32-softmmu.
> We assume 80*30 screen size to minimize the implementation.
> Two problems are not solved, but they are innocuous.
> 1. curses windows will be blank when switching to monitor screen and back
> 2. backspace is not handled yet
> 
> v1->v2: add extra handler for '\r'
> 
> Signed-off-by: Zhang Mengchi <zhangmengchi@mprc.pku.edu.cn>
> Signed-off-by: Guan Xuetao <gxt@mprc.pku.edu.cn>
> ---
>  target-unicore32/helper.c |   45 +++++++++++++++++++++++++++++++++++++++++++--
>  1 files changed, 43 insertions(+), 2 deletions(-)
> 
> diff --git a/target-unicore32/helper.c b/target-unicore32/helper.c
> index d6eb758..d21e7df 100644
> --- a/target-unicore32/helper.c
> +++ b/target-unicore32/helper.c
> @@ -13,6 +13,7 @@
>  #include "gdbstub.h"
>  #include "helper.h"
>  #include "host-utils.h"
> +#include "console.h"
>  
>  #undef DEBUG_UC32
>  
> @@ -186,10 +187,50 @@ uint32_t helper_cp0_get(CPUUniCore32State *env, uint32_t creg, uint32_t cop)
>      return 0;
>  }
>  
> +#ifdef CONFIG_CURSES
> +/*
> + * FIXME:
> + *     1. curses windows will be blank when switching back
> + *     2. backspace is not handled yet
> + */
> +static void putc_on_screen(unsigned char ch)
> +{
> +    static WINDOW *localwin;
> +    static int init;
> +
> +    if (!init) {
> +        /* Assume 80 * 30 screen to minimize the implementation */
> +        localwin = newwin(30, 80, 0, 0);
> +        scrollok(localwin, TRUE);
> +        init = TRUE;
> +    }
> +
> +    if (isprint(ch)) {
> +        wprintw(localwin, "%c", ch);
> +    } else {
> +        switch (ch) {
> +        case '\n':
> +            wprintw(localwin, "%c", ch);
> +            break;
> +        case '\r':
> +            /* If '\r' is put before '\n', the curses window will destroy the
> +             * last print line. And meanwhile, '\n' implifies '\r' inside. */
> +            break;
> +        default: /* Not handled, so just print it hex code */
> +            wprintw(localwin, "-- 0x%h --", ch);
> +        }
> +    }
> +
> +    wrefresh(localwin);
> +}
> +#else
> +#define putc_on_screen(c)               do { } while (0)
> +#endif
> +
>  void helper_cp1_putc(target_ulong x)
>  {
> -    /* TODO: curses display should be added here for screen output. */
> -    DPRINTF("%c", x);
> +    putc_on_screen((unsigned char)x);   /* Output to screen */
> +    DPRINTF("%c", x);                   /* Output to stdout */
>  }
>  #endif
>  

Why is a TCG helper missing with curses directly? Shouldn't that use
QEMU's console infrastructure and leave it to the user whether to use
curses as a backend at runtime?

What is the problem you are trying to solve? If you just need scrolling
support you can already use -curses, -nographic and friends...

Regards,
Andreas

-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg

  reply	other threads:[~2012-08-01 14:24 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <cover.1343790517.git.gxt@mprc.pku.edu.cn>
2012-08-01  3:09 ` [Qemu-devel] [PATCHv2] unicore32-softmmu: Add a minimal curses screen support gxt
2012-08-01 14:23   ` Andreas Färber [this message]
2012-08-02  3:53     ` guanxuetao

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=50193BF7.80601@suse.de \
    --to=afaerber@suse.de \
    --cc=blauwirbel@gmail.com \
    --cc=chenwj@iis.sinica.edu.tw \
    --cc=gxt@mprc.pku.edu.cn \
    --cc=qemu-devel@nongnu.org \
    --cc=zhangmengchi@mprc.pku.edu.cn \
    /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.