Please sign in to comment.
kernel/sched: Interpret zero timeslice time correctly
The scheduler API has always allowed setting a zero slice size as a way to disable timeslicing. But the workaround introduced for CONFIG_SWAP_NONATOMIC forgot that convention, and was calling reset_time_slice() with that zero value (i.e. requesting an immediate interrupt) in circumstances where z_swap() had been interrupted nonatomically. In practice, this never happened. And if it did, it was a single spurious no-op interrupt that no one cared about. Until it did, anyway... Now that ticks on nRF devices are at full 32 kHz speed, we can get into a situation where the rapidly triggering timeslice interrupts are interrupting z_swap() calls, and the process feeds back on itself and becomes self-sustaining. Put that test into the time slice code itself to prevent this kind of mistake in the future. Signed-off-by: Andy Ross <firstname.lastname@example.org>
- Loading branch information...