3 ms·
If it's per-core you should look into making `#[thread_local]` statics work, which remove some of the restrictions. `static mut` is not always safe even in a s
by eddyb 8y ago
If it's per-core you should look into making `#[thread_local]` statics work, which remove some of the restrictions.
`static mut` is not always safe even in a single-threaded environment, because of reentrance - see also https://github.com/rust-lang/rust/issues/53639 https://github.com/rust-lang/rust/issues/53639.
- zaarn 8y agoI'm not sure if Thread local would work since i'm not certain if the bootloader can handle a TLS section in the ELF file, my kernel cannot do this either as I've yet to implement threading. Reentrance is not the issue here, I guard this inside the data structure, interrupts will be worst case reentrance most of the time.
- eddyb 8y agoThen you can use the techniques in the thread I linked. But without guarding mutability behind some way to indicate interrupts are disabled, or an outright lock, and without guaranteeing no data races (Sync), it's not actually safe. And the compiler can't make `static mut` safe to use as any of those requirements could be broken and then it's not safe at all anymore.