mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Thomas Gleixner <tglx@linutronix.de>
To: Roman Zippel <zippel@linux-m68k.org>
Cc: Andrew Morton <akpm@osdl.org>, Ingo Molnar <mingo@elte.hu>,
	george@mvista.com, linux-kernel@vger.kernel.org,
	johnstul@us.ibm.com, paulmck@us.ibm.com, hch@infradead.org,
	oleg@tv-sign.ru, tim.bird@am.sony.com
Subject: Re: [PATCH]  ktimers subsystem 2.6.14-rc2-kt5
Date: Mon, 17 Oct 2005 22:55:12 +0200	[thread overview]
Message-ID: <1129582512.19559.136.camel@tglx.tec.linutronix.de> (raw)
In-Reply-To: <Pine.LNX.4.61.0510171511010.1386@scrub.home>

On Mon, 2005-10-17 at 18:25 +0200, Roman Zippel wrote:
> It's rather simple:
> - "timer API" vs "timeout API": I got absolutely no acknowlegement that 
> this might be a little confusing and in consequence "process timer" may be 
> a better name.

Not only me, also a lot of other people do _not_ find it confusing and I
explained why it is a clear technical distcinction. I also explained why
I think that process_timers is too restrictive IMO.

I accept that you find it confusing, but I dont understand neither what
kind of acknowledgement you want nor how you deduce my obligation for
acknowledging whatever.

> - I pointed out various (IMO) unnecessary complexities, which were rather 
> quickly brushed off e.g. with a need for further (not closer specified) 
> cleanups.

The so called complexities are a not various. You complained about
exactly 5 members of the ktimer structure. 

- list, expired, status, interval, overrun

which are superflous in your opinion.

Again an explanation for each :

list: 
allows fast access to the time sorted list without walking the rbtree
and is a preliminary for the extension to high resolution timers.

-----------

expired:
The field was added for simplification of some delta calculations in the
return path. e.g. nanosleep in the expired case to avoid the extra call
to get the current time. Also quite useful for debugging.

-----------

status:
A simple field, which stores at the moment 2 states and is necessary for
extensions to high resolution timers too, as we have more states there. 
The suggested usage of the rbnode.parent pointer is wrong IMO as the
overloading of arbitrary pointers for status information is a kind of
pseudo optimization which is reducing in fact maintainability and
clarity for a the win of a 32bit variable.

-----------

interval, overrun:
Interval holds the converted interval value for itimers. The overrun
member is used by the rearm code so the caller can figure out the number
of missed events. 

The cleanup I pointed out for the posix timer interval timers is pretty
obvious. It makes use of interval and overrun and removes two members of
the posix timer structure.

-----------

The size of the ktimer structure is a matter of micro optimizations in
the same way as the macros/inlines are. 

Calling the pure existence of some struct members complexity is an
exaggeration and contradicts your own request for a simple and clear
design. 

The implementation was done clear and simple from the very beginning and
I really dont understand why the preparation for further extensions in
the first place is bad. 

Doing a design with the final goal in mind is much cleaner than doing
micro optimizations in the first place and afterwards working around
them when you apply extensions.

> - resolution handling: at what resolution should/does the kernel work and 
> what do we report to user space. The spec allows multiple interpretations 
> and I have a hard time to get at least one coherent interpretation out of 
> Thomas.

I interpret the spec in the way I do for following reasons:

1. It is _usual practice_ to return the "timer" resolution for
clock_res() and to return clock values with as much resolution as
possible. In no case should the actual clock resolution be less than
what clock_res() returns.
- George Anzinger in this thread. Similar opinions can be found via
Google. I came to the same conclusion and saw no reason to repeat
Georges statement. I thought a simple pointer would be sufficient.

2. The rounding to the resolution value is explicitly required by the
standard.

