From: Matt Mackall <mpm@selenic.com>
To: john stultz <johnstul@us.ibm.com>
Cc: Christoph Lameter <clameter@sgi.com>,
lkml <linux-kernel@vger.kernel.org>,
Tim Schmielau <tim@physik3.uni-rostock.de>,
George Anzinger <george@mvista.com>,
albert@users.sourceforge.net,
Ulrich Windl <ulrich.windl@rz.uni-regensburg.de>,
Dominik Brodowski <linux@dominikbrodowski.de>,
David Mosberger <davidm@hpl.hp.com>, Andi Kleen <ak@suse.de>,
paulus@samba.org, schwidefsky@de.ibm.com,
keith maanthey <kmannth@us.ibm.com>,
Patricia Gaughen <gone@us.ibm.com>,
Chris McDermott <lcm@us.ibm.com>, Max Asbock <masbock@us.ibm.com>,
mahuja@us.ibm.com, Nishanth Aravamudan <nacc@us.ibm.com>,
Darren Hart <darren@dvhart.com>,
"Darrick J. Wong" <djwong@us.ibm.com>,
Anton Blanchard <anton@samba.org>,
donf@us.ibm.com
Subject: Re: [RFC][PATCH] new timeofday core subsystem (v. A3)
Date: Mon, 14 Mar 2005 11:51:10 -0800 [thread overview]
Message-ID: <20050314195110.GD32638@waste.org> (raw)
In-Reply-To: <1110829401.30498.383.camel@cog.beaverton.ibm.com>
On Mon, Mar 14, 2005 at 11:43:21AM -0800, john stultz wrote:
> On Mon, 2005-03-14 at 11:29 -0800, Matt Mackall wrote:
> > On Mon, Mar 14, 2005 at 10:42:45AM -0800, john stultz wrote:
> > >
> > > > > +static inline cycle_t read_timesource(struct timesource_t* ts)
> > > > > +{
> > > > > + switch (ts->type) {
> > > > > + case TIMESOURCE_MMIO_32:
> > > > > + return (cycle_t)readl(ts->mmio_ptr);
> > > > > + case TIMESOURCE_MMIO_64:
> > > > > + return (cycle_t)readq(ts->mmio_ptr);
> > > > > + case TIMESOURCE_CYCLES:
> > > > > + return (cycle_t)get_cycles();
> > > > > + default:/* case: TIMESOURCE_FUNCTION */
> > > > > + return ts->read_fnct();
> > > > > + }
> > > > > +}
> > > >
> > > > Wouldn't it be better to change read_fnct to take a timesource * and
> > > > then change all the other guys to generic_timesource_<foo> helper
> > > > functions? This does away with the switch and makes it trivial to add
> > > > new generic sources. Change mmio_ptr to void *private.
> > >
> > > Not sure if I totally understand this, but originally I just had a read
> > > function, but to allow this framework to function w/ ia64 fsyscalls (and
> > > likely other arches vsyscalls) we need to pass the raw mmio pointers.
> > > Thus the timesource type and switch idea was taken from the time
> > > interpolator code.
> >
> > Well for vsyscall, we can leave the mmio_ptr and type. But in-kernel,
> > I think we'd rather always call read_fnct with generic helpers than hit this
> > switch every time.
>
> Huh. So if I understand you properly, all timesources should have valid
> read_fnct pointers that return the cycle value, however we'll still
> preserve the type and mmio_ptr so fsyscall/vsyscall bits can use them
> externally?
Well where we'd read an MMIO address, we'd simply set read_fnct to
generic_timesource_mmio32 or so. And that function just does the read.
So both that function and read_timesource become one-liners and we
drop the conditional branches in the switch.
--
Mathematics is the supreme nostalgia of our time.
next prev parent reply other threads:[~2005-03-14 19:52 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-03-12 1:24 [RFC][PATCH] new timeofday core subsystem (v. A3) john stultz
2005-03-12 1:25 ` [RFC][PATCH] new timeofday arch specific hooks " john stultz
2005-03-12 1:26 ` [RFC][PATCH] new timeofday arch specific timesource drivers " john stultz
2005-03-12 5:52 ` [RFC][PATCH] new timeofday arch specific hooks " Benjamin Herrenschmidt
2005-03-14 18:09 ` john stultz
2005-03-15 22:59 ` Pavel Machek
2005-03-15 23:42 ` john stultz
2005-03-15 23:44 ` Pavel Machek
2005-03-16 1:44 ` john stultz
2005-03-16 10:53 ` Pavel Machek
2005-03-13 0:49 ` [RFC][PATCH] new timeofday core subsystem " Matt Mackall
2005-03-13 1:46 ` Andreas Schwab
2005-03-14 18:42 ` john stultz
2005-03-14 19:29 ` Matt Mackall
2005-03-14 19:43 ` john stultz
2005-03-14 19:51 ` Matt Mackall [this message]
2005-03-14 20:04 ` john stultz
2005-03-14 20:27 ` Matt Mackall
2005-03-15 0:01 ` Christoph Lameter
2005-03-15 2:16 ` Albert Cahalan
2005-03-15 3:22 ` Christoph Lameter
2005-03-15 15:23 ` Albert Cahalan
2005-03-15 15:52 ` Chris Friesen
2005-03-17 16:55 ` Russell King
2005-03-17 19:44 ` Albert Cahalan
2005-03-17 20:28 ` Russell King
2005-03-15 0:28 ` Christoph Lameter
2005-03-15 0:43 ` john stultz
2005-03-14 23:40 ` George Anzinger
2005-03-15 1:11 ` [topic change] jiffies as a time value john stultz
2005-03-15 23:01 ` George Anzinger
2005-03-16 3:57 ` john stultz
2005-03-15 0:07 ` [RFC][PATCH] new timeofday core subsystem (v. A3) Christoph Lameter
2005-03-15 5:37 ` Christoph Lameter
2005-03-15 18:25 ` john stultz
2005-03-15 22:08 ` George Anzinger
2005-03-17 8:15 ` Ulrich Windl
2005-03-15 6:09 ` Christoph Lameter
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=20050314195110.GD32638@waste.org \
--to=mpm@selenic.com \
--cc=ak@suse.de \
--cc=albert@users.sourceforge.net \
--cc=anton@samba.org \
--cc=clameter@sgi.com \
--cc=darren@dvhart.com \
--cc=davidm@hpl.hp.com \
--cc=djwong@us.ibm.com \
--cc=donf@us.ibm.com \
--cc=george@mvista.com \
--cc=gone@us.ibm.com \
--cc=johnstul@us.ibm.com \
--cc=kmannth@us.ibm.com \
--cc=lcm@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@dominikbrodowski.de \
--cc=mahuja@us.ibm.com \
--cc=masbock@us.ibm.com \
--cc=nacc@us.ibm.com \
--cc=paulus@samba.org \
--cc=schwidefsky@de.ibm.com \
--cc=tim@physik3.uni-rostock.de \
--cc=ulrich.windl@rz.uni-regensburg.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.