mirror of
https://github.com/vosen/ZLUDA.git
synced 2025-07-17 09:16:23 +03:00
Implement runtime_callback_hooks_fn6
(#386)
This commit is contained in:
@ -251,8 +251,8 @@ dark_api! {
|
|||||||
},
|
},
|
||||||
"{A094798C-2E74-2E74-93F2-0800200C0A66}" => TOOLS_RUNTIME_CALLBACK_HOOKS[7] {
|
"{A094798C-2E74-2E74-93F2-0800200C0A66}" => TOOLS_RUNTIME_CALLBACK_HOOKS[7] {
|
||||||
[0] = SIZE_OF,
|
[0] = SIZE_OF,
|
||||||
[2] = runtime_callback_hooks_fn2(ptr: *mut *mut std::ffi::c_void, size: *mut usize) -> (),
|
[2] = get_unknown_buffer1(ptr: *mut *mut std::ffi::c_void, size: *mut usize) -> (),
|
||||||
[6] = runtime_callback_hooks_fn6(ptr: *mut *mut std::ffi::c_void, size: *mut usize) -> ()
|
[6] = get_unknown_buffer2(ptr: *mut *mut std::ffi::c_void, size: *mut usize) -> ()
|
||||||
},
|
},
|
||||||
"{C693336E-1121-DF11-A8C3-68F355D89593}" => CONTEXT_LOCAL_STORAGE_INTERFACE_V0301[4] {
|
"{C693336E-1121-DF11-A8C3-68F355D89593}" => CONTEXT_LOCAL_STORAGE_INTERFACE_V0301[4] {
|
||||||
[0] = context_local_storage_ctor(
|
[0] = context_local_storage_ctor(
|
||||||
|
@ -76,23 +76,25 @@ pub(crate) fn init(flags: ::core::ffi::c_uint) -> CUresult {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
const FN2_BUFFER_SIZE: usize = 400;
|
struct UnknownBuffer<const S: usize> {
|
||||||
|
buffer: std::cell::UnsafeCell<[u32; S]>,
|
||||||
struct Fn2Buffer {
|
|
||||||
buffer: std::cell::UnsafeCell<[u8; FN2_BUFFER_SIZE]>,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Fn2Buffer {
|
impl<const S: usize> UnknownBuffer<S> {
|
||||||
const fn new() -> Self {
|
const fn new() -> Self {
|
||||||
Fn2Buffer {
|
UnknownBuffer {
|
||||||
buffer: std::cell::UnsafeCell::new([0; FN2_BUFFER_SIZE]),
|
buffer: std::cell::UnsafeCell::new([0; S]),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const fn len(&self) -> usize {
|
||||||
|
S
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe impl Sync for Fn2Buffer {}
|
unsafe impl<const S: usize> Sync for UnknownBuffer<S> {}
|
||||||
|
|
||||||
static FN2_BUFFER: Fn2Buffer = Fn2Buffer::new();
|
static UNKNOWN_BUFFER1: UnknownBuffer<1024> = UnknownBuffer::new();
|
||||||
|
static UNKNOWN_BUFFER2: UnknownBuffer<14> = UnknownBuffer::new();
|
||||||
|
|
||||||
struct DarkApi {}
|
struct DarkApi {}
|
||||||
|
|
||||||
@ -140,19 +142,20 @@ impl ::dark_api::cuda::CudaDarkApi for DarkApi {
|
|||||||
todo!()
|
todo!()
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe extern "system" fn runtime_callback_hooks_fn2(
|
unsafe extern "system" fn get_unknown_buffer1(
|
||||||
ptr: *mut *mut std::ffi::c_void,
|
ptr: *mut *mut std::ffi::c_void,
|
||||||
size: *mut usize,
|
size: *mut usize,
|
||||||
) -> () {
|
) -> () {
|
||||||
*ptr = FN2_BUFFER.buffer.get() as *mut std::ffi::c_void;
|
*ptr = UNKNOWN_BUFFER1.buffer.get() as *mut std::ffi::c_void;
|
||||||
*size = FN2_BUFFER_SIZE;
|
*size = UNKNOWN_BUFFER1.len();
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe extern "system" fn runtime_callback_hooks_fn6(
|
unsafe extern "system" fn get_unknown_buffer2(
|
||||||
ptr: *mut *mut std::ffi::c_void,
|
ptr: *mut *mut std::ffi::c_void,
|
||||||
size: *mut usize,
|
size: *mut usize,
|
||||||
) -> () {
|
) -> () {
|
||||||
todo!()
|
*ptr = UNKNOWN_BUFFER2.buffer.get() as *mut std::ffi::c_void;
|
||||||
|
*size = UNKNOWN_BUFFER2.len();
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe extern "system" fn context_local_storage_ctor(
|
unsafe extern "system" fn context_local_storage_ctor(
|
||||||
|
@ -401,8 +401,8 @@ impl ::dark_api::cuda::CudaDarkApi for DarkApiDump {
|
|||||||
|
|
||||||
dark_api_fn_redirect_log! {
|
dark_api_fn_redirect_log! {
|
||||||
TOOLS_RUNTIME_CALLBACK_HOOKS {
|
TOOLS_RUNTIME_CALLBACK_HOOKS {
|
||||||
[2] = runtime_callback_hooks_fn2(ptr: *mut *mut std::ffi::c_void, size: *mut usize) -> (),
|
[2] = get_unknown_buffer1(ptr: *mut *mut std::ffi::c_void, size: *mut usize) -> (),
|
||||||
[6] = runtime_callback_hooks_fn6(ptr: *mut *mut std::ffi::c_void, size: *mut usize) -> ()
|
[6] = get_unknown_buffer2(ptr: *mut *mut std::ffi::c_void, size: *mut usize) -> ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user