From: Graeme Russ <graeme.russ@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v1 (WIP) 00/16] [Timer]API Rewrite
Date: Tue, 12 Jul 2011 12:17:59 +1000 [thread overview]
Message-ID: <4E1BAED7.3070009@gmail.com> (raw)
In-Reply-To: <4E1B88EE.9040104@gmail.com>
On 12/07/11 09:36, Graeme Russ wrote:
> On 12/07/11 07:56, Wolfgang Denk wrote:
>> Dear Graeme Russ,
[snip]
>> Having this still in mind, I took a look across the fence to what
>> barebox is doing. Guess what? From "common/clock.c":
>>
>> * clock.c - generic clocksource implementation
>> *
>> * This file contains the clocksource implementation from the Linux
>> * kernel originally by John Stultz
>>
>> OK. Message received.
>
> Yes, and barebox is also pulling in slabs of other Linux code such as
> driver framework etc. I think you will find barebox will ultimately have a
> very large code-base and binary image because of that. I think that U-Boot
> and barebox are heading in two different directions (and so they should,
> what would be the point otherwise) - barebox will become modular but
> larger, U-Boot will continue to be homogeneous and small.
>
>> What I'm asking myself (and now you) is: Should we really re-invent
>> the wheel again?
>
> OK, I've now had a brief look and I have the following comments:
[snip]
OK, now I've had a look at the Linux code (\kernel\time\*) and Barebox
(http://git.pengutronix.de/?p=barebox.git;a=blob;f=common/clock.c;h=79c06c8ddc1b3f447f7c81bf8bb592458f895ab3;hb=HEAD)
I think I can safely say that:
a) We do not want to inherit the code from Linux. It's good code clean
code, but it is just way too much for what we need. It handles registering
and unregistering clock sources, change clock source 'rating' (what ever
that is) and relies heavily on quite heavy (for U-Boot) struct's (which may
need to be carted around in Global Data)
b) Barebox doesn't really inherit that much from Linux anyway
I think we have the basics right (and that is the same as Linux). We just
need to settle on a few finer points such as:
- Raw time interval. Linux uses nanoseconds. A 64-bit nanosecond clock
source goes for >580 years so even if the highest resolution clock
available to us right now is microsecond, it will not hurt to go with a
nanosecond time-base as that will provide us with the greatest
flexibility going forward. However, this will lead to a lot of integer
divides and/or multiplies to scale to millisecond and microsecond
intervals
- Function naming
- Performing time comparisons for timeouts - Barebox for example has a
is_timeout function which takes a start time and a delay (in
nanoseconds) an implements ndealy, udealy, and mdelay using is_timeout
I think what has been proposed here recently and documented (slightly
out-of-date) on the wiki is the way to go. Taking the Linux or Barebox
source will be more effort than it's worth for the complexity it brings in.
I recall an apt quote 'Good programmers know when to re-use, great
programmers know when to re-write'
Regards,
Graeme
next prev parent reply other threads:[~2011-07-12 2:17 UTC|newest]
Thread overview: 110+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-28 11:40 [U-Boot] [PATCH v1 (WIP) 00/16] [Timer]API Rewrite Graeme Russ
2011-06-28 11:40 ` [U-Boot] [PATCH v1 (WIP) 01/16] [Timer]Fix misuse of ARM *timer_masked() functions outside arch/arm Graeme Russ
2011-06-28 12:35 ` Andreas Bießmann
2011-07-11 21:57 ` Wolfgang Denk
2011-07-14 17:01 ` Albert ARIBAUD
2011-07-14 19:50 ` Wolfgang Denk
2011-07-14 23:24 ` Graeme Russ
2011-07-15 6:31 ` Wolfgang Denk
2011-07-15 7:00 ` Graeme Russ
2011-07-15 12:16 ` [U-Boot] [PATCH v2 1/7]Timer: Fix " Graeme Russ
2011-07-16 8:40 ` Albert ARIBAUD
2011-07-16 8:59 ` Graeme Russ
2011-07-16 9:12 ` Albert ARIBAUD
2011-07-16 9:31 ` [U-Boot] [PATCH v3 " Graeme Russ
2011-07-16 9:58 ` Albert ARIBAUD
2011-06-28 11:40 ` [U-Boot] [PATCH v1 (WIP) 02/16] [Timer]Remove calls to set_timer outside arch/ Graeme Russ
2011-07-11 21:58 ` Wolfgang Denk
2011-07-15 12:17 ` [U-Boot] [PATCH v2 2/7]Timer: Remove " Graeme Russ
2011-07-16 9:33 ` [U-Boot] [PATCH v3 " Graeme Russ
2011-07-26 12:52 ` Wolfgang Denk
2011-06-28 11:40 ` [U-Boot] [PATCH v1 (WIP) 03/16] [Timer]Remove calls to set_timer in arch/ Graeme Russ
2011-07-11 21:59 ` Wolfgang Denk
2011-07-15 12:18 ` [U-Boot] [PATCH v2 3/7]Timer: Remove set_timer completely Graeme Russ
2011-07-16 9:34 ` [U-Boot] [PATCH v3 " Graeme Russ
2011-07-26 12:52 ` Wolfgang Denk
2011-06-28 11:40 ` [U-Boot] [PATCH v1 (WIP) 04/16] [Timer]Allow reset_timer() only for Nios2 Graeme Russ
2011-07-11 22:01 ` Wolfgang Denk
2011-07-15 12:18 ` [U-Boot] [PATCH v2 4/7]Timer: Allow reset_timer() only for systems with low resolution timers Graeme Russ
2011-07-16 9:35 ` [U-Boot] [PATCH v3 " Graeme Russ
2011-07-26 12:53 ` Wolfgang Denk
2011-06-28 11:40 ` [U-Boot] [PATCH v1 (WIP) 05/16] [Timer]Remove reset_timer() for non-Nios2 arches Graeme Russ
2011-07-11 22:02 ` Wolfgang Denk
2011-07-15 0:01 ` Graeme Russ
2011-07-15 12:19 ` [U-Boot] [PATCH v2 5/7]Timer: Remove " Graeme Russ
2011-07-16 9:36 ` [U-Boot] [PATCH v3 " Graeme Russ
2011-07-26 12:53 ` Wolfgang Denk
2011-08-19 21:24 ` Mike Frysinger
2011-08-19 22:55 ` Graeme Russ
2011-08-19 23:12 ` Mike Frysinger
2011-09-28 19:24 ` Wolfgang Denk
2011-06-28 11:40 ` [U-Boot] [PATCH v1 (WIP) 06/16] [Timer]Fix at91rm9200/spi.c timer usage Graeme Russ
2011-06-28 12:30 ` Andreas Bießmann
2011-07-15 12:20 ` [U-Boot] [PATCH v2 6/7]Timer: Fix " Graeme Russ
2011-07-16 9:37 ` [U-Boot] [PATCH v3 " Graeme Russ
2011-07-26 12:54 ` Wolfgang Denk
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 07/16] [Timer]Remove reset_timer_masked() Graeme Russ
2011-07-11 22:04 ` Wolfgang Denk
2011-07-15 12:21 ` [U-Boot] [PATCH v2 7/7]Timer: Remove reset_timer_masked() Graeme Russ
2011-07-16 9:38 ` [U-Boot] [PATCH v3 " Graeme Russ
2011-07-26 12:54 ` Wolfgang Denk
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 08/16] [Timer]Create new userland timer API Graeme Russ
2011-06-29 4:31 ` Simon Glass
2011-06-29 4:36 ` Graeme Russ
2011-06-29 4:48 ` Simon Glass
2011-07-11 22:05 ` Wolfgang Denk
2011-07-11 22:32 ` Graeme Russ
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 09/16] [Timer]Replace get_timer() usage in drivers/block/ Graeme Russ
2011-06-29 4:40 ` Simon Glass
2011-06-29 5:06 ` Reinhard Meyer
2011-06-29 5:19 ` Graeme Russ
2011-06-29 5:30 ` Simon Glass
2011-06-29 5:38 ` Graeme Russ
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 10/16] [Timer]Replace get_timer() usage in driver/mtd and driver/block Graeme Russ
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 11/16] [Timer]Remove reset_timer() completely Graeme Russ
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 12/16] [Timer]Replace get_timer() usage in drivers/ Graeme Russ
2011-06-28 12:36 ` Vitaly Kuzmichev
2011-06-28 23:03 ` Graeme Russ
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 13/16] [Timer]Replace get_timer() usage in net/ Graeme Russ
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 14/16] [Timer]Replace get_timer() usage in common/ Graeme Russ
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 15/16] [Timer]Replace get_timer() usage in board/ Graeme Russ
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 16/16] [Timer]Replace get_timer() usage in arch/ Graeme Russ
2011-06-29 4:45 ` Simon Glass
2011-06-29 4:51 ` Graeme Russ
2011-06-29 5:15 ` Mike Frysinger
2011-06-29 5:26 ` Mike Frysinger
2011-06-29 5:29 ` Graeme Russ
2011-06-29 4:54 ` [U-Boot] [PATCH v1 (WIP) 00/16] [Timer]API Rewrite Graeme Russ
2011-06-29 5:08 ` Mike Frysinger
2011-06-29 5:20 ` Graeme Russ
2011-07-08 0:25 ` Graeme Russ
2011-07-09 6:01 ` Albert ARIBAUD
2011-07-11 21:56 ` Wolfgang Denk
2011-07-11 22:49 ` Graeme Russ
2011-07-11 23:36 ` Graeme Russ
2011-07-12 2:17 ` Graeme Russ [this message]
2011-07-12 8:49 ` Wolfgang Denk
2011-07-12 10:36 ` Graeme Russ
2011-07-12 13:10 ` Wolfgang Denk
2011-07-12 15:23 ` Scott McNutt
2011-07-12 17:27 ` J. William Campbell
2011-07-13 0:29 ` Graeme Russ
2011-07-14 19:30 ` Wolfgang Denk
2011-07-17 1:51 ` Graeme Russ
2011-07-12 14:30 ` J. William Campbell
2011-07-12 16:08 ` Reinhard Meyer
2011-07-13 0:33 ` Graeme Russ
2011-07-13 1:20 ` J. William Campbell
2011-07-14 19:41 ` Wolfgang Denk
2011-07-14 23:52 ` J. William Campbell
2011-07-15 7:17 ` Wolfgang Denk
2011-07-15 18:08 ` J. William Campbell
2011-07-15 18:34 ` Wolfgang Denk
2011-07-15 21:03 ` J. William Campbell
2011-07-16 14:11 ` Graeme Russ
2011-07-15 12:15 ` [U-Boot] [PATCH v2 0/7]Timer: Simplify API Graeme Russ
2011-07-15 13:08 ` Graeme Russ
2011-07-16 8:36 ` Albert ARIBAUD
2011-07-16 9:01 ` Graeme Russ
2011-07-16 9:13 ` Albert ARIBAUD
2011-07-16 9:32 ` Wolfgang Denk
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=4E1BAED7.3070009@gmail.com \
--to=graeme.russ@gmail.com \
--cc=u-boot@lists.denx.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox