diff options
author | wolfbeast <mcwerewolf@gmail.com> | 2018-04-25 21:33:57 +0200 |
---|---|---|
committer | wolfbeast <mcwerewolf@gmail.com> | 2018-04-25 21:33:57 +0200 |
commit | 7c4d50dccf3080965c202f63aa56439e3824eaf3 (patch) | |
tree | 59026bd0f554a24878db82841a508c8fa7ca8356 /nsprpub/pr/tests/forktest.c | |
parent | fba28f19754f62b5227650143d5441fc86d4c7d7 (diff) | |
download | UXP-7c4d50dccf3080965c202f63aa56439e3824eaf3.tar UXP-7c4d50dccf3080965c202f63aa56439e3824eaf3.tar.gz UXP-7c4d50dccf3080965c202f63aa56439e3824eaf3.tar.lz UXP-7c4d50dccf3080965c202f63aa56439e3824eaf3.tar.xz UXP-7c4d50dccf3080965c202f63aa56439e3824eaf3.zip |
Revert "Update NSPR to 4.18"
This reverts commit 8781f745556be5d7402d0f3adc67ecfe32fe04a0.
Diffstat (limited to 'nsprpub/pr/tests/forktest.c')
-rw-r--r-- | nsprpub/pr/tests/forktest.c | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/nsprpub/pr/tests/forktest.c b/nsprpub/pr/tests/forktest.c index 66dc64575..a389fa479 100644 --- a/nsprpub/pr/tests/forktest.c +++ b/nsprpub/pr/tests/forktest.c @@ -196,6 +196,51 @@ finish: return; } +#ifdef _PR_DCETHREADS + +#include <syscall.h> + +pid_t PR_UnixFork1(void) +{ + pid_t parent = getpid(); + int rv = syscall(SYS_fork); + + if (rv == -1) { + return (pid_t) -1; + } else { + /* For each process, rv is the pid of the other process */ + if (rv == parent) { + /* the child */ + return 0; + } else { + /* the parent */ + return rv; + } + } +} + +#elif defined(SOLARIS) + +/* + * It seems like that in Solaris 2.4 one must call fork1() if the + * the child process is going to use thread functions. Solaris 2.5 + * doesn't have this problem. Calling fork() also works. + */ + +pid_t PR_UnixFork1(void) +{ + return fork1(); +} + +#else + +pid_t PR_UnixFork1(void) +{ + return fork(); +} + +#endif /* PR_DCETHREADS */ + int main(int argc, char **argv) { pid_t pid; @@ -205,7 +250,7 @@ int main(int argc, char **argv) DoIO(); - pid = fork(); + pid = PR_UnixFork1(); if (pid == (pid_t) -1) { fprintf(stderr, "Fork failed: errno %d\n", errno); |