Since this came up in another thread. Trivial implementations of CLOCK_VIRTUAL and CLOCK_PROF, modeled after what FreeBSD does.
- todd Index: sys/sys/_time.h =================================================================== RCS file: /home/cvs/openbsd/src/sys/sys/_time.h,v retrieving revision 1.6 diff -u -r1.6 _time.h --- sys/sys/_time.h 6 Oct 2013 01:27:49 -0000 1.6 +++ sys/sys/_time.h 15 Oct 2014 13:40:28 -0000 @@ -38,6 +38,7 @@ #define CLOCK_MONOTONIC 3 #define CLOCK_THREAD_CPUTIME_ID 4 #define CLOCK_UPTIME 5 +#define CLOCK_PROF 6 #if __BSD_VISIBLE #define __CLOCK_USE_TICKET_LOCKS 8 /* flag for __thrsleep() */ Index: sys/kern/kern_time.c =================================================================== RCS file: /home/cvs/openbsd/src/sys/kern/kern_time.c,v retrieving revision 1.88 diff -u -r1.88 kern_time.c --- sys/kern/kern_time.c 15 May 2014 04:36:33 -0000 1.88 +++ sys/kern/kern_time.c 15 Oct 2014 14:31:06 -0000 @@ -108,12 +108,20 @@ int clock_gettime(struct proc *p, clockid_t clock_id, struct timespec *tp) { + struct timespec sys; struct bintime bt; struct proc *q; switch (clock_id) { case CLOCK_REALTIME: nanotime(tp); + break; + case CLOCK_VIRTUAL: + calctsru(&p->p_p->ps_tu, tp, &sys, NULL); + break; + case CLOCK_PROF: + calctsru(&p->p_p->ps_tu, tp, &sys, NULL); + timespecadd(tp, &sys, tp); break; case CLOCK_UPTIME: binuptime(&bt);