Skip to content

Commit 038db32

Browse files
add integration test
1 parent 84588f4 commit 038db32

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

libc/test/integration/src/unistd/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ add_integration_test(
3131
libc.src.sys.wait.wait4
3232
libc.src.sys.wait.waitpid
3333
libc.src.unistd.fork
34+
libc.src.unistd.getpid
35+
libc.src.unistd.gettid
36+
libc.src.stdlib.exit
37+
libc.include.sys_syscall
3438
)
3539

3640
if((${LIBC_TARGET_OS} STREQUAL "linux") AND (${LIBC_TARGET_ARCHITECTURE_IS_X86}))

libc/test/integration/src/unistd/fork_test.cpp

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,21 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
#include "src/__support/OSUtil/syscall.h"
910
#include "src/pthread/pthread_atfork.h"
1011
#include "src/signal/raise.h"
12+
#include "src/stdlib/exit.h"
1113
#include "src/sys/wait/wait.h"
1214
#include "src/sys/wait/wait4.h"
1315
#include "src/sys/wait/waitpid.h"
1416
#include "src/unistd/fork.h"
15-
17+
#include "src/unistd/getpid.h"
18+
#include "src/unistd/gettid.h"
1619
#include "test/IntegrationTest/test.h"
1720

1821
#include <errno.h>
1922
#include <signal.h>
23+
#include <sys/syscall.h>
2024
#include <sys/wait.h>
2125
#include <unistd.h>
2226

@@ -140,7 +144,25 @@ void fork_with_atfork_callbacks() {
140144
ASSERT_NE(child, DONE);
141145
}
142146

147+
void fork_pid_tid_test() {
148+
pid_t pid = fork();
149+
ASSERT_TRUE(pid >= 0);
150+
ASSERT_EQ(LIBC_NAMESPACE::gettid(),
151+
LIBC_NAMESPACE::syscall_impl<pid_t>(SYS_gettid));
152+
ASSERT_EQ(LIBC_NAMESPACE::getpid(),
153+
LIBC_NAMESPACE::syscall_impl<pid_t>(SYS_getpid));
154+
155+
if (pid == 0) {
156+
LIBC_NAMESPACE::exit(0);
157+
} else {
158+
int status;
159+
LIBC_NAMESPACE::waitpid(pid, &status, 0);
160+
ASSERT_EQ(status, 0);
161+
}
162+
}
163+
143164
TEST_MAIN(int argc, char **argv, char **envp) {
165+
fork_pid_tid_test();
144166
fork_and_wait_normal_exit();
145167
fork_and_wait4_normal_exit();
146168
fork_and_waitpid_normal_exit();

0 commit comments

Comments
 (0)