On Tue, 2022-09-20 at 13:18 +0000, Alberto Garcia wrote:
> On Tue 20 Sep 2022 08:33:50 PM +08, [email protected] wrote:
> > From: Wang Liang <[email protected]>
> >
> > The delay time should never be a negative value.
> >
> > - return limit->slice_end_time - now;
> > + return MAX(limit->slice_end_time - now, 0);
>
> How can this be negative? slice_end_time is guaranteed to be larger
> than
> now:
>
> if (limit->slice_end_time < now) {
> /* Previous, possibly extended, time slice finished; reset
> the
> * accounting. */
> limit->slice_start_time = now;
> limit->slice_end_time = now + limit->slice_ns;
> limit->dispatched = 0;
> }
>
This is just a guarantee.
If slice_end_time is assigned later by
limit->slice_end_time = limit->slice_start_time +
(uint64_t)(delay_slices * limit->slice_ns);
There may be precision issues at that time.
> Berto