about summary refs log tree commit diff
path: root/src/rt/rust_kernel.cpp
diff options
context:
space:
mode:
authorGraydon Hoare <graydon@mozilla.com>2010-09-08 15:48:10 -0700
committerGraydon Hoare <graydon@mozilla.com>2010-09-08 15:48:18 -0700
commit13d6f874316c9f69ab3a29f120ce410da2290a64 (patch)
tree10493d6a138904335d3f32166700c8ac6f96b76d /src/rt/rust_kernel.cpp
parent2172a3bcf44bbecfe9469451cdaed96b5beee71e (diff)
downloadrust-13d6f874316c9f69ab3a29f120ce410da2290a64.tar.gz
rust-13d6f874316c9f69ab3a29f120ce410da2290a64.zip
XFAIL many.rs since it crashes on win32, and add a time-slice sleep to the kernel message loop to get tests to finish in a sane time.
Diffstat (limited to 'src/rt/rust_kernel.cpp')
-rw-r--r--src/rt/rust_kernel.cpp25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/rt/rust_kernel.cpp b/src/rt/rust_kernel.cpp
index 9f128c3ec92..ae603379a17 100644
--- a/src/rt/rust_kernel.cpp
+++ b/src/rt/rust_kernel.cpp
@@ -144,7 +144,19 @@ void
 rust_kernel::start_kernel_loop() {
     while (_interrupt_kernel_loop == false) {
         pump_message_queues();
-        sync::yield();
+
+        // FIXME: this is a complete hack to make the testsuite finish in a
+        // sane time when executing under valgrind. The whole message-loop
+        // system here needs replacement with an OS-level event-queue such
+        // that actually wait on inter-thread notices, rather than
+        // busy-waiting.
+
+        size_t ms = TIME_SLICE_IN_MS;
+#if defined(__WIN32__)
+        Sleep(ms);
+#else
+        usleep(ms * 1000);
+#endif
     }
 }
 
@@ -208,3 +220,14 @@ rust_kernel::free_handles(hash_map<T*, rust_handle<T>* > &map) {
         delete value;
     }
 }
+
+//
+// Local Variables:
+// mode: C++
+// fill-column: 78;
+// indent-tabs-mode: nil
+// c-basic-offset: 4
+// buffer-file-coding-system: utf-8-unix
+// compile-command: "make -k -C .. 2>&1 | sed -e 's/\\/x\\//x:\\//g'";
+// End:
+//