Re: [PATCH 1/3]: Replace kernel/timeconst.pl with kernel/timeconst.sh

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

--
To unsubscribe from this list: send the line "unsubscribe linux-embedded" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Gstreamer Embedded]     [Linux MMC Devel]     [U-Boot V2]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux ARM Kernel]     [Linux OMAP]     [Linux SCSI]

  Powered by Linux