Change ThreadSpawnConfiguration::name to CStr (#549)

This commit is contained in:
ivmarkov 2025-09-16 00:46:46 +03:00 committed by GitHub
parent 69371e75be
commit a97d0657bc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 3 additions and 24 deletions

View File

@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Check https://github.com/esp-rs/esp-idf-hal/pull/529 for details on that change
- The `prelude` module is removed. It was anyway only having a handful of types listed in it. And furthermore, there was no `prelude` module for `esp-idf-svc`.
- `embassy-sync` updated to V0.7
- `ThreadSpawnConfiguration::name` changed from `&'static [u8]` to `&'static core::ffi::CStr` as it is actually a `CStr`
### Deprecated
- `DB_11` ADC attenuation in favor of `DB_12` for ESP-IDF V5.0+

View File

@ -351,7 +351,7 @@ pub mod thread {
}
#[derive(Debug)]
pub struct ThreadSpawnConfiguration {
pub name: Option<&'static [u8]>,
pub name: Option<&'static CStr>,
pub stack_size: usize,
pub priority: u8,
pub inherit: bool,
@ -410,12 +410,7 @@ pub mod thread {
name: if conf.thread_name.is_null() {
None
} else {
Some(unsafe {
core::slice::from_raw_parts(
conf.thread_name as _,
c_strlen(conf.thread_name.cast()) + 1,
)
})
Some(unsafe { CStr::from_ptr(conf.thread_name) })
},
stack_size: conf.stack_size as _,
priority: conf.prio as _,
@ -453,11 +448,6 @@ pub mod thread {
}
fn set_conf(conf: &ThreadSpawnConfiguration) -> Result<(), EspError> {
if let Some(name) = conf.name {
let _str = CStr::from_bytes_with_nul(name)
.map_err(|_e| panic! {"Missing null byte in provided Thread-Name"});
}
if conf.priority < 1 || conf.priority as u32 >= configMAX_PRIORITIES {
panic!("Thread priority {} has to be [1 - 24]", conf.priority);
}
@ -466,18 +456,6 @@ pub mod thread {
Ok(())
}
fn c_strlen(c_str: *const u8) -> usize {
let mut offset = 0;
loop {
if *unsafe { c_str.offset(offset).as_ref() }.unwrap() == 0 {
return offset as _;
}
offset += 1;
}
}
}
pub struct CriticalSection(Cell<Option<NonNull<QueueDefinition>>>, AtomicBool);