Re: nonexistent clocks

x85729201kza <[email protected]> Thu, 25 Jun 2026 17:48:39 +1000
Newsgroups gmane.os.netbsd.general
Message-ID <TYZPR02MB60443016CE5069CE37980103D6EC2@TYZPR02MB6044.apcprd02.prod.outlook.com>
Hi Jan,
According to tests/lib/libc/sys/t_clock_gettime.c
""These clocks aren't supported but are documented"
	    " in clock_gettime(2) for some reason"

There's also a PR in about CLOCK_MONOTONIC & what it actually represents:
https://gnats.netbsd.org/60315

Cheers


On 24/06/2026 9:56 pm, Jan Stary wrote:
> Dear all,
> 
> the code below works for CLOCK_REALTIME and CLOCK_MONOTONIC,
> but not for CLOCK_VIRTUAL or CLOCK_PROF. Why is that?
> 
> All of those are documented in clock_gettime(2) and
> I don't see anything about some of them being special
> or only available in some special contexts.
> 
> Running the code ends in
> 
> 	clock: Invalid argument
> 
> which I suppose is the first EINVAL in ERRORS
> (I am not _setting_ the clock):
> 
> 	The clock_id argument does not specify a known clock.
> 
> Why are they "not known"?
> 
> Jan
> 
> 
> 
> 
> #include <stdint.h>
> #include <string.h>
> #include <stdio.h>
> #include <time.h>
> #include <err.h>
> 
> void
> show(clockid_t id, char* name)
> {
> 	struct timespec ts;
> 	struct timespec cr;
> 	if (clock_gettime(id, &ts) == -1)
> 		err(1, NULL);
> 	if (clock_getres(id, &cr) == -1)
> 		err(1, NULL);
> 	printf("%s %10lld.%09ld s, res %5ld ns\n",
> 		name, ts.tv_sec, ts.tv_nsec, cr.tv_nsec);
> }
> 
> int
> main(void)
> {
> 	show(CLOCK_REALTIME,  "real time");
> 	show(CLOCK_MONOTONIC, "monotonic");
> 	show(CLOCK_VIRTUAL,   "virtual  ");
> 	show(CLOCK_PROF,      "prof     ");
> 	return 0;
> }
>