Apparently, this is

        ts.tv_nsec = 1000000000 / stathz;

in ./sys/kern/kern_time.c

Jan


On Jun 24 15:08:24, [email protected] wrote:
> Dear all,
> 
> the resolution of CLOCK_PROCESS_CPUTIME_ID,
> as reported by clock_getres(), is 10000000 ns;
> this seems to be the case on all archs I have.
> 
> This resolution seems to be coarser than
> the actual cpu time reported (in a process that does nothing else),
> such as 7233653 ns on this machine here.
> 
> FWIW, each of the OSes below (+Debian) returns 1 ns.
> 
>       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, %8ld ns resolution\n",
>               name, ts.tv_sec, ts.tv_nsec, cr.tv_nsec);
> }
> 
> int
> main(void)
> {
> #ifdef  __APPLE__
>       show(CLOCK_REALTIME,            "real time");
>       show(CLOCK_MONOTONIC,           "monotonic");
>       show(CLOCK_UPTIME_RAW,          "up time  ");
>       show(CLOCK_PROCESS_CPUTIME_ID,  "proc time");
> #elif __OpenBSD__
>       show(CLOCK_REALTIME,            "real time");
>       show(CLOCK_MONOTONIC,           "monotonic");
>       show(CLOCK_BOOTTIME,            "boot time");
>       show(CLOCK_UPTIME,              "up time  ");
>       show(CLOCK_PROCESS_CPUTIME_ID,  "proc time");
> #elif __FreeBSD__
>       show(CLOCK_REALTIME,            "real time");
>       show(CLOCK_MONOTONIC,           "monotonic");
>       show(CLOCK_BOOTTIME,            "boot time");
>       show(CLOCK_UPTIME,              "up time  ");
>       show(CLOCK_PROCESS_CPUTIME_ID,  "proc time");
> #elif __NetBSD__
>       show(CLOCK_REALTIME,            "real time");
>       show(CLOCK_MONOTONIC,           "monotonic");
>       show(CLOCK_PROCESS_CPUTIME_ID,  "proc time");
> #else
>       show(CLOCK_REALTIME,            "real time");
>       show(CLOCK_MONOTONIC,           "monotonic");
>       show(CLOCK_BOOTTIME,            "boot time");
>       show(CLOCK_PROCESS_CPUTIME_ID,  "proc time");
> #endif
>       return 0;
> }

Reply via email to