diff --git a/macros/src/codegen/locals.rs b/macros/src/codegen/locals.rs index 5725a1513f..0ff56f5982 100644 --- a/macros/src/codegen/locals.rs +++ b/macros/src/codegen/locals.rs @@ -50,7 +50,7 @@ pub fn codegen( items.push(quote!( #(#cfgs)* #[doc(hidden)] - static mut #name: #ty = #expr + static #name: rtic::RacyCell<#ty> = rtic::RacyCell::new(#expr) )); values.push(quote!( #(#cfgs)* @@ -64,7 +64,7 @@ pub fn codegen( } if lt.is_some() && has_cfgs { - fields.push(quote!(__marker__: core::marker::PhantomData<&'a mut ()>)); + fields.push(quote!(__marker__: core::marker::PhantomData<&'a ()>)); values.push(quote!(__marker__: core::marker::PhantomData)); } diff --git a/macros/src/codegen/resources.rs b/macros/src/codegen/resources.rs index 89f70f8402..68eea4d24d 100644 --- a/macros/src/codegen/resources.rs +++ b/macros/src/codegen/resources.rs @@ -66,8 +66,11 @@ pub fn codegen( } let r_prop = &res.properties; + let doc = format!(" RTIC internal: {}:{}", file!(), line!()); + if !r_prop.task_local && !r_prop.lock_free { mod_resources.push(quote!( + #[doc = #doc] #[allow(non_camel_case_types)] #(#cfgs)* pub struct #name<'a> { diff --git a/macros/src/codegen/resources_struct.rs b/macros/src/codegen/resources_struct.rs index 8ed8a2912c..6a21c3197c 100644 --- a/macros/src/codegen/resources_struct.rs +++ b/macros/src/codegen/resources_struct.rs @@ -79,7 +79,7 @@ pub fn codegen(ctxt: Context, needs_lt: &mut bool, app: &App) -> (TokenStream2, let is_late = expr.is_none(); if is_late { let expr = if access.is_exclusive() { - quote!(&mut *#mangled_name.as_mut_ptr()) + quote!(&mut *#mangled_name.get_mut_unchecked().as_mut_ptr()) } else { quote!(&*#mangled_name.as_ptr()) };