CVSROOT: /cvs Module name: src Changes by: chel...@cvs.openbsd.org 2022/08/25 11:25:25
Modified files: sys/arch/i386/i386: machdep.c sys/arch/i386/include: cpu.h sys/arch/amd64/include: cpu.h sys/arch/amd64/amd64: machdep.c Log message: amd64, i386: add delay_init(): basic delay(9) implementation management Because the clock situation on x86 and amd64 is a terminal clusterfuck, there are many different ways to delay(9). We need a rudimentary mechanism for gracefully switching to progressively better delay(9) implementations as they become available during boot without riddling the code with ifdefs and function pointer comparisons. This patch adds delay_init() to both amd64 and i386. If the quality value passed to delay_init() exceeds the quality value of the current delay_func, delay_init() changes delay_func to the given function pointer and updates the quality value. Both platforms start with delay_func set to i8254_delay() and a quality value of zero: all other delay(9) implementations are preferable. Idea and patch provided by jsg@. With tons of input, research, and advice from jsg@. Link: https://marc.info/?l=openbsd-tech&m=166053729104923&w=2 ok mlarkin@ jsg@