public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: George Anzinger <george@mvista.com>
To: Arjan van de Ven <arjan@infradead.org>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>,
	Andrew Morton <akpm@osdl.org>,
	matthias@corelatus.se,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: patch to fix set_itimer() behaviour in boundary cases
Date: Wed, 19 Jan 2005 15:51:32 -0800	[thread overview]
Message-ID: <41EEF284.2010600@mvista.com> (raw)
In-Reply-To: <1105877497.8462.0.camel@laptopd505.fenrus.org>

Arjan van de Ven wrote:
> On Sun, 2005-01-16 at 00:58 +0000, Alan Cox wrote:
> 
>>On Sad, 2005-01-15 at 09:30, Andrew Morton wrote:
>>
>>>Matthias Lang <matthias@corelatus.se> wrote:
>>>These are things we probably cannot change now.  All three are arguably
>>>sensible behaviour and do satisfy the principle of least surprise.  So
>>>there may be apps out there which will break if we "fix" these things.
>>>
>>>If the kernel version was 2.7.0 then well maybe...
>>
>>These are things we should fix. They are bugs. Since there is no 2.7
>>plan pick a date to fix it. We should certainly error the overflow case
>>*now* because the behaviour is undefined/broken. The other cases I'm not
>>clear about. setitimer() is a library interface and it can do the basic
>>checking and error if it wants to be strictly posixly compliant.
> 
> 
> why error?
> I'm pretty sure we can make a loop in the setitimer code that detects
> we're at the end of jiffies but haven't upsurped the entire interval the
> user requested yet, so that the code should just do another round of
> sleeping...
> 
That would work for sleep (but glibc uses nanosleep for that) but an itimer 
delivers a signal.  Rather hard to trap that in glibc.

For what its worth, you can tell it was truncated by reading back the remaining 
time.  That could be done in the glibc wrapper and an error passed back, but 
actually doing the proper wait using this interface is rather hard.

The timer_settime(CLOCK...  interface detects overflow and passes back an error...

Clock_nanosleep on the otherhand, will sleep for the whole time, provide the 
machine doesn't turn to dust :)
-- 
George Anzinger   george@mvista.com
High-res-timers:  http://sourceforge.net/projects/high-res-timers/


  reply	other threads:[~2005-01-19 23:56 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-01-15  8:45 patch to fix set_itimer() behaviour in boundary cases Matthias Lang
2005-01-15  9:30 ` Andrew Morton
2005-01-15  9:36   ` William Lee Irwin III
2005-01-15  9:58     ` Arjan van de Ven
2005-01-15 10:07       ` William Lee Irwin III
2005-01-15 19:55       ` Chris Wedgwood
2005-01-15 20:20         ` Arjan van de Ven
2005-01-15 23:25           ` Matthias Lang
2005-01-15 23:39             ` Randy.Dunlap
2005-01-16  0:58   ` Alan Cox
2005-01-16 12:11     ` Arjan van de Ven
2005-01-19 23:51       ` George Anzinger [this message]
2005-01-20  8:07         ` Arjan van de Ven
2005-01-20 23:12           ` George Anzinger
2005-01-21  7:49             ` Arjan van de Ven
2005-01-21  8:22               ` George Anzinger

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=41EEF284.2010600@mvista.com \
    --to=george@mvista.com \
    --cc=akpm@osdl.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=arjan@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=matthias@corelatus.se \
    /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