diff --git a/Tests/Kernel/TestTCPSocket.cpp b/Tests/Kernel/TestTCPSocket.cpp index fcabcd1504..3451033c50 100644 --- a/Tests/Kernel/TestTCPSocket.cpp +++ b/Tests/Kernel/TestTCPSocket.cpp @@ -9,11 +9,12 @@ #include #include #include +#include #include static constexpr u16 port = 1337; -static void* server_handler(void*) +static void* server_handler(void* accept_semaphore) { int server_fd = socket(AF_INET, SOCK_STREAM, 0); EXPECT(server_fd >= 0); @@ -28,6 +29,9 @@ static void* server_handler(void*) rc = listen(server_fd, 1); EXPECT_EQ(rc, 0); + rc = sem_post(reinterpret_cast(accept_semaphore)); + VERIFY(rc == 0); + int client_fd = accept(server_fd, nullptr, nullptr); EXPECT(client_fd >= 0); @@ -49,8 +53,16 @@ static void* server_handler(void*) static pthread_t start_tcp_server() { pthread_t thread; - int rc = pthread_create(&thread, nullptr, server_handler, nullptr); - EXPECT_EQ(rc, 0); + sem_t accept_semaphore; + + int rc = sem_init(&accept_semaphore, 0, 0); + VERIFY(rc == 0); + rc = pthread_create(&thread, nullptr, server_handler, &accept_semaphore); + VERIFY(rc == 0); + rc = sem_wait(&accept_semaphore); + VERIFY(rc == 0); + rc = sem_destroy(&accept_semaphore); + VERIFY(rc == 0); return thread; }