On Tue, 2022-09-20 at 13:18 +0000, Alberto Garcia wrote: > On Tue 20 Sep 2022 08:33:50 PM +08, wanglian...@126.com wrote: > > From: Wang Liang <wanglian...@inspur.com> > > > > 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