From: Markos Chandras <markos.chand...@imgtec.com> Signed-off-by: Markos Chandras <markos.chand...@imgtec.com> --- libc/sysdeps/linux/common/fork.c | 19 +++++++++++++++++++ libc/sysdeps/linux/common/stubs.c | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/libc/sysdeps/linux/common/fork.c b/libc/sysdeps/linux/common/fork.c index fa1f4af..104cf81 100644 --- a/libc/sysdeps/linux/common/fork.c +++ b/libc/sysdeps/linux/common/fork.c @@ -15,6 +15,25 @@ _syscall0(pid_t, fork) # ifdef __UCLIBC_HAS_THREADS__ strong_alias(fork,__libc_fork) + +#if defined(__NR_clone) && !defined(__NR_fork) +pid_t __libc_fork(void) +{ + pid_t pid = INLINE_SYSCALL(clone, 4, SIGCHLD, NULL, NULL, NULL); + + if (pid<0) + return -1; + + return pid; +} +weak_alias(__libc_fork, fork) +libc_hidden_weak(fork) + +#elif defined(__NR_fork) +#define __NR___libc_fork __NR_fork +extern __typeof(fork) __libc_fork; +_syscall0(pid_t, __libc_fork) +weak_alias(__libc_fork,fork) libc_hidden_weak(fork) # else libc_hidden_def(fork) diff --git a/libc/sysdeps/linux/common/stubs.c b/libc/sysdeps/linux/common/stubs.c index f429467..856b08a 100644 --- a/libc/sysdeps/linux/common/stubs.c +++ b/libc/sysdeps/linux/common/stubs.c @@ -128,7 +128,7 @@ make_stub(fgetxattr) make_stub(flistxattr) #endif -#ifndef __NR_fork +#if !defined(__NR_fork) && !defined(__NR_clone) make_stub(fork) #endif -- 1.8.1.1 _______________________________________________ uClibc mailing list uClibc@uclibc.org http://lists.busybox.net/mailman/listinfo/uclibc