3. It makes a lot of sense to do what (1.) describes, due to the fact
that we actually want to restrict the timer resolution to avoid
interrupt and reprogramming floods in very short intervals. This in fact
is the default behaviour in a jiffy driven environment. Pretending a
real nsec resolution and doing no rounding at all is violating (2.).
>From an application programmers view it makes sense to return the timer
resolution so he actually can adjust the program behaviour on the
provided resolution and not rely on wild guess assumptions about what
might be there. Applications need to be able to verify whether the
system can handle the required intervals or not.

	tglx



  parent reply	other threads:[~2005-10-17 20:52 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-28 20:43 tglx
2005-09-28 23:59 ` Frank Sorenson
2005-09-29  0:50   ` Frank Sorenson
2005-09-29  0:56     ` john stultz
2005-09-29  1:05       ` Frank Sorenson
2005-09-29  1:10 ` john stultz
2005-09-29  6:53   ` Thomas Gleixner
2005-09-30 15:58     ` Frank Sorenson
2005-09-29 19:57 ` George Anzinger
2005-10-01  1:03 ` Roman Zippel
2005-10-01 11:22   ` Ingo Molnar
2005-10-04  1:59     ` George Anzinger
2005-10-04  5:51       ` Ingo Molnar
2005-10-10 12:42     ` Roman Zippel
2005-10-10 14:04       ` Ingo Molnar
2005-10-01 12:05   ` Thomas Gleixner
2005-10-10 17:22     ` Roman Zippel
2005-10-11  7:42       ` Thomas Gleixner
2005-10-12 22:36         ` Roman Zippel
2005-10-12 23:46           ` George Anzinger
2005-10-16 16:34             ` Roman Zippel
2005-10-16 19:26               ` Thomas Gleixner
2005-10-16 23:03                 ` Roman Zippel
2005-10-17  7:59                   ` Ingo Molnar
2005-10-17  8:26                     ` Steven Rostedt
2005-10-17  9:29                     ` Roman Zippel
2005-10-17  9:41                       ` Ingo Molnar
2005-10-17  9:56                         ` Andrew Morton
2005-10-17 11:00                           ` Ingo Molnar
2005-10-17 16:25                           ` Roman Zippel
2005-10-17 16:49                             ` Tim Bird
2005-10-17 17:26                               ` Steven Rostedt
2005-10-17 18:49                               ` Roman Zippel
2005-10-17 19:19                                 ` Tim Bird
2005-10-17 19:48                                   ` Roman Zippel
2005-10-17 20:13                                     ` Ingo Molnar
2005-10-17 20:31                                       ` Roman Zippel
2005-10-18  8:46                                         ` Ingo Molnar
2005-10-18 23:52                                           ` Tim Bird
2005-10-19  0:03                                             ` George Anzinger
2005-10-19  1:58                                           ` Roman Zippel
2005-10-19  6:46                                             ` Ingo Molnar
2005-10-19 10:49                                             ` kernel/timer.c design (was: Re: ktimers subsystem) Ingo Molnar
2005-10-19 17:48                                               ` kernel/timer.c design Tim Bird
2005-10-19 18:00                                               ` Tim Bird
2005-10-19 19:04                                                 ` Thomas Gleixner
2005-10-19 22:12                                               ` kernel/timer.c design (was: Re: ktimers subsystem) Roman Zippel
2005-10-19 11:40                                             ` [PATCH] ktimers subsystem 2.6.14-rc2-kt5 Ingo Molnar
2005-10-19 11:58                                             ` Ingo Molnar
2005-10-19 22:24                                               ` Roman Zippel
2005-10-17 20:09                                 ` Ingo Molnar
2005-10-17 20:55                             ` Thomas Gleixner [this message]
2005-10-18  0:07                               ` Roman Zippel
2005-10-18  1:03                                 ` George Anzinger
2005-10-19  1:26                                   ` Roman Zippel
2005-10-19  2:52                                     ` George Anzinger
2005-10-21 16:22                                       ` Roman Zippel
2005-10-23 18:17                                         ` George Anzinger
2005-10-27 20:23                                           ` Roman Zippel
2005-10-28  4:52                                             ` Steven Rostedt
2005-10-28 16:06                                               ` Roman Zippel
2005-10-17 16:33                         ` Roman Zippel
2005-10-17 16:39                           ` Ingo Molnar
2005-10-17 16:54                             ` Roman Zippel
2005-10-17 17:35                               ` Ingo Molnar
2005-10-17  9:54                       ` Steven Rostedt
2005-10-04  1:55   ` George Anzinger
2005-10-17 18:38 linux
2005-10-17 19:04 ` Roman Zippel
2005-10-17 22:41   ` linux

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=1129582512.19559.136.camel@tglx.tec.linutronix.de \
    --to=tglx@linutronix.de \
    --cc=akpm@osdl.org \
    --cc=george@mvista.com \
    --cc=hch@infradead.org \
    --cc=johnstul@us.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=oleg@tv-sign.ru \
    --cc=paulmck@us.ibm.com \
    --cc=tim.bird@am.sony.com \
    --cc=zippel@linux-m68k.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

all inboxes | Powered by JetHome®