aboutsummaryrefslogtreecommitdiff
path: root/embassy-nrf/src/util.rs
diff options
context:
space:
mode:
authorUlf Lilleengen <[email protected]>2024-02-16 17:35:53 +0000
committerGitHub <[email protected]>2024-02-16 17:35:53 +0000
commite9907de39d640fee02df9eac1fbd7efa33e63da2 (patch)
treeb4b2a4fd44698252fe1505f0a651509546559eae /embassy-nrf/src/util.rs
parentb462dfa99641e955df3b2c2b3637d57727b1d9c8 (diff)
parent50b8100fd30fd13ac706889b0951e6ec25c77821 (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.rs13
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;
4const SRAM_LOWER: usize = 0x2000_0000; 4const SRAM_LOWER: usize = 0x2000_0000;
5const SRAM_UPPER: usize = 0x3000_0000; 5const SRAM_UPPER: usize = 0x3000_0000;
6 6
7// #![feature(const_slice_ptr_len)]
8// https://github.com/rust-lang/rust/issues/71146
9pub(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
8pub(crate) fn slice_ptr_parts<T>(slice: *const [T]) -> (*const T, usize) { 21pub(crate) fn slice_ptr_parts<T>(slice: *const [T]) -> (*const T, usize) {
9 unsafe { mem::transmute(slice) } 22 unsafe { mem::transmute(slice) }