From ea200e38bd79723054c7ad97cbf87911eac5b7f5 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Sat, 8 Jun 2013 11:36:41 -0400 Subject: support cputime clocks for processes/threads other than self apparently these features have been in Linux for a while now, so it makes sense to support them. the bit twiddling seems utterly illogical and wasteful, especially the negation, but that's how the kernel folks chose to encode pids/tids into the clock id. --- src/time/clock_getcpuclockid.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/time/clock_getcpuclockid.c') diff --git a/src/time/clock_getcpuclockid.c b/src/time/clock_getcpuclockid.c index 723840b0..8a0e2d4c 100644 --- a/src/time/clock_getcpuclockid.c +++ b/src/time/clock_getcpuclockid.c @@ -5,7 +5,10 @@ int clock_getcpuclockid(pid_t pid, clockid_t *clk) { - if (pid && pid != getpid()) return EPERM; - *clk = CLOCK_PROCESS_CPUTIME_ID; + struct timespec ts; + clockid_t id = (-pid-1)*8U + 2; + int ret = __syscall(SYS_clock_getres, id, &ts); + if (ret) return -ret; + *clk = id; return 0; } -- cgit v1.2.1