From: Rob Landley <rob@landley.net>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Sam Ravnborg <sam@ravnborg.org>,
Embedded Linux mailing list <linux-embedded@vger.kernel.org>,
linux-kernel@vger.kernel.org,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH 1/3]: Replace kernel/timeconst.pl with kernel/timeconst.sh
Date: Sat, 3 Jan 2009 19:32:51 -0600 [thread overview]
Message-ID: <200901031932.51873.rob@landley.net> (raw)
In-Reply-To: <495E6BEE.1000805@zytor.com>
On Friday 02 January 2009 13:33:02 H. Peter Anvin wrote:
> Rob Landley wrote:
> > You mean "The new shell script is much simpler, about 1/4 the size, runs
> > on Red Hat 9 from 2003, and isn't perl?" :)
>
> And introduces unclear environment dependencies depending on how
> external utilities are implemented.
I note that sed and printf and such are all susv3. I have an explicit test
for 32 bit math in the script that cares, and this worked in Red Hat 9 circa
2003.
I consider this a step up from code with an implicit dependency on a CPAN
library.
> The whole point of why that script was written in Perl was to have
> access to arbitrary-precision arithmetic -- after it was shown that bc
> would simply lock up on some systems.
A) I'm not using bc.
B) You don't need arbitrary precision arithmetic, you need around 72 bits
worth of arithmetic for the pathological case.
C) Your definition of "access to arbitrary-precision arithmetic" includes the
following, cut and paste verbatim from your old script:
# Precomputed values for systems without Math::BigInt
# Generated by:
# timeconst.pl --can 24 32 48 64 100 122 128 200 250 256 300 512 1000 1024
1200
%canned_values = (
24 => [
'0xa6aaaaab','0x2aaaaaa',26,
125,3,
'0xc49ba5e4','0x1fbe76c8b4',37,
3,125,
'0xa2c2aaab','0xaaaa',16,
125000,3,
'0xc9539b89','0x7fffbce4217d',47,
3,125000,
], 32 => [
'0xfa000000','0x6000000',27,
125,4,
'0x83126e98','0xfdf3b645a',36,
4,125,
'0xf4240000','0x0',17,
31250,1,
'0x8637bd06','0x3fff79c842fa',46,
1,31250,
], 48 => [
'0xa6aaaaab','0x6aaaaaa',27,
125,6,
'0xc49ba5e4','0xfdf3b645a',36,
6,125,
'0xa2c2aaab','0x15555',17,
62500,3,
'0xc9539b89','0x3fffbce4217d',46,
3,62500,
], 64 => [
'0xfa000000','0xe000000',28,
125,8,
'0x83126e98','0x7ef9db22d',35,
8,125,
'0xf4240000','0x0',18,
15625,1,
'0x8637bd06','0x1fff79c842fa',45,
1,15625,
], 100 => [
'0xa0000000','0x0',28,
10,1,
'0xcccccccd','0x733333333',35,
1,10,
'0x9c400000','0x0',18,
10000,1,
'0xd1b71759','0x1fff2e48e8a7',45,
1,10000,
], 122 => [
'0x8325c53f','0xfbcda3a',28,
500,61,
'0xf9db22d1','0x7fbe76c8b',35,
61,500,
'0x8012e2a0','0x3ef36',18,
500000,61,
'0xffda4053','0x1ffffbce4217',45,
61,500000,
], 128 => [
'0xfa000000','0x1e000000',29,
125,16,
'0x83126e98','0x3f7ced916',34,
16,125,
'0xf4240000','0x40000',19,
15625,2,
'0x8637bd06','0xfffbce4217d',44,
2,15625,
], 200 => [
'0xa0000000','0x0',29,
5,1,
'0xcccccccd','0x333333333',34,
1,5,
'0x9c400000','0x0',19,
5000,1,
'0xd1b71759','0xfff2e48e8a7',44,
1,5000,
], 250 => [
'0x80000000','0x0',29,
4,1,
'0x80000000','0x180000000',33,
1,4,
'0xfa000000','0x0',20,
4000,1,
'0x83126e98','0x7ff7ced9168',43,
1,4000,
], 256 => [
'0xfa000000','0x3e000000',30,
125,32,
'0x83126e98','0x1fbe76c8b',33,
32,125,
'0xf4240000','0xc0000',20,
15625,4,
'0x8637bd06','0x7ffde7210be',43,
4,15625,
], 300 => [
'0xd5555556','0x2aaaaaaa',30,
10,3,
'0x9999999a','0x1cccccccc',33,
3,10,
'0xd0555556','0xaaaaa',20,
10000,3,
'0x9d495183','0x7ffcb923a29',43,
3,10000,
], 512 => [
'0xfa000000','0x7e000000',31,
125,64,
'0x83126e98','0xfdf3b645',32,
64,125,
'0xf4240000','0x1c0000',21,
15625,8,
'0x8637bd06','0x3ffef39085f',42,
8,15625,
], 1000 => [
'0x80000000','0x0',31,
1,1,
'0x80000000','0x0',31,
1,1,
'0xfa000000','0x0',22,
1000,1,
'0x83126e98','0x1ff7ced9168',41,
1,1000,
], 1024 => [
'0xfa000000','0xfe000000',32,
125,128,
'0x83126e98','0x7ef9db22',31,
128,125,
'0xf4240000','0x3c0000',22,
15625,16,
'0x8637bd06','0x1fff79c842f',41,
16,15625,
], 1200 => [
'0xd5555556','0xd5555555',32,
5,6,
'0x9999999a','0x66666666',31,
6,5,
'0xd0555556','0x2aaaaa',22,
2500,3,
'0x9d495183','0x1ffcb923a29',41,
3,2500,
]
);
Plus a decent chunk of the remaining logic was code to regenerate that table,
and to figure out when to use the table and when to compute new values. (And
erroring out if the system wasn't capable of doing so.) I don't understand
why you didn't just precompute the actual header file output instead or
precomputing perl source, but that's a side issue.
Rob
next prev parent reply other threads:[~2009-01-04 1:32 UTC|newest]
Thread overview: 129+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-02 8:07 PATCH [0/3]: Simplify the kernel build by removing perl Rob Landley
2009-01-02 8:13 ` [PATCH 1/3]: Replace kernel/timeconst.pl with kernel/timeconst.sh Rob Landley
2009-01-02 9:04 ` Sam Ravnborg
2009-01-02 12:00 ` Rob Landley
2009-01-02 19:33 ` H. Peter Anvin
2009-01-04 1:32 ` Rob Landley [this message]
2009-01-04 1:35 ` H. Peter Anvin
2009-01-04 12:07 ` Alan Cox
2009-01-04 18:36 ` H. Peter Anvin
2009-01-04 19:03 ` Rob Landley
2009-01-04 20:39 ` H. Peter Anvin
2009-01-05 0:59 ` Rob Landley
2009-01-03 6:28 ` Harvey Harrison
2009-01-03 12:28 ` Ingo Oeser
2009-01-04 1:36 ` Rob Landley
2009-01-04 5:07 ` Valdis.Kletnieks
2009-01-04 6:43 ` Rob Landley
2009-01-04 22:13 ` Jamie Lokier
2009-01-05 0:15 ` Bernd Petrovitsch
2009-01-05 2:23 ` Jamie Lokier
2009-01-05 10:46 ` Bernd Petrovitsch
2009-01-05 15:01 ` Jamie Lokier
2009-01-05 16:18 ` Bernd Petrovitsch
2009-01-06 0:06 ` Rob Landley
2009-01-05 21:07 ` Rob Landley
2009-01-05 4:50 ` Rob Landley
2009-01-05 12:29 ` Bernd Petrovitsch
2009-01-04 21:51 ` Alejandro Mery
2009-01-04 7:15 ` Michal Jaegermann
2009-01-05 0:41 ` Ray Lee
2009-01-05 5:08 ` Rob Landley
2009-01-02 8:14 ` [PATCH 2/3]: Remove perl from make headers_install Rob Landley
2009-01-02 9:09 ` Sam Ravnborg
2009-01-02 8:15 ` [PATCH 3/3]: Convert mkcapflags.pl to mkcapflags.sh Rob Landley
2009-01-02 9:12 ` Sam Ravnborg
2009-01-02 9:26 ` PATCH [0/3]: Simplify the kernel build by removing perl Arkadiusz Miskiewicz
2009-01-02 9:49 ` Christoph Hellwig
2009-01-02 10:16 ` Alejandro Mery
2009-01-02 10:30 ` Mark Miller
2009-01-02 11:18 ` Matt Keenan
2009-01-02 10:41 ` Måns Rullgård
2009-01-15 12:59 ` Pádraig Brady
2009-01-15 18:52 ` Jamie Lokier
2009-01-15 19:45 ` Måns Rullgård
2009-01-02 11:15 ` Rob Landley
2009-01-02 11:44 ` Sam Ravnborg
2009-01-02 12:56 ` Rob Landley
2009-01-02 14:04 ` Theodore Tso
2009-01-03 3:22 ` Jamie Lokier
2009-01-04 2:23 ` Rob Landley
2009-01-02 10:02 ` Mark Miller
2009-01-02 10:03 ` Mark Miller
2009-01-02 11:13 ` Rob Landley
2009-01-02 16:04 ` Matthieu CASTET
2009-01-03 19:46 ` Rob Landley
2009-01-03 20:10 ` Sam Ravnborg
2009-01-03 20:50 ` H. Peter Anvin
2009-01-04 1:47 ` Rob Landley
2009-01-04 1:45 ` Rob Landley
2009-01-04 8:09 ` Sam Ravnborg
2009-01-04 20:19 ` Rob Landley
2009-01-04 0:44 ` Robert Hancock
2009-01-04 1:39 ` David Brownell
2009-01-04 3:05 ` Rob Landley
2009-01-04 1:32 ` Rob Landley
2009-01-02 9:50 ` Paul Mundt
2009-01-02 10:32 ` Mark Miller
2009-01-02 10:57 ` Paul Mundt
2009-01-02 12:11 ` Mark Miller
2009-01-02 12:44 ` Rob Landley
2009-01-02 17:25 ` Wookey
2009-01-02 18:01 ` Sam Ravnborg
2009-01-02 19:27 ` H. Peter Anvin
2009-01-04 1:35 ` Rob Landley
2009-01-03 19:48 ` Rob Landley
2009-01-08 13:13 ` klaasjan gm
2009-01-08 15:04 ` Christian Gagneraud
2009-01-03 14:59 ` Wolfgang Denk
2009-01-03 22:54 ` Leon Woestenberg
2009-01-03 23:03 ` H. Peter Anvin
2009-01-04 0:37 ` Leon Woestenberg
2009-01-04 2:53 ` Rob Landley
2009-01-04 3:38 ` Markus Heidelberg
2009-01-04 4:57 ` Rob Landley
2009-01-04 2:06 ` Rob Landley
2009-01-04 2:14 ` H. Peter Anvin
2009-01-04 6:29 ` Rob Landley
2009-01-15 14:32 ` Pádraig Brady
2009-01-04 2:36 ` Jamie Lokier
2009-01-04 2:39 ` H. Peter Anvin
2009-01-04 2:43 ` H. Peter Anvin
2009-01-04 3:06 ` Paul Mundt
2009-01-04 10:23 ` Leon Woestenberg
2009-01-08 13:29 ` Mike Frysinger
2009-01-11 12:45 ` Bernd Petrovitsch
2009-01-12 3:36 ` Mark A. Miller
2009-01-12 5:11 ` H. Peter Anvin
2009-01-12 5:23 ` Mark A. Miller
2009-01-12 8:20 ` Paul Mundt
2009-01-12 9:18 ` Mark A. Miller
2009-01-12 9:41 ` Paul Mundt
2009-01-12 10:03 ` Mark A. Miller
2009-01-12 10:34 ` Paul Mundt
2009-01-12 17:56 ` Rob Landley
2009-01-12 18:04 ` Alan Cox
2009-01-12 8:27 ` Peter Korsgaard
2009-01-12 17:45 ` Rob Landley
[not found] ` <31014a580901111928u586e2246uccf370ff941c8a01@mail.gmail.com>
2009-01-12 5:35 ` Sam Ravnborg
2009-01-12 5:50 ` Mark A. Miller
2009-01-12 10:18 ` Sam Ravnborg
2009-01-12 10:22 ` Mark A. Miller
2009-01-12 10:44 ` Alexander Neundorf
2009-01-12 10:55 ` Mark A. Miller
2009-01-12 11:04 ` Alexander Neundorf
2009-01-12 10:38 ` Paul Mundt
2009-01-14 2:51 ` Jamie Lokier
2009-01-16 6:11 ` Rob Landley
2009-01-16 7:28 ` Alexander Neundorf
2009-01-16 14:54 ` Valdis.Kletnieks
2009-01-16 21:54 ` Rob Landley
2009-01-17 9:51 ` Jamie Lokier
2009-01-18 1:44 ` Rob Landley
2009-01-04 16:22 ` Vladimir Dronnikov
2009-01-04 1:24 ` PATCH [0/3]: Simplify the kernel build by removing perl v2 Rob Landley
2009-01-04 1:27 ` PATCH [1/3]: Replace kernel/timeconst.pl with kernel/timeconst.sh (v2) Rob Landley
2009-01-04 2:48 ` David Vrabel
2009-01-04 20:21 ` Rob Landley
2009-01-04 1:28 ` PATCH [2/3]: Remove perl from make headers_install Rob Landley
2009-01-04 1:29 ` PATCH [3/3]: Convert kernel/cpu/mkcapflags.pl to kernel/cpu/mkcapflags.sh Rob Landley
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=200901031932.51873.rob@landley.net \
--to=rob@landley.net \
--cc=akpm@linux-foundation.org \
--cc=hpa@zytor.com \
--cc=linux-embedded@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sam@ravnborg.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;
as well as URLs for NNTP newsgroup(s).