From: Patrick Pannuto <ppannuto@codeaurora.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, apw@canonical.com, corbet@lwn.net,
Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@elte.hu>,
Arjan van de Ven <arjan@linux.intel.com>,
Akinobu Mita <akinobu.mita@gmail.com>
Subject: Re: [PATCH 1/4] timer: Added usleep[_range] timer
Date: Wed, 28 Jul 2010 13:47:46 -0700 [thread overview]
Message-ID: <4C509772.1070407@codeaurora.org> (raw)
In-Reply-To: <20100728132314.29cd68c5.akpm@linux-foundation.org>
> This is different from the patch I merged and I'm not seeing any
> explanation for the change.
>
> The implementation of usleep() looks odd. The longer we sleep, the
> greater the possible inaccuracy. A code comment which explains the
> thinking and which warns people about the implications is needed.
Yes it is different; the explanation was in the cover message. I should
probably include a copy of the explanation in the commit message as
well? It was becoming a very long commit message...
// FROM COVER MESSAGE:
This iteration is similar, with the notable difference that now
usleep has a "built-in slack" of 200%. This is analogous to msleep,
which has a built-in slack of 0.4% (since it relies on legacy timers,
which have a built-in slack of 0.4%). 200% slack is significantly
greater than 0.4%, but the scale of usleep is also significantly
different than that of msleep, and I believe 200% to be a sane
default.
It is my opinion that this interface will most often mirror what
developers actually intend - indeed some people who have begun
trying to use the API raised this point -, however, I would like
some input as it is possibly confusing that the API will "double
your sleep" by default.
The usleep_range API is still included, since it provides an
interface to override the "default slack" of 200% by providing
an explicit range, or to allow callers to specify an even larger
slack if possible.
The problem that was raised by a few people trying to use usleep here
was that the API as written was very awkward -- there was never really
a good reason to use "usleep" as it was written. The intention was
to make usleep a usable / sensible API; the obvious alternative I see
is to drop the usleep function entirely and only provide usleep_range -
which would probably fit well in your request for callers to think
about what they are doing, if providing a somewhat awkward API.
The complaint was something to the effect of:
"Well, I understand that I should probably give a range, but I have
no idea what a good range would be. I really just want it to sleep
for a little bit, but I probably shouldn't trigger an extra interrupt.
Given the limitations, what's the point of even having a usleep call
at all?"
Thoughts?
--
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum
next prev parent reply other threads:[~2010-07-28 20:48 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-28 19:33 [PATCH v2 0/4] timer: Added usleep[_range] timer Patrick Pannuto
2010-07-28 19:33 ` [PATCH 1/4] " Patrick Pannuto
2010-07-28 20:23 ` Andrew Morton
2010-07-28 20:47 ` Patrick Pannuto [this message]
2010-07-28 20:58 ` Andrew Morton
2010-07-28 21:04 ` Arjan van de Ven
2010-07-28 21:11 ` Patrick Pannuto
2010-07-28 21:22 ` Andrew Morton
2010-07-28 21:25 ` Arjan van de Ven
2010-07-28 21:05 ` Patrick Pannuto
2010-07-28 21:23 ` Andrew Morton
2010-07-28 21:26 ` Arjan van de Ven
2010-07-28 19:33 ` [PATCH 2/4] Documentation: Add timers/timers-howto.txt Patrick Pannuto
2010-07-28 19:33 ` [PATCH 3/4] Checkpatch: prefer usleep over udelay Patrick Pannuto
2010-07-28 20:24 ` Andrew Morton
2010-07-28 19:33 ` [PATCH 4/4] Checkpatch: warn about unexpectedly long msleep's Patrick Pannuto
2010-07-28 20:24 ` Andrew Morton
2010-07-28 20:48 ` Patrick Pannuto
2010-08-03 19:12 ` [PATCH v2 0/4] timer: Added usleep[_range] timer Pavel Machek
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=4C509772.1070407@codeaurora.org \
--to=ppannuto@codeaurora.org \
--cc=akinobu.mita@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=apw@canonical.com \
--cc=arjan@linux.intel.com \
--cc=corbet@lwn.net \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=tglx@linutronix.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 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.