summary refs log tree commit diff
path: root/src/lib/task.rs
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2011-07-14 19:39:53 -0700
committerBrian Anderson <banderson@mozilla.com>2011-07-15 10:07:29 -0700
commitced8393f203fc661df7a5a0159a5edfd826eef12 (patch)
treeefc98dacc8ec300c63b2e3af1c7dd78f7f4bac5a /src/lib/task.rs
parentd9cc4cb81b91e5d1735ef6c14e181e41247c9314 (diff)
downloadrust-ced8393f203fc661df7a5a0159a5edfd826eef12.tar.gz
rust-ced8393f203fc661df7a5a0159a5edfd826eef12.zip
Modify task::join to indicate how the task terminated
This involves sticking yet another field into the task structure
Diffstat (limited to 'src/lib/task.rs')
-rw-r--r--src/lib/task.rs14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/lib/task.rs b/src/lib/task.rs
index 90885f2ab46..64ab745e4b9 100644
--- a/src/lib/task.rs
+++ b/src/lib/task.rs
@@ -1,7 +1,7 @@
 native "rust" mod rustrt {
     fn task_sleep(uint time_in_us);
     fn task_yield();
-    fn task_join(task t);
+    fn task_join(task t) -> int;
     fn task_unsupervise();
     fn pin_task();
     fn unpin_task();
@@ -20,8 +20,16 @@ fn yield() {
     ret rustrt::task_yield();
 }
 
-fn join(task t) {
-    ret rustrt::task_join(t);
+tag task_result {
+    tr_success;
+    tr_failure;
+}
+
+fn join(task t) -> task_result {
+    alt (rustrt::task_join(t)) {
+        0 { tr_success }
+        _ { tr_failure }
+    }
 }
 
 fn unsupervise() {