summaryrefslogtreecommitdiff
path: root/tests/signal_test.cpp
diff options
context:
space:
mode:
authorJosh Gao <jmgao@google.com>2018-08-28 20:20:21 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2018-08-28 20:20:21 +0000
commitcd524ca71f90c1c1beca10c95d6cf1669da0b9fd (patch)
treec8275d162a2ca718f30c1dbe2cf3ef7ff3b00eac /tests/signal_test.cpp
parentec247245deaaa9123c65f79f6f594c0a5db0c9d3 (diff)
parentbe66a06412205baf1077e806eacf0c926e1d87ac (diff)
Merge changes from topic "fdsan_abort_msg"
* changes: fdsan: provide abort message in warning tombstones. Implement pthread_sigqueue. Stringify api_level in <android/versioning.h>. Delete archaic pre-ANSI C support.
Diffstat (limited to 'tests/signal_test.cpp')
-rw-r--r--tests/signal_test.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/signal_test.cpp b/tests/signal_test.cpp
index cc95ef7b3..52a097bf3 100644
--- a/tests/signal_test.cpp
+++ b/tests/signal_test.cpp
@@ -597,6 +597,42 @@ TEST(signal, sigqueue) {
ASSERT_EQ(1, g_sigqueue_signal_handler_call_count);
}
+TEST(signal, pthread_sigqueue_self) {
+ ScopedSignalHandler ssh(SIGALRM, SigqueueSignalHandler, SA_SIGINFO);
+ sigval_t sigval;
+ sigval.sival_int = 1;
+ errno = 0;
+ ASSERT_EQ(0, pthread_sigqueue(pthread_self(), SIGALRM, sigval));
+ ASSERT_EQ(0, errno);
+ ASSERT_EQ(1, g_sigqueue_signal_handler_call_count);
+}
+
+TEST(signal, pthread_sigqueue_other) {
+ ScopedSignalHandler ssh(SIGALRM, SigqueueSignalHandler, SA_SIGINFO);
+ sigval_t sigval;
+ sigval.sival_int = 1;
+
+ sigset_t mask;
+ sigfillset(&mask);
+ pthread_sigmask(SIG_SETMASK, &mask, nullptr);
+ pthread_t thread;
+ int rc = pthread_create(&thread, nullptr,
+ [](void*) -> void* {
+ sigset_t mask;
+ sigemptyset(&mask);
+ sigsuspend(&mask);
+ return nullptr;
+ },
+ nullptr);
+ ASSERT_EQ(0, rc);
+
+ errno = 0;
+ ASSERT_EQ(0, pthread_sigqueue(thread, SIGALRM, sigval));
+ ASSERT_EQ(0, errno);
+ pthread_join(thread, nullptr);
+ ASSERT_EQ(1, g_sigqueue_signal_handler_call_count);
+}
+
TEST(signal, sigwaitinfo) {
SignalMaskRestorer smr;