:My only worry here is laptops.
:
:If my laptop is connected to the wall-power when it boots it comes
:up at full CPU speed during the probe and mask determination.
:
:Then I unplug it and the CPU speed drops by a large factor and
:suddenly the mask is too tight for the CPU to get two samples.
:
:I think we need an approach where we loosen the mask at runtime if
:some significant number of iterations fail to get a count may be
:needed:
:
:#define N      25
:
:       static unsigned mask = 0xfffffffe;
:
:       for (;;) {
:               for (i = 0; i < N; i++) {
:                       c = READ_TIMER & mask;
:                       d = READ_TIMER & mask;
:                       if (c == d)
:                               return(d);
:               }
:               printf("Adjusting mask to %08x\n", mask);
:               mask <<= 1;
:       }
:
:-- 
:Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20

    Ugh.  Oh well.  So much for the code being simple.  I'll incorporate
    a similar change which adjusts the mask dynamically in both directions.

                                        -Matt
                                        Matthew Dillon 
                                        <[EMAIL PROTECTED]>

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to