--- tests/tcg/multiarch/testthread.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
diff --git a/tests/tcg/multiarch/testthread.c b/tests/tcg/multiarch/testthread.c index 810ba5d..b30b4b5 100644 --- a/tests/tcg/multiarch/testthread.c +++ b/tests/tcg/multiarch/testthread.c @@ -50,8 +50,29 @@ void test_pthread(void) printf("End of pthread test.\n"); } +void *thread3_func(void *arg) +{ + usleep(3 * 1000); + return 0; +} + +void test_cancel(void) +{ + pthread_t thread; + void *res; + + pthread_create(&thread, 0, thread3_func, NULL); + pthread_cancel(thread); + pthread_join(thread, &res); + if (res != PTHREAD_CANCELED) { + puts("ERROR: thread not cancelled"); + exit(EXIT_FAILURE); + } +} + int main(int argc, char **argv) { test_pthread(); + test_cancel(); return 0; } -- 2.7.4