-
Talking Tock 58: New pointer type in the kernel
Correctly expressing data types in Rust between userspace and the kernel with correctly captured semantics is challenging as different hardware platforms provide different data representations. The common example of this is 32-bit platforms versus 64-bit platforms which store different sized types in registers and therefore provide a different amount of data between userspace and the kernel. Emerging platforms, for example hardware with CHERI support, complicate this further. With pull request #4174 merged, Tock has taken a step to improve this by adding
CapabilityPtr
, a type within the kernel to clearly express when data within the kernel is a pointer. -
Tock 2.2 Release: First release tested with hardware-assisted CI
Version 2.2 of Tock has just been released! The 2.2 release marks significant improvements from the 2.1.1 release. Some major highlights include:
-
Rust's Mutex, Atomics and UnsafeCell – Spooky Action at a Distance?
In this post we explore how Rust's Atomic, Mutex, and UnsafeCell types interact with its type system and concepts of references and aliasing ⊕ mutability. We do so by looking at how the AtomicUsize and Mutex types are implemented, how violating Rust's assumptions can lead to incorrect optimizations by the compiler, and the surprising global impact of synchronization primitives.
-
TockWorld 7 Recap
On June 26-28 we held the 7th annual Tock gathering in San Diego, CA. This year combined a developer day, conference, and tutorials, expanding the purpose and audience of TockWorld.
-
Talking Tock 57: Cargo Build System for the Kernel
With pull request #4075 merged, Tock now supports using standard
cargo
commands directly when compiling the kernel for any Tock board. For example, you can now build the kernel for the nRF52840dk by simply: