1use std::marker::PhantomData;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
4pub struct DeviceHandle<T> {
5 pub(crate) id: i32,
6 phantom: PhantomData<T>,
7}
8
9impl<T> DeviceHandle<T> {
10 pub(crate) const fn new(id: i32) -> Self {
11 Self {
12 id,
13 phantom: PhantomData,
14 }
15 }
16}
17
18crate::__ts_handler! {
19 name = TypeHandler,
20 raw = unsafe extern "C" fn(dev: *mut rvvm_sys::rvvm_mmio_dev_t)
21}
22
23crate::__ts_handler! {
24 name = RemoveHandler,
25 raw = RawTypeHandler
26}
27
28crate::__ts_handler! {
29 name = RwHandler,
30 raw = unsafe extern "C" fn(
31 dev: *mut rvvm_sys::rvvm_mmio_dev_t,
32 dest: *mut std::ffi::c_void,
33 offset: usize,
34 size: u8
35 ) -> bool
36}