I am trying to compile the code under Windows. After some tweaks it compiles, but the test accesses invalid memory - the
wheel = timeout_wheel(rem);
called with rem = 90 returns 4, with WHEEL_NUM == 4.
I think that the culprit is the implementation of clz32/64 function. This should mean "count leading zeros"; however, the _BitScanReverse finds a position of the most significant true bit. For a value 90 this is 6; it should however return 25. Changing the functions to return 31 - zeros and return 63 - zeros seems to fix this issue.
There is still some other problem - the test using {{{cfg3}}} does not seem to progress, still hunting this one.
I am trying to compile the code under Windows. After some tweaks it compiles, but the test accesses invalid memory - the
wheel = timeout_wheel(rem);called with rem = 90 returns 4, with WHEEL_NUM == 4.
I think that the culprit is the implementation of
clz32/64function. This should mean "count leading zeros"; however, the_BitScanReversefinds a position of the most significant true bit. For a value 90 this is 6; it should however return 25. Changing the functions toreturn 31 - zerosandreturn 63 - zerosseems to fix this issue.There is still some other problem - the test using {{{cfg3}}} does not seem to progress, still hunting this one.