Merge "Preliminary cleanup of <sys/cdefs.h>."
diff --git a/benchmarks/semaphore_benchmark.cpp b/benchmarks/semaphore_benchmark.cpp
index d260803..b932a2b3 100644
--- a/benchmarks/semaphore_benchmark.cpp
+++ b/benchmarks/semaphore_benchmark.cpp
@@ -96,22 +96,27 @@
     sched_setscheduler(0, SCHED_IDLE, &param);
 
     BM_semaphore_sem_post_running = 1;
+    setup = true;
   }
 
   ~SemaphoreFixture() {
-    sched_setscheduler(0, SCHED_OTHER, &param);
+    if (setup) {
+      // Only do this if the test was actually run.
+      sched_setscheduler(0, SCHED_OTHER, &param);
 
-    if (BM_semaphore_sem_post_running > 0) {
-      BM_semaphore_sem_post_running = 0;
+      if (BM_semaphore_sem_post_running > 0) {
+        BM_semaphore_sem_post_running = 0;
+      }
+      do {
+        sem_post(&semaphore);
+        sched_yield();
+      } while (BM_semaphore_sem_post_running != -1);
     }
-    do {
-      sem_post(&semaphore);
-      sched_yield();
-    } while (BM_semaphore_sem_post_running != -1);
   }
 
   sem_t semaphore;
   sched_param param;
+  bool setup = false;
 };
 
 BENCHMARK_F(SemaphoreFixture, semaphore_sem_post)(benchmark::State& state) {