Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(539)

Unified Diff: tests/syscalls/semaphore_tests.cc

Issue 18711004: libpthread: Remove unneeded NULL checks from semaphore functions (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/untrusted/pthread/nc_semaphore.c ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/syscalls/semaphore_tests.cc
diff --git a/tests/syscalls/semaphore_tests.cc b/tests/syscalls/semaphore_tests.cc
index baaff40089f3a8b4f0e02851a14f83f80cdecb18..86fb41646bf76506fa45a8af624df0570dc701a8 100644
--- a/tests/syscalls/semaphore_tests.cc
+++ b/tests/syscalls/semaphore_tests.cc
@@ -54,33 +54,14 @@ int TestSemInitErrors() {
std::numeric_limits<unsigned int>::max()));
EXPECT(EINVAL == errno);
- // NaCl semaphores do not currently support the pshared option, so this should
- // fail with an ENOSYS error. If pshared gets added, we should begin testing
- // it for proper successful behavior.
+#if !defined(__GLIBC__)
+ // nacl-newlib's semaphores do not currently support the pshared
+ // option, so this should fail with an ENOSYS error. If pshared
+ // gets added, we should begin testing it for proper successful
+ // behavior.
EXPECT(-1 == sem_init(&my_semaphore, 1, 0));
EXPECT(ENOSYS == errno);
-
- END_TEST();
-}
-
-// Test simple usages of sem_destroy and return the number of failed checks.
-//
-// According to the man page on Linux:
-// ===================================
-// RETURN VALUE
-//
-// sem_destroy() returns 0 on success; on error, -1 is returned, and
-// errno is set to indicate the error.
-// ERRORS
-//
-// EINVAL sem is not a valid semaphore.
-// ===================================
-int TestSemDestroy() {
- START_TEST("sem_destroy");
-
- // Try sem_destroy with a null pointer.
- EXPECT(-1 == sem_destroy(NULL));
- EXPECT(EINVAL == errno);
+#endif
END_TEST();
}
@@ -103,10 +84,6 @@ int TestSemDestroy() {
int TestSemPostErrors() {
START_TEST("sem_post error conditions");
- // Test an invalid semaphore: try a null pointer.
- EXPECT(-1 == sem_post(NULL));
- EXPECT(EINVAL == errno);
-
// Initialize a semaphore with the max value, and try to post to it.
sem_t my_semaphore;
EXPECT(0 == sem_init(&my_semaphore, 0, SEM_VALUE_MAX));
@@ -139,71 +116,6 @@ void* PostThreadFunc(void* poster_thread_arg) {
return NULL;
}
-// TODO(dmichael): Add this code and appropriate tests back if/when signal
-// support is added.
-// The following is intended to be used to test that calls which may be
-// interrupted by a signal (e.g., sem_wait) will stop and report failure
-// properly. However, NaCl does not currently support signals.
-//
-// The real type of the void* argument to SignalThreadFunc. See
-// SignalThreadFunc for more information.
-// struct SignalThreadArg {
-// // The signal to send.
-// int signal;
-// // The amount of time to sleep before sending the signal (in microseconds).
-// unsigned int sleep_microseconds;
-// };
-//
-// Sleep for sleep_microseconds, then raise the given signal. signal_thread_arg
-// must be of type SignalThreadArg. Returns NULL.
-// void* SignalThreadFunc(void* signal_thread_arg) {
-// SignalThreadArg* sta = static_cast<SignalThreadArg*>(signal_thread_arg);
-// usleep(sta->sleep_microseconds);
-// raise(sta->signal); // This currently results in link error; signals
-// // are currently unsupported by NaCl.
-// return NULL;
-// }
-
-// Test error conditions of sem_wait and return the number of failed checks.
-//
-// According to the man page on Linux:
-// ===================================
-// RETURN VALUE
-// All of these functions return 0 on success; on error, the value of the
-// semaphore is left unchanged, -1 is returned, and errno is set to indi‐
-// cate the error.
-//
-// ERRORS
-// EINTR The call was interrupted by a signal handler; see signal(7).
-//
-// EINVAL sem is not a valid semaphore.
-// ===================================
-int TestSemWaitErrors() {
- START_TEST("sem_wait error conditions");
-
- // Try a null pointer.
- EXPECT(-1 == sem_wait(NULL));
- EXPECT(EINVAL == errno);
-
- // TODO(dmichael): Uncomment this test (and supporting code above) if/when
- // NaCl support for signals is added.
- // Now really initialize one with the a value of 1, wait on it until a signal.
- // EXPECT(0 == sem_init(&my_semaphore[1], 0, SEM_VALUE_MAX));
- // // Spawn a thread to signal us so we'll get an EINTR error.
- // SignalThreadArg sta = { SIGINT, /* signal */
- // 2000000u /* sleep_microseconds */ };
-
- // pthread_t sig_thread;
- //
- // EXPECT(0 == pthread_create(&sig_thread, 0, &SignalThreadFunc, &sta));
- // EXPECT(-1 == sem_wait(&my_semaphore[1]));
- // EXPECT(EINTR == errno);
- // void* dummy_return;
- // EXPECT(0 == pthread_join(sig_thread, &dummy_return));
-
- END_TEST();
-}
-
int TestSemNormalOperation() {
START_TEST("semaphore normal operation");
@@ -253,17 +165,8 @@ int TestSemNormalOperation() {
int main() {
int fail_count = 0;
- fail_count += TestSemNormalOperation();
-
- // A semaphore implementation is not required to check for the
- // errors that are tested for here. nacl-newlib checks, but glibc
- // does not.
-#ifndef __GLIBC__
fail_count += TestSemInitErrors();
- fail_count += TestSemDestroy();
fail_count += TestSemPostErrors();
- fail_count += TestSemWaitErrors();
-#endif
-
+ fail_count += TestSemNormalOperation();
std::exit(fail_count);
}
« no previous file with comments | « src/untrusted/pthread/nc_semaphore.c ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698