rusticl/icd: add some way of debugging CL function calls

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15439>
This commit is contained in:
Karol Herbst
2022-05-06 01:38:23 +02:00
committed by Marge Bot
parent 8f957fe355
commit 88613b9e4d
+39 -28
View File
@@ -369,43 +369,54 @@ extern "C" fn clIcdGetPlatformIDsKHR(
// helper macros to make it less painful
#[allow(unused_macros)]
macro_rules! function {
() => {{
fn f() {}
fn type_name_of<T>(_: T) -> &'static str {
std::any::type_name::<T>()
}
let name = type_name_of(f);
&name[..name.len() - 3]
}};
}
macro_rules! match_err {
($exp: expr) => {
match $exp {
($exp: expr) => {{
//println!("{} called", function!());
let ret = match $exp {
Ok(_) => CL_SUCCESS as cl_int,
Err(e) => e,
}
};
};
//println!("{} returned {}", function!(), ret);
ret
}};
}
macro_rules! match_obj {
($exp: expr, $err: ident) => {
match $exp {
Ok(o) => {
$err.write_checked(CL_SUCCESS as cl_int);
o
}
Err(e) => {
$err.write_checked(e);
ptr::null_mut()
}
}
};
($exp: expr, $err: ident) => {{
//println!("{} called", function!());
let (ptr, err) = match $exp {
Ok(o) => (o, CL_SUCCESS as cl_int),
Err(e) => (ptr::null_mut(), e),
};
//println!("{} returned {:p} err {}", function!(), ptr, err);
$err.write_checked(err);
ptr
}};
}
macro_rules! match_obj_expl {
($exp: expr, $err: ident) => {
match $exp {
Ok((o, c)) => {
$err.write_checked(c as cl_int);
o
}
Err(e) => {
$err.write_checked(e);
ptr::null_mut()
}
}
};
($exp: expr, $err: ident) => {{
//println!("{} called", function!());
let (ptr, err) = match $exp {
Ok((o, c)) => (o, c),
Err(e) => (ptr::null_mut(), e),
};
//println!("{} returned {:p} err {}", function!(), ptr, err);
$err.write_checked(err);
ptr
}};
}
// extern "C" function stubs in ICD and extension order