raw_syscalls: define __NR_pidfd_send_signal if missing

On all architectures we care about it's 424. Signed-off-by: 's avatarChristian Brauner <christian.brauner@ubuntu.com>
parent cc94aaf3
...@@ -689,7 +689,7 @@ static int lxc_cmd_stop_callback(int fd, struct lxc_cmd_req *req, ...@@ -689,7 +689,7 @@ static int lxc_cmd_stop_callback(int fd, struct lxc_cmd_req *req,
stopsignal = handler->conf->stopsignal; stopsignal = handler->conf->stopsignal;
memset(&rsp, 0, sizeof(rsp)); 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); rsp.ret = lxc_raw_pidfd_send_signal(handler->pidfd, stopsignal, NULL, 0);
else else
rsp.ret = kill(handler->pid, stopsignal); rsp.ret = kill(handler->pid, stopsignal);
......
...@@ -123,13 +123,13 @@ pid_t lxc_raw_clone_cb(int (*fn)(void *), void *args, unsigned long flags, ...@@ -123,13 +123,13 @@ pid_t lxc_raw_clone_cb(int (*fn)(void *), void *args, unsigned long flags,
return pid; 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, int lxc_raw_pidfd_send_signal(int pidfd, int sig, siginfo_t *info,
unsigned int flags) unsigned int flags)
{ {
#ifdef __NR_pidfd_send_signal
return syscall(__NR_pidfd_send_signal, pidfd, sig, info, flags); return syscall(__NR_pidfd_send_signal, pidfd, sig, info, flags);
#else
errno = ENOSYS;
return -1;
#endif
} }
...@@ -1833,5 +1833,9 @@ bool lxc_can_use_pidfd(int pidfd) ...@@ -1833,5 +1833,9 @@ bool lxc_can_use_pidfd(int pidfd)
if (ret < 0) if (ret < 0)
return log_error_errno(false, errno, "Kernel does not support waiting on processes through pidfds"); 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"); return log_trace(true, "Kernel supports pidfds");
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment