summary refs log tree commit diff
path: root/src/test/run-pass/foreign-call-no-runtime.rs
blob: 08cb8db5131ff794cb2b83c2fd3ba4be04cfdd95 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use core::unstable::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);
    }
}