diff options
| author | Ulf Lilleengen <[email protected]> | 2024-02-16 17:35:53 +0000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-02-16 17:35:53 +0000 |
| commit | e9907de39d640fee02df9eac1fbd7efa33e63da2 (patch) | |
| tree | b4b2a4fd44698252fe1505f0a651509546559eae /embassy-nrf/src/util.rs | |
| parent | b462dfa99641e955df3b2c2b3637d57727b1d9c8 (diff) | |
| parent | 50b8100fd30fd13ac706889b0951e6ec25c77821 (diff) | |
Merge pull request #2572 from plaes/nrf-spim-chunked-dma
NRF: Implement chunked DMA transfers for SPIM
Diffstat (limited to 'embassy-nrf/src/util.rs')
| -rw-r--r-- | embassy-nrf/src/util.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/embassy-nrf/src/util.rs b/embassy-nrf/src/util.rs index b408c517b..6cdb97f08 100644 --- a/embassy-nrf/src/util.rs +++ b/embassy-nrf/src/util.rs | |||
| @@ -4,6 +4,19 @@ use core::mem; | |||
| 4 | const SRAM_LOWER: usize = 0x2000_0000; | 4 | const SRAM_LOWER: usize = 0x2000_0000; |
| 5 | const SRAM_UPPER: usize = 0x3000_0000; | 5 | const SRAM_UPPER: usize = 0x3000_0000; |
| 6 | 6 | ||
| 7 | // #![feature(const_slice_ptr_len)] | ||
| 8 | // https://github.com/rust-lang/rust/issues/71146 | ||
| 9 | pub(crate) fn slice_ptr_len<T>(ptr: *const [T]) -> usize { | ||
| 10 | use core::ptr::NonNull; | ||
| 11 | let ptr = ptr.cast_mut(); | ||
| 12 | if let Some(ptr) = NonNull::new(ptr) { | ||
| 13 | ptr.len() | ||
| 14 | } else { | ||
| 15 | // We know ptr is null, so we know ptr.wrapping_byte_add(1) is not null. | ||
| 16 | NonNull::new(ptr.wrapping_byte_add(1)).unwrap().len() | ||
| 17 | } | ||
| 18 | } | ||
| 19 | |||
| 7 | // TODO: replace transmutes with core::ptr::metadata once it's stable | 20 | // TODO: replace transmutes with core::ptr::metadata once it's stable |
| 8 | pub(crate) fn slice_ptr_parts<T>(slice: *const [T]) -> (*const T, usize) { | 21 | pub(crate) fn slice_ptr_parts<T>(slice: *const [T]) -> (*const T, usize) { |
| 9 | unsafe { mem::transmute(slice) } | 22 | unsafe { mem::transmute(slice) } |
