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"