From: Jean Delvare <khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org>
To: David Brownell <david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
Cc: i2c-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org
Subject: Re: [patch 2.6.25-git] i2c_adapters: return -Errno not -1
Date: Mon, 12 May 2008 16:05:37 +0200 [thread overview]
Message-ID: <20080512160537.13e7739a@hyperion.delvare> (raw)
In-Reply-To: <200805110923.44693.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
On Sun, 11 May 2008 09:23:43 -0700, David Brownell wrote:
> On Sunday 11 May 2008, you wrote:
> > My point exactly. I am fine with both -ENXIO and -ENODEV, pick the one
> > you like, then make sure all drivers are using it consistently.
>
> I'll go with ENXIO "no such device or address" as being a bit more
> appropriate for addressing issues. Driver probe() code can return
> ENODEV in the case where there is a device there ... but the wrong
> one for that driver.
OK, fine with me.
> > (...)
> > When calling strerror on EILSEQ, you get: "Invalid or incomplete
> > multibyte or wide character".
>
> While "man 1 errno" says "Illegal byte sequence" ...
Yes, it's unfortunately inconsistent. Ideally man 1 errno would be
generated automatically by calling strerror on all error codes.
> > (...)
> > The returned value depends on an argument provided by the caller,
> > though.
>
> Among an arbitrary number of other things. It could also be
> just bad device firmware ... I have in fact seen such cases:
> perfectly valid SMBus requests generating bogus responses.
>
> (This happened to be on shipping hardware, but of course it's
> also easy to imagine that in developer setups too...)
>
> Rule of thumb: make the fault report reflect observation, not
> guesses about what caused the behavior. It's harder to get it
> wrong that way.
I have to agree...
> > (...)
> > That's not an illegal "sequence", sorry. The length byte by itself is
> > either valid or not valid. What we saw is an illegal byte value.
>
> It's part of a sequence. The length byte will usually be the fourth
> byte of the sequence:
>
> S addr/w [A] command [A] S addr/r [A] [length] A ... P
>
> That value is perfectly legal ... it's just that in that location
> within *THIS* byte sequence, it's trouble. Mostly because that
> byte is being interpreted; in other contexts, that sequence is fine.
Going down that route, everything is part of a sequence, so we would
have to stop using -EINVAL and use -EILSEQ everywhere. Numbers by
themselves are never invalid, what makes them invalid is the context in
which they are encountered, and for a computer, a given context has to
come from a sequence of some kind.
So I'm not buying this, sorry. Especially when the first 3 bytes are
emitted by the master and the 4th one comes from the slave, calling
them a sequence as a whole is almost dishonest ;)
> > If you are still worried that -EINVAL has a small chance of not being
> > correct, I'd rather go for -EMSGSIZE (Message too long), although the
> > error message would be confusing in the 0 case.
>
> Right...
>
> > Even -EOVERFLOW (Value too large for defined data type)
>
> ... also confusing in the 0 case, and also wrong for PMBus (where
> values 1..255 are all valid so it can't be "too large").
>
> > would be more appropriate than -EILSEQ, I think.
>
> How about "-EPROTO" for protocol error, then, if you're so
> strongly opposed to "illegal byte sequence"? The reason I
> avoided EPROTO in that case is that it's so generic; while
> we could use EILSEQ to indicate this specific case.
-EPROTO sounds good to me. We're not using it anywhere in the i2c
subsystem so there's no need to worry about it being "too generic".
Thanks,
--
Jean Delvare
_______________________________________________
i2c mailing list
i2c-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org
http://lists.lm-sensors.org/mailman/listinfo/i2c
next prev parent reply other threads:[~2008-05-12 14:05 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-02 3:46 [patch 2.6.25-git] i2c_adapters: return -Errno not -1 David Brownell
[not found] ` <200805012046.07885.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-05-10 18:18 ` Jean Delvare
[not found] ` <20080510201825.489198d2-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-05-11 7:32 ` David Brownell
2008-05-12 16:48 ` David Brownell
[not found] ` <200805120948.23842.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-05-14 12:17 ` Jean Delvare
[not found] ` <20080514141738.327be680-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-05-14 14:48 ` David Brownell
2008-05-14 14:50 ` David Brownell
[not found] ` <200805140750.49365.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-05-15 18:33 ` Jean Delvare
2008-05-10 20:55 ` Jean Delvare
[not found] ` <20080510225548.36297637-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-05-11 8:17 ` David Brownell
[not found] ` <200805110117.23023.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-05-11 10:26 ` Jean Delvare
[not found] ` <20080511122647.1e04c9c0-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-05-11 16:23 ` David Brownell
[not found] ` <200805110923.44693.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-05-12 14:05 ` Jean Delvare [this message]
[not found] ` <20080512160537.13e7739a-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-05-12 16:44 ` David Brownell
2008-05-11 17:13 ` David Brownell
[not found] ` <200805111013.25440.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-05-12 13:05 ` Jean Delvare
[not found] ` <20080512150512.1837e3e7-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-05-12 16:25 ` David Brownell
[not found] ` <200805120925.33533.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-05-12 16:54 ` Jean Delvare
[not found] ` <20080512185439.1a9cf3c1-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-05-12 17:08 ` David Brownell
2008-05-11 17:16 ` David Brownell
2008-05-12 16:43 ` David Brownell
[not found] ` <200805120943.04899.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-05-15 17:16 ` Jean Delvare
[not found] ` <20080515191631.7791346c-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-05-18 0:54 ` David Brownell
[not found] ` <200805171754.15976.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-05-18 7:06 ` Jean Delvare
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=20080512160537.13e7739a@hyperion.delvare \
--to=khali-puyad+kwke1g9huczpvpmw@public.gmane.org \
--cc=david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org \
--cc=i2c-GZX6beZjE8VD60Wz+7aTrA@public.gmane.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox