tock/tock: Tock 2.1
Creators
- Brad Campbell1
- Amit Levy2
- Philip Levis3
- Pat Pannuto4
- Alistair Francis5
- Alexandru Radovici6
- Hudson Ayers
- Leon Schuermann7
- Niklas Adolfsson8
- gendx
- Branden Ghena9
- Vochescu Alexandru
- lebakassemmerl
- Johnathan Van Why10
- Daniel B. Giffin
- Hubert Teo
- Rajiv M Ranganath
- Cosmin-Daniel Radu11
- Ian McIntyre
- Jett Rink
- Sebastian Lund
- Armin Namavari
- Bogdan Grigoruță
- Louis Thiery
- AnthonyQ619
- Ioana Culic12
- Arjun Deopujari13
- Vadim Sukhomlinov14
- Joshua Adkins15
- 1. University of Virginia
- 2. @princeton-sns @tock @mostlytyped @memcachier
- 3. Stanford University
- 4. University of California, San Diego
- 5. Western Digital
- 6. Politehnica University of Bucharest
- 7. @princeton-sns
- 8. @paritytech
- 9. Northwestern University
- 10. @google
- 11. @wyliodrinstudio
- 12. @Wyliodrin
- 13. UVA ECE @tock
- 14. Google
- 15. UC Berkeley | nLine
Description
Tock 2.1 has seen numerous changes from Tock 2.0. In particular, the new system call interface introduced with Tock 2.0 has been refined to provide more guarantees to processes with respect to sharing and unsharing buffers and upcalls. Other changes include the introduction of a userspace-readable allow system call, support for new HILs and boards, and various other bug-fixes and improvements to code size and documentation.
Breaking Changes- The implemented encoding of the system call return variant "Success with u32 and u64" has been changed to match the specification of TRD 104. Accordingly, the name of the
SyscallReturnVariant
enum variant has been changed fromSuccessU64U32
toSuccessU32U64
(#3175). VirtualMuxAlarm
s now require thesetup()
function to be called in board set up code after they are created (#2866).
- Subscribe and allow operations are no longer handled by capsules themselves, but through the kernel's
Grant
logic itself (#2906). This change has multiple implications for users of Tock:- The
Grant
type accepts the number of read-only and read-write allow buffers, as well as the number of subscribe upcalls. It will reserve a fixed amount of space perGrant
to store the respective allow and subscribe state. Thus, to make efficient use ofGrant
space, allow buffer and subscribe upcall numbers should be assigned in a non-sparse fashion. - Legal allow and subscribe calls can no longer be refused by a capsule. This implies that it is always possible for an application to cause the kernel to relinquish a previously shared buffer through an
allow
operation. Similarly,subscribe
can now be used to infallibly ensure that a given upcall will not be scheduled by the kernel any longer, although already enqueued calls to a given upcall function can still be delivered even after asubscribe
operation. The precise semantics around these system calls are described in TRD 104.
- The
- Introduction of a new userspace-readable allow system call, where apps are explicitly allowed to read buffers shared with the kernel (defined in a draft TRD).
- Introduction of a read-only state mechanism to convey information to processes without explicit system calls (#2381).
- Improvements to kernel code size (e.g., #2836, #2849, #2759, #2823).
hasher
public_key_crypto
- OpenTitan EarlGrey CW310
- Redboard Red-V B
- STM32F429I Discovery development board
- QEMU RISC-V 32-bit "virt" Platform
- OpenTitan EarlGrey NexysVideo
This release was tagged despite several known bugs in non-tier-1 boards, so as to avoid delaying the release. These include:
- Raspberry Pi Pico: process faults when running IPC examples: https://github.com/tock/tock/issues/3183
- The cortex-m exception handler does not correctly handle all possible exception entry cases. This is not known to currently manifest on any examples, but could with unlucky timing: https://github.com/tock/tock/issues/3109
- STM32F303 Discovery:
adc
app runs, but eventually hangs in the app (seems to be caught in the exit loop, but not sure why it gets there) - STM32F303 Discovery: kernel panics lead to only a partial printout of the panic message before the board enters a reboot loop
- weact_f401ccu6:
gpio
example fails to generate interrupts on the input pin. This board is likely to be deprecated soon anyway, as it is no longer available for sale.
Files
tock/tock-release-2.1.zip
Files
(18.9 MB)
Name | Size | Download all |
---|---|---|
md5:aa8e60be41ead01fdebd2a0679900735
|
18.9 MB | Preview Download |
Additional details
Related works
- Is supplement to
- https://github.com/tock/tock/tree/release-2.1 (URL)