public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Albert ARIBAUD <albert.u.boot@aribaud.net>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 2/2] musb: sunxi: Implement dfu_usb_get_reset()
Date: Mon, 26 Oct 2015 12:32:02 +0100	[thread overview]
Message-ID: <20151026123202.7bd69cfd@lilith> (raw)
In-Reply-To: <1445854044.28851.26.camel@hellion.org.uk>

Hello Ian,

On Mon, 26 Oct 2015 10:07:24 +0000, Ian Campbell
<ijc+uboot@hellion.org.uk> wrote:
> On Sun, 2015-10-25 at 22:16 +0100, Albert ARIBAUD wrote:
> > Hello Ian,
> > 
> > On Sun, 25 Oct 2015 19:22:00 +0000, Ian Campbell
> > <ijc+uboot@hellion.org.uk> wrote:
> > > On Sun, 2015-10-25 at 14:22 +0100, Albert ARIBAUD wrote:
> > > > On Sun, 25 Oct 2015 12:40:45 +0000, Ian Campbell
> > > > > Doesn't the bool return type already cause that to happen?
> > (from the
> > > > > PoV of the caller at least)
> > > > 
> > > > When all is said and done, a C bool is a C int,
> > > 
> > > Not if it is a _Bool (via stdbool.h or some other way).
> > > 
> > > A _Bool is always either 0 or 1, and scalar value which is
> > converted to
> > > a _Bool is converted to either 0 or 1.
> > >
> > > > So no, types, bool or otherwise, do not cause any implicit '!!'
> > to
> > > > happen.
> > > 
> > > I believe this is not correct when _Bool is used.
> > > 
> > > In u-boot a bool is indeed a _Bool (or at least I don't see any
> > other
> > > typedef's and I can see various includes on stdbool.h, I therefore
> > > didn't feel the need to check how bool is arrived at in this
> > particular
> > > file).
> > 
> > What you write is possibly correct for C++, but certainly not for C,
> > for which booleans are integers, with no compiler-enforced constraint
> > on their value domains.
> 
> I know next to nothing about C++ so I am certainly not confusing things
> with that.
> 
> The _Bool type in C99 is an integer which may take on exactly the
> values 0 or 1. Since the code which started this subthread was using
> "bool" from <stdbool.h> it is _Bool which is being discussed here.
> 
> The actual standard costs money (and is therefore unlinkable) but 
> http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf is a late
> draft and I believe this aspect is unchanged. Section 6.3.1.2 is one
> relevant part explaining that a _Bool must always be either 0 or 1:
> 
>     When any scalar value is converted to _Bool, the result is 0 if the
>     value compares equal to 0; otherwise, the result is 1.
> 
> Many of the other clauses dealing with Integers (e.g. 6.3.1.3.1) have
> had "other than _Bool" or some similar wording added to them since
> _Bool does indeed behave a little differently.
> 
> So I'm afraid I disagree with your statement, at least for C >= C99 (I
> can't recall if _Bool was in C89, but I think the answer is no).

I stand corrected: I've just checked it, and the conversion does indeed
happen on return -- at least gcc 5.2.1 -- even when, like in U-Boot
build files, c99 standard compliance is not specified.

If older GCCs (up to a point: how old a gcc are we wanting to
support?) also work this way too, the '!!' is indeed unneeded.

> Ian.

Amicalement,
-- 
Albert.

  reply	other threads:[~2015-10-26 11:32 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-25  4:44 [U-Boot] [PATCH 0/2] Enable DFU for RAM on Allwinner devices Siarhei Siamashka
2015-10-25  4:44 ` [U-Boot] [PATCH 1/2] sunxi: Enable DFU for RAM Siarhei Siamashka
2015-11-20 15:21   ` [U-Boot] [U-Boot,1/2] " Hans de Goede
2015-10-25  4:44 ` [U-Boot] [PATCH 2/2] musb: sunxi: Implement dfu_usb_get_reset() Siarhei Siamashka
2015-10-25 11:00   ` Marek Vasut
2015-10-25 11:46     ` Albert ARIBAUD
2015-10-25 12:40       ` Ian Campbell
2015-10-25 13:22         ` Albert ARIBAUD
2015-10-25 13:29           ` Marek Vasut
2015-10-25 14:46             ` Siarhei Siamashka
2015-10-25 16:08               ` Marek Vasut
2015-10-25 19:24               ` Ian Campbell
2015-10-25 20:48                 ` Siarhei Siamashka
2015-10-25 19:22           ` Ian Campbell
2015-10-25 21:16             ` Albert ARIBAUD
2015-10-26 10:07               ` Ian Campbell
2015-10-26 11:32                 ` Albert ARIBAUD [this message]
2015-10-25 14:55     ` Siarhei Siamashka
2015-10-25 16:09       ` Marek Vasut
2015-10-25 21:19       ` Albert ARIBAUD
2015-10-26 11:18 ` [U-Boot] [PATCH 0/2] Enable DFU for RAM on Allwinner devices Piotr Król
2015-10-27  4:31   ` Siarhei Siamashka
2015-10-27 23:27     ` Piotr Król
2015-10-28  4:49       ` Siarhei Siamashka

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=20151026123202.7bd69cfd@lilith \
    --to=albert.u.boot@aribaud.net \
    --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