@@ -141,11 +141,9 @@ define a target.json and add a case for it in CMakelists.
141
141
TODO
142
142
****
143
143
144
- * thread local storage
145
- * alloc from user mode
146
- * abstraction for pointers to kernel objects
147
- * safe wrappers (threads, semaphores, etc.)
148
- * panic
144
+ * Build as a Zephyr module
145
+ * Separate Rust app from zephyr crates and sysroot (be able to build multiple apps)
146
+ * Kconfig for enabling Rust and configuring the heap
149
147
* test runner
150
148
151
149
Complete
@@ -156,6 +154,24 @@ Complete
156
154
* println
157
155
* alloc from kernel mode (Box)
158
156
* split into zephyr-sys and zephyr crates
157
+ * thread local storage
158
+ * alloc from user mode
159
+ * abstraction for pointers to kernel objects
160
+ * safe wrappers (threads, semaphores, etc.)
161
+ * panic
162
+
163
+ Features Not Planned to Support
164
+ ===============================
165
+
166
+ * std::thread. Requires thread resources to be dynamically allocated. This is
167
+ possible, but not common for Zephyr.
168
+ * Defining static threads in Rust. Zephyr uses many layers of
169
+ architecture-specific C macros that would not be wise to try to duplicate
170
+ exactly in Rust. Possibly could generate C code like in the "cpp" crate, but
171
+ for now just define threads in C and point them at a Rust FFI entry point.
172
+ * std::sync: :{Mutex, RwLock}. Might be possible but would at least require
173
+ dynamic kernel object allocation. The small number of uses in libstd are
174
+ patched out.
159
175
160
176
License
161
177
*******
0 commit comments