//@only-target: windows # this directly tests windows-only functions | |
use std::ffi::c_void; | |
use std::ptr; | |
extern "system" { | |
fn TlsAlloc() -> u32; | |
fn TlsSetValue(key: u32, val: *mut c_void) -> bool; | |
fn TlsGetValue(key: u32) -> *mut c_void; | |
fn TlsFree(key: u32) -> bool; | |
} | |
fn main() { | |
let key = unsafe { TlsAlloc() }; | |
assert!(unsafe { TlsSetValue(key, ptr::without_provenance_mut(1)) }); | |
assert_eq!(unsafe { TlsGetValue(key).addr() }, 1); | |
assert!(unsafe { TlsFree(key) }); | |
} |