From ca7f98dab6ae77802a7d861ad76d9c4a4700b084 Mon Sep 17 00:00:00 2001
From: Luca Dariz <luca@orpolo.org>
Date: Wed, 21 Aug 2024 18:36:16 +0200
Subject: add rpc interrupted test

* tests/test-machmsg.c: add two use cases used by glibc during signal
  handling
* tests/include/testlib.h
* tests/testlib.c: add new wait_thread_terminated() helper
Message-ID: <20240821163616.189307-3-luca@orpolo.org>
---
 tests/testlib.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

(limited to 'tests/testlib.c')

diff --git a/tests/testlib.c b/tests/testlib.c
index f82990f9..d1ce6d86 100644
--- a/tests/testlib.c
+++ b/tests/testlib.c
@@ -209,6 +209,21 @@ mach_msg_return_t mach_msg_server_once(
 	return mr;
 }
 
+void wait_thread_terminated(thread_t th)
+{
+  int err;
+  struct thread_basic_info info;
+  mach_msg_type_number_t count;
+  do {
+    count = THREAD_BASIC_INFO_COUNT;
+    err = thread_info(th, THREAD_BASIC_INFO, (thread_info_t)&info, &count);
+    if (err == MACH_SEND_INVALID_DEST)
+        break;
+    ASSERT_RET(err, "error in thread_info");
+    msleep(100); // don't poll continuously
+  } while (1);
+}
+
 /*
  * Minimal _start() for test modules, we just take the arguments from the
  * kernel, call main() and reboot. As in glibc, we expect the argument pointer
-- 
cgit v1.2.3