On Thu, May 28, 2020 at 10:27:03PM +0300, Paul Irofti wrote: > > 5. What if the TSC is not available as a usable timecounter? In that > > case libc should fall back on the system call. But we need a way > > to communicate what the timecounter is and detect when we switch > > timecounters. Maybe adding a timecounter ID to the page will help > > here. But then MD code in libc will have to check the ID and > > dispatch to the right timecounter read function. > > I fixed 1--4 and 6, but with 5 the solutions I found are a bit > convoluted and involve string passing and parsing if we are to pass this > information to libc. > > Would it be acceptable to add a memember to struct timecounter that > states whether the clock is libc ready or not? This means that when you > add support for a new clock in libc you also have to touch the kernel to > set that bit... > > On the other hand the code would be clean and safe:
if (timekeep == NULL || !timekeep->tc_supported) clock_gettime(); that's what I meant, of course... The tc_supported bit would be set in the kernel when the timecounter is changed. I have those bits inside tc_update_timekeep() already for the tc_counter_mask.