[-- Attachment #1: Type: text/plain, Size: 769 bytes --] Hi, According to man clock_getcpuclockid() should return ESRCH if there is no process with the ID pid. diff --git a/src/time/clock_getcpuclockid.c b/src/time/clock_getcpuclockid.c --- a/src/time/clock_getcpuclockid.c +++ b/src/time/clock_getcpuclockid.c @@ -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 The same behaviour is used in glibc: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/clock_getcpuclockid.c;h=5534127ed703a3931f22af48da02e2b8f2dc39a5;hb=HEAD#l49 -- Best regards, Eugene [-- Attachment #2: Type: text/html, Size: 1219 bytes --]
On Tue, Jun 14, 2022 at 01:15:36PM +0300, Eugene Yudin wrote:
> Hi,
>
> According to man clock_getcpuclockid() should return ESRCH if there is no
> process with the ID pid.
>
> diff --git a/src/time/clock_getcpuclockid.c b/src/time/clock_getcpuclockid.c
> --- a/src/time/clock_getcpuclockid.c
> +++ b/src/time/clock_getcpuclockid.c
> @@ -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
>
> The same behaviour is used in glibc:
> https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/clock_getcpuclockid.c;h=5534127ed703a3931f22af48da02e2b8f2dc39a5;hb=HEAD#l49
Thanks, applying.
Rich