Lines Matching refs:T
120 pub struct MmioRaw<T: ?Sized> {
124 ptr: *mut T,
127 impl<T: ?Sized> Copy for MmioRaw<T> {}
128 impl<T: ?Sized> Clone for MmioRaw<T> {
136 unsafe impl<T: ?Sized> Send for MmioRaw<T> {}
138 unsafe impl<T: ?Sized> Sync for MmioRaw<T> {}
140 impl<T> MmioRaw<T> {
162 impl<T: ?Sized + KnownSize> MmioRaw<T> {
243 type View<'a, T: ?Sized + KnownSize>: IoBase<'a, Backend = Self, Target = T>;
249 fn as_ptr<'a, T: ?Sized + KnownSize>(view: Self::View<'a, T>) -> *mut T; in as_ptr() argument
258 unsafe fn project_view<'a, T: ?Sized + KnownSize, U: ?Sized + KnownSize>( in project_view()
259 view: Self::View<'a, T>, in project_view() argument
272 pub trait IoCapable<T>: IoBackend {
274 fn io_read<'a>(view: Self::View<'a, T>) -> T; in io_read() argument
277 fn io_write<'a>(view: Self::View<'a, T>, value: T); in io_write() argument
300 fn copy_read<T: FromBytes>(view: Self::View<'_, T>) -> T { in copy_read() argument
307 core::ptr::slice_from_raw_parts_mut::<u8>(ptr.cast(), size_of::<T>()), in copy_read()
311 let mut buf = MaybeUninit::<T>::uninit(); in copy_read()
324 fn copy_write<T: IntoBytes>(view: Self::View<'_, T>, value: T) { in copy_write() argument
331 core::ptr::slice_from_raw_parts_mut::<u8>(ptr.cast(), size_of::<T>()), in copy_write()
361 pub trait IoLoc<Base: ?Sized, T> {
363 type IoType: Into<T> + From<T>;
424 fn len<T>(self) -> usize in len()
426 Self: Io<'a, Target = [T]>, in len()
433 fn is_empty<T>(self) -> bool in is_empty()
435 Self: Io<'a, Target = [T]>, in is_empty()
844 fn try_read<T, L>(self, location: L) -> Result<T> in try_read() argument
846 L: IoLoc<Self::Target, T>, in try_read()
877 fn try_write<T, L>(self, location: L, value: T) -> Result in try_write() argument
879 L: IoLoc<Self::Target, T>, in try_write() argument
921 fn try_write_reg<T, L, V>(self, value: V) -> Result in try_write_reg() argument
923 L: IoLoc<Self::Target, T>, in try_write_reg() argument
924 V: LocatedRegister<Self::Target, Location = L, Value = T>, in try_write_reg()
955 fn try_update<T, L, F>(self, location: L, f: F) -> Result in try_update() argument
957 L: IoLoc<Self::Target, T>, in try_update() argument
959 F: FnOnce(T) -> T, in try_update() argument
963 let value: T = Self::Backend::io_read(view).into(); in try_update()
992 fn read<T, L>(self, location: L) -> T in read() argument
994 L: IoLoc<Self::Target, T>, in read() argument
1023 fn write<T, L>(self, location: L, value: T) in write() argument
1025 L: IoLoc<Self::Target, T>, in write() argument
1065 fn write_reg<T, L, V>(self, value: V) in write_reg() argument
1067 L: IoLoc<Self::Target, T>, in write_reg() argument
1068 V: LocatedRegister<Self::Target, Location = L, Value = T>, in write_reg()
1099 fn update<T, L, F>(self, location: L, f: F) in update() argument
1101 L: IoLoc<Self::Target, T>, in update() argument
1103 F: FnOnce(T) -> T, in update() argument
1106 let value: T = Self::Backend::io_read(view).into(); in update()
1114 impl<'a, T: IoBase<'a>> Io<'a> for T {} implementation
1121 pub struct Mmio<'a, T: ?Sized> {
1122 ptr: *mut T,
1126 impl<T: ?Sized> Copy for Mmio<'_, T> {}
1127 impl<T: ?Sized> Clone for Mmio<'_, T> {
1134 impl<'a, T: ?Sized> Mmio<'a, T> {
1141 pub unsafe fn from_raw(raw: MmioRaw<T>) -> Self { in from_raw()
1151 unsafe impl<T: ?Sized + Sync> Send for Mmio<'_, T> {}
1154 unsafe impl<T: ?Sized + Sync> Sync for Mmio<'_, T> {}
1156 impl<'a, T: ?Sized + KnownSize> IoBase<'a> for Mmio<'a, T> {
1158 type Target = T;
1161 fn as_view(self) -> Mmio<'a, T> { in as_view() argument
1170 type View<'a, T: ?Sized + KnownSize> = Mmio<'a, T>;
1173 fn as_ptr<'a, T: ?Sized + KnownSize>(view: Self::View<'a, T>) -> *mut T { in as_ptr() argument
1178 unsafe fn project_view<'a, T: ?Sized + KnownSize, U: ?Sized + KnownSize>( in project_view()
1179 _view: Self::View<'a, T>, in project_view() argument
1248 pub struct RelaxedMmio<'a, T: ?Sized>(Mmio<'a, T>);
1250 impl<T: ?Sized> Copy for RelaxedMmio<'_, T> {}
1251 impl<T: ?Sized> Clone for RelaxedMmio<'_, T> {
1262 type View<'a, T: ?Sized + KnownSize> = RelaxedMmio<'a, T>;
1265 fn as_ptr<'a, T: ?Sized + KnownSize>(view: Self::View<'a, T>) -> *mut T { in as_ptr() argument
1270 unsafe fn project_view<'a, T: ?Sized + KnownSize, U: ?Sized + KnownSize>( in project_view()
1271 view: Self::View<'a, T>, in project_view() argument
1279 impl<'a, T: ?Sized + KnownSize> IoBase<'a> for RelaxedMmio<'a, T> {
1281 type Target = T;
1284 fn as_view(self) -> RelaxedMmio<'a, T> { in as_view() argument
1289 impl<'a, T: ?Sized> Mmio<'a, T> {
1312 pub fn relaxed(self) -> RelaxedMmio<'a, T> { in relaxed() argument
1329 type View<'a, T: ?Sized + KnownSize> = SysMem<'a, T>;
1332 fn as_ptr<'a, T: ?Sized + KnownSize>(view: Self::View<'a, T>) -> *mut T { in as_ptr() argument
1337 unsafe fn project_view<'a, T: ?Sized + KnownSize, U: ?Sized + KnownSize>( in project_view()
1338 _view: Self::View<'a, T>, in project_view() argument
1405 fn copy_read<T: FromBytes>(view: Self::View<'_, T>) -> T { in copy_read() argument
1416 fn copy_write<T: IntoBytes>(view: Self::View<'_, T>, value: T) { in copy_write() argument
1436 pub struct SysMem<'a, T: ?Sized> {
1437 ptr: *mut T,
1441 impl<T: ?Sized> Copy for SysMem<'_, T> {}
1442 impl<T: ?Sized> Clone for SysMem<'_, T> {
1450 unsafe impl<T: ?Sized + Sync> Send for SysMem<'_, T> {}
1453 unsafe impl<T: ?Sized + Sync> Sync for SysMem<'_, T> {}
1455 impl<'a, T: ?Sized> SysMem<'a, T> {
1463 pub unsafe fn new(ptr: *mut T) -> Self { in new()
1473 pub fn as_ptr(self) -> *mut T { in as_ptr() argument
1478 impl<'a, T: ?Sized + KnownSize> IoBase<'a> for SysMem<'a, T> {
1480 type Target = T;
1501 pub enum IoSysMap<'a, T: ?Sized> {
1503 Io(Mmio<'a, T>),
1505 Sys(SysMem<'a, T>),
1508 impl<T: ?Sized> Copy for IoSysMap<'_, T> {}
1509 impl<T: ?Sized> Clone for IoSysMap<'_, T> {
1516 impl<'a, T: ?Sized> From<Mmio<'a, T>> for IoSysMap<'a, T> {
1518 fn from(value: Mmio<'a, T>) -> Self { in from()
1523 impl<'a, T: ?Sized> From<SysMem<'a, T>> for IoSysMap<'a, T> {
1525 fn from(value: SysMem<'a, T>) -> Self { in from()
1531 type View<'a, T: ?Sized + KnownSize> = IoSysMap<'a, T>;
1534 fn as_ptr<'a, T: ?Sized + KnownSize>(view: Self::View<'a, T>) -> *mut T { in as_ptr() argument
1542 unsafe fn project_view<'a, T: ?Sized + KnownSize, U: ?Sized + KnownSize>( in project_view()
1543 view: Self::View<'a, T>, in project_view() argument
1555 impl<T> IoCapable<T> for IoSysMapBackend
1557 MmioBackend: IoCapable<T>,
1558 SysMemBackend: IoCapable<T>,
1561 fn io_read(view: Self::View<'_, T>) -> T { in io_read() argument
1569 fn io_write<'a>(view: Self::View<'a, T>, value: T) { in io_write() argument
1599 fn copy_read<T: FromBytes>(view: Self::View<'_, T>) -> T { in copy_read() argument
1607 fn copy_write<T: IntoBytes>(view: Self::View<'_, T>, value: T) { in copy_write() argument
1615 impl<'a, T: ?Sized + KnownSize> IoBase<'a> for IoSysMap<'a, T> {
1617 type Target = T;
1620 fn as_view(self) -> IoSysMap<'a, T> { in as_view() argument
1629 pub struct ProjectHelper<T>(pub T);
1631 impl<'a, T> ProjectHelper<T>
1633 T: Io<'a, Backend: IoBackend<View<'a, T::Target> = T>>,
1637 pub fn as_ptr(self) -> *mut T::Target { in as_ptr()
1638 T::Backend::as_ptr(self.0) in as_ptr()
1648 ) -> <T::Backend as IoBackend>::View<'a, U> { in project_view()
1650 unsafe { T::Backend::project_view::<T::Target, _>(self.0, ptr) } in project_view()