| {# |
| Copyright 2026 The Pigweed Authors |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| use this file except in compliance with the License. You may obtain a copy of |
| the License at |
| |
| https://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| License for the specific language governing permissions and limitations under |
| the License. |
| #} |
| |
| { |
| let (mut thread, _stack) = unsafe { |
| kernel::declare_non_priv_thread!( |
| "{{thread.name}}", |
| {% if thread.priority %} |
| kernel::Priority::{{ thread.priority }}, |
| {% else %} |
| kernel::Priority::DEFAULT_PRIORITY, |
| {% endif %} |
| {# PROCESS_ID is declared by proces_decl.rs.jinja which invokes |
| this template. #} |
| PROCESS_ID, |
| {{thread.stack_size_expression}} |
| ) |
| }; |
| |
| thread.object = Some(object_{{process.name | to_lower_ident}}_{{thread.name | to_lower_ident}}.clone()); |
| |
| // Set thread object |
| if let Err(_e) = object_{{process.name | to_lower_ident}}_{{thread.name | to_lower_ident}}.set_thread(arch::Arch, thread) { |
| kernel::macro_exports::pw_assert::panic!("Failed to set thread object"); |
| } |
| } |