On 12/15/2014 06:27 PM, Lennart Poettering wrote:
On Mon, 15.12.14 08:01, Ken Werner (k...@linux.vnet.ibm.com) wrote:
From: Ken Werner <k...@linux.vnet.ibm.com>
Since the order of the first and second arguments of the raw clone()
system call is reversed on s390 and cris it needs to be invoked differently.
Signed-off-by: Ken Werner <k...@linux.vnet.ibm.com>
Hmm, I'd prefer if we could move the definition of this syscall
wrapper into missing.h, and do the per-arch magic there, like we do
for all the other syscalls missing from glibc. Maybe call the function
"raw_clone()" there or so.
Alright, I'll create and post an updated patch.
Alternatively we could move to the glibc-provided wrapper, but I think
it's nastier to use, since it requires a stack parameter to be
specified.
@@ -3133,9 +3133,17 @@ int main(int argc, char *argv[]) {
goto finish;
}
+#if defined(__s390__) || defined(__CRIS)
+ /* On s390 and cris the order of the first and second arguments
+ * of the raw clone() system call is reversed. */
+ pid = syscall(__NR_clone, NULL, SIGCHLD|CLONE_NEWNS|
+ (arg_share_system ? 0 :
CLONE_NEWIPC|CLONE_NEWPID|CLONE_NEWUTS)|
+ (arg_private_network ? CLONE_NEWNET
: 0));
+#else
pid = syscall(__NR_clone, SIGCHLD|CLONE_NEWNS|
(arg_share_system ? 0 :
CLONE_NEWIPC|CLONE_NEWPID|CLONE_NEWUTS)|
(arg_private_network ? CLONE_NEWNET
: 0), NULL);
+#endif
if (pid < 0) {
if (errno == EINVAL)
r = log_error_errno(errno, "clone() failed, do you
have namespace support enabled in your kernel? (You need UTS, IPC, PID and NET
namespacing built in): %m");
--
1.7.1
_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel
Lennart
Regards,
Ken
_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel