-
Talking Tock 60: x86 Architecture Support
With PR #4385 merged, Tock is now compatible with x86-based platforms! For now, this is only for 32-bit architectures (e.g., i486). Upstream Tock supports a QEMU version of the Q35 machine type.
-
Talking Tock 59: Runtime process loading support
With PR #3941 merged, the Tock kernel now supports dynamically loading userspace apps at runtime. New apps can be installed on a board without restarting Tock or affecting any existing applications.
-
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.