fix ESRCH error handling for clock_getcpuclockid
authorEugene Yudin <e.yudin@ndmsystems.com>
Mon, 1 Aug 2022 17:53:22 +0000 (13:53 -0400)
committerRich Felker <dalias@aerifal.cx>
Mon, 1 Aug 2022 17:53:22 +0000 (13:53 -0400)
the syscall used to probe availability of the clock fails with EINVAL
when the requested pid does not exist, but clock_getcpuclockid is
specified to use ESRCH for this purpose.

src/time/clock_getcpuclockid.c

index 8a0e2d4..bce1e8a 100644 (file)
@@ -8,6 +8,7 @@ int clock_getcpuclockid(pid_t pid, clockid_t *clk)
        struct timespec ts;
        clockid_t id = (-pid-1)*8U + 2;
        int ret = __syscall(SYS_clock_getres, id, &ts);
+       if (ret == -EINVAL) ret = -ESRCH;
        if (ret) return -ret;
        *clk = id;
        return 0;