All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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.