summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2013-01-11 18:32:46 -0800
committerBrian Anderson <banderson@mozilla.com>2013-02-06 14:27:34 -0800
commite91040c704aa9ab46fb1c7a10e293fd5f6bfe079 (patch)
tree48b2526c07bfbe119a995feb78781d653c67091f /src/test
parenta8c8bfc7b5525a83fab65f527345bb6ca46d4e25 (diff)
downloadrust-e91040c704aa9ab46fb1c7a10e293fd5f6bfe079.tar.gz
rust-e91040c704aa9ab46fb1c7a10e293fd5f6bfe079.zip
Make foreign calls work outside of tasks. #4451
Diffstat (limited to 'src/test')
-rw-r--r--src/test/run-pass/foreign-call-no-runtime.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/test/run-pass/foreign-call-no-runtime.rs b/src/test/run-pass/foreign-call-no-runtime.rs
new file mode 100644
index 00000000000..865aa775362
--- /dev/null
+++ b/src/test/run-pass/foreign-call-no-runtime.rs
@@ -0,0 +1,24 @@
+use core::private::run_in_bare_thread;
+
+extern {
+    pub fn rust_dbg_call(cb: *u8,
+                         data: libc::uintptr_t) -> libc::uintptr_t;
+}
+
+pub fn main() {
+    unsafe {
+        do run_in_bare_thread() {
+            unsafe {
+                let i = &100;
+                rust_dbg_call(callback, cast::transmute(i));
+            }
+        }
+    }
+}
+
+extern fn callback(data: libc::uintptr_t) {
+    unsafe {
+        let data: *int = cast::transmute(data);
+        assert *data == 100;
+    }
+}
\ No newline at end of file