/* SPDX-License-Identifier: GPL-3.0-only */
/* ╔════════════════════════════════════════════════════╗
* ║ __ ._ ._ ║
* ║ _______ ____ _____./ |_ ___ |_| ____| |__ ║
* ║ \___ / __ \\___ \_ __/ _ \ ____| |/ __| | \ ║
* ║ / __/\ ___/| |_> | || <_> |/___/| |\__ \| Y \ ║
* ║ /____ \\___ \| __/|__| \___/ |_/___ |__| / ║
* ║ \/ \/|_| \/ \/ ║
* ╚════════════════════════════════════════════════════╝
*/
A minimum-functionality satisfactory implementation of µITRON4.0 (according to 5.1.2 Minimum Required Functionalities).
It implements this minimum required functionality:
- Task creation/activation/termination (states: RUNNING, READY, DORMANT)
- Task scheduling (conforming, with acceptable limitations)
- Interrupt handling
And additionally:
- Task sleep/wake-up
- A couple vendor-specific service calls for convenience
All of this implemented as userspace Linux application.
See the Implementation Details for more details.
For now, not much.
If you run the current demo program (without reading its source), you will see it appears to hang after an hello world.
It is not hanging, it has no tasks to run anymore.
You can send SIGINT
or SIGUSR1
to start Task#1
, and SIGUSR2
to start Task#2
.
This is only a silly demo, though, so don't expect too much.
Since this is all for demonstration purposes only, an "interrupt model" in userspace has been defined.
See INTERRUPTS.md for details
Why what?
Because running this on real hardware would be cumbersome, especially at first!
In addition, I think designing it this way has value, as you could simulate applications on the host system, and hopefully run it later on embedded.
Have you never wanted to write your own µITRON4.0 specification OS? Weird.
Proof of concept at first.
Let's C where it goes from there...
No one stopped me.
Blame the French metric system.
Smaller than micro, and sounds neat.
¯\_(ツ)_/¯
Though mainly because I don't want to have TRON be part of the name of the project, since the TRON projects defines specifications.
And here, I'm roughly making something.