public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Mike Frysinger <vapier@gentoo.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] Sandbox question
Date: Mon, 23 Apr 2012 16:57:16 -0400	[thread overview]
Message-ID: <201204231657.18531.vapier@gentoo.org> (raw)
In-Reply-To: <20120423193342.AF358200261@gemini.denx.de>

On Monday 23 April 2012 15:33:42 Wolfgang Denk wrote:
> Mike Frysinger wrote:
> > > I don't see why we cannot simply read from stdin (or rathr from file
> > > descriptor 0) as usual?
> > 
> > the "usual" method of reading from stdin involves the tty doing buffering
> > and the application only seeing fully flushed lines.  thus it would not
> > operate the
> 
> That's why I wrote "or rather from fd 0".

reading directly from fd 0 makes no difference.  stdin is stdin.  if stdin is 
backed by a tty, you need to behave differently than if it's backed by a pipe.

> > same as the hardware (where u-boot gets every char as you type) and you
> > wouldn't be able to handle things like tab completion.
> 
> C'me on.  That's a standard issue.  We know how to handle this, right?

and it's being handled already in the code because i submitted a patch to do 
so.  my point was that sandbox can't read from stdin "as usual".

> > > You can use standard methods like select() or poll() to wait for input,
> > > which will also inform you about events like EOF.
> > 
> > because that isn't how u-boot on the hardware works.  u-boot itself calls
> > tstc() to see if there's any data and does so in a continuous loop.  when
> > there is data, it calls getc().  tstc() should not block, and getc()
> > isn't call unless u-boot knows there's data.
> 
> That's why I suggested to use select() or poll() to poll for available
> characters, just like the hardware does.  Only we do NOT want to tun
> this in a tight loop.  We will most likely want to add a sufficiently
> large delay to keep CPU load in reasonable bounds.

where exactly do you propose adding this delay ?  tstc() is called in many 
places (not just the main console loop), many of which are done simply to 
handle the unlikely CTRL+C interrupt.  thus we don't want tstc() delaying at 
all or it'll slow down random CPU-bound operations.

also, what you're proposing is changing the behavior of u-boot when it's in 
the sandbox so that it acts less like the hardware.  when you run u-boot on 
the hardware and it's sitting at the prompt, u-boot is running the cpu at 
100%.

> > it is also problematic (currently) to get access to errno from the C
> > library because u-boot itself has a variable called "errno".  so we
> > cannot call the C
> 
> Why invent new methods when we can encapsulate this in the input
> interface?

i'm not inventing new methods.  i'm telling you that the sandbox OS layer 
today cannot access the C library's errno because u-boot's own implementation 
of errno is overriding it.  so any call sandbox makes to the OS (like read() 
or select() or poll()) that results in an error, sandbox has no way of knowing 
the underlying reason.

> We do not even have to pass EOF on to higher layers in U-Boot - we
> could exit directly in the tty interface code.

yes, we can special case the sandbox-specific serial driver and have it call 
the sandbox-specific exit function when EOF is reached.

if it's a pipe, we can do it in the tstc() func by waiting until POLLIN is 
cleared and POLLHUP is set.

if it's a tty, the eof key (CTRL+D by default) will emit an EOT byte (0x04) 
which we will read in getc().  that is, if we want to actually support this.  
after all, doing CTRL+D on a serial port won't cause the board to reset, so 
i'm not sure the sandbox shell should exit either.  plus, this would get in 
the way of code reading arbitrary data.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120423/e7ce5e8d/attachment.pgp>

  reply	other threads:[~2012-04-23 20:57 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-23  6:41 [U-Boot] Sandbox question Wolfgang Denk
2012-04-23 15:41 ` Mike Frysinger
2012-04-23 17:32   ` Matthias Weisser
2012-04-23 17:39     ` Wolfgang Denk
2012-04-23 17:49       ` Matthias Weisser
2012-04-23 18:30         ` Wolfgang Denk
2012-04-24  9:25           ` Matthias Weißer
2012-04-23 17:58   ` Simon Glass
2012-04-23 18:39     ` Wolfgang Denk
2012-04-23 18:54       ` Mike Frysinger
2012-04-23 19:03       ` Mike Frysinger
2012-04-23 19:33         ` Wolfgang Denk
2012-04-23 20:57           ` Mike Frysinger [this message]
2012-04-23 21:16             ` Mike Frysinger
2012-04-23 21:17             ` Wolfgang Denk
2012-04-23 21:32               ` Mike Frysinger
2012-04-23 21:51 ` [U-Boot] Sandbox: auto exiting on pipe closure Mike Frysinger
2012-08-09 20:39   ` Wolfgang Denk
2012-08-10  0:47     ` Mike Frysinger
  -- strict thread matches above, loose matches on Subject: below --
2013-12-06 23:36 [U-Boot] [PATCH 0/8] Secure boot improvements and test on Beaglebone Black Simon Glass
2013-12-30  7:40 ` [U-Boot] sandbox question TigerLiu at viatech.com.cn
2013-12-31  0:42   ` TigerLiu at viatech.com.cn
2014-01-07 23:58     ` Simon Glass
2014-01-08  0:52       ` TigerLiu at viatech.com.cn
2014-01-08  3:46         ` Abraham Varricatt
2014-01-08 10:30           ` TigerLiu at viatech.com.cn
2011-12-01 16:35 [U-Boot] Sandbox question Andreas Bießmann
2011-12-01 18:13 ` Simon Glass
2011-12-01 19:21 ` Mike Frysinger

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=201204231657.18531.vapier@gentoo.org \
    --to=vapier@gentoo.org \
    --cc=u-boot@lists.denx.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox