On all architectures we care about it's 424.
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
stopsignal = handler->conf->stopsignal;
memset(&rsp, 0, sizeof(rsp));
- if (handler-> pidfd >= 0)
+ if (handler->pidfd >= 0)
rsp.ret = lxc_raw_pidfd_send_signal(handler->pidfd, stopsignal, NULL, 0);
else
rsp.ret = kill(handler->pid, stopsignal);
return pid;
}
+/* For all the architectures we care about it's the same syscall number. */
+#ifndef __NR_pidfd_send_signal
+#define __NR_pidfd_send_signal 424
+#endif
+
int lxc_raw_pidfd_send_signal(int pidfd, int sig, siginfo_t *info,
unsigned int flags)
{
-#ifdef __NR_pidfd_send_signal
return syscall(__NR_pidfd_send_signal, pidfd, sig, info, flags);
-#else
- errno = ENOSYS;
- return -1;
-#endif
}
if (ret < 0)
return log_error_errno(false, errno, "Kernel does not support waiting on processes through pidfds");
+ ret = lxc_raw_pidfd_send_signal(pidfd, 0, NULL, 0);
+ if (ret)
+ return log_error_errno(false, errno, "Kernel does not support sending singals through pidfds");
+
return log_trace(true, "Kernel supports pidfds");
}