On 06/05/15 20:31, Neel Natu wrote:
-       runs = 0;
>>-       while (now >= state->nexthard) {
>>-               state->nexthard += tick_sbt;
>>-               runs++;
>>-       }
>>-       if (runs) {
>>+       runs = (now - state->nexthard) / tick_sbt;
>>+       if (runs > 0) {
>>+               printf("R%d ", (int)runs);
>>+               state->nexthard += tick_sbt * runs;
>>                 hct = DPCPU_PTR(hardclocktime);
>>                 *hct = state->nexthard - tick_sbt;
>>                 if (fake < 2) {
There is a difference in behavior in the two implementations when 'now
== state->nexthard'. In the loop-based implementation this would end
up with 'runs = 1' whereas in the division-based implementation it
would end up with 'runs = 0'.

I am not sure if this is intentional or just an oversight.

Hi Neel,

The nexthard is mainly updated in this piece of code. We can assume that "state->nexthard" is aligned to "ticks_sbt". If "state->nexthard % ticks_sbt == 0", is that still an issue?

--HPS
_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to