summaryrefslogtreecommitdiffstats
path: root/mdmon.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2008-11-07 14:46:30 +1100
committerNeilBrown <neilb@suse.de>2008-11-07 14:46:30 +1100
commit97f734fde22e64affd46c957d9184e536bcc1026 (patch)
treecc0066d4088c9467c42464eee2796e123b8e834b /mdmon.c
parent1679bef2eeb641b77d72bf20e9fbbd555cc0a1cb (diff)
downloadmdadm-97f734fde22e64affd46c957d9184e536bcc1026.tar.gz
mdadm-97f734fde22e64affd46c957d9184e536bcc1026.tar.xz
mdadm-97f734fde22e64affd46c957d9184e536bcc1026.zip
A couple of bugfixes found by suse autobuilding:
1/ ia64 appear to have __clone2, not clone. 2/ Including "++" in the arg to a macro is a bad thing to do. Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'mdmon.c')
-rw-r--r--mdmon.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/mdmon.c b/mdmon.c
index fa5a0df..5ee8346 100644
--- a/mdmon.c
+++ b/mdmon.c
@@ -79,13 +79,25 @@ int run_child(void *v)
return 0;
}
-int clone_monitor(struct supertype *container)
+#ifdef __ia64__
+int __clone2(int (*fn)(void *),
+ void *child_stack_base, size_t stack_size,
+ int flags, void *arg, ...
+ /* pid_t *pid, struct user_desc *tls, pid_t *ctid */ );
+#endif
+ int clone_monitor(struct supertype *container)
{
static char stack[4096];
+#ifdef __ia64__
+ mon_tid = __clone2(run_child, stack, sizeof(stack),
+ CLONE_FS|CLONE_FILES|CLONE_VM|CLONE_SIGHAND|CLONE_THREAD,
+ container);
+#else
mon_tid = clone(run_child, stack+4096-64,
CLONE_FS|CLONE_FILES|CLONE_VM|CLONE_SIGHAND|CLONE_THREAD,
container);
+#endif
mgr_tid = syscall(SYS_gettid);