No description
Find a file
Fábio Coutada 56d3bce974 feat(testing): add MC/DC test cases — Phase 4 complete
MC/DC (Modified Condition/Decision Coverage) test cases for DO-178C
compliance across all critical modules:

test_scheduler_mcdc.cpp (275 lines):
- S-6: scheduler_add_task() — null + queue full (compound OR)
- S-10: scheduler_preempt() — compound AND
- S-13: task_unblock() — null + state check (compound OR)
- S-14: scheduler_check_deadlines() — 3-way AND
- S-15: scheduler_priority_inherit() — null + comparison
- S-17: scheduler_check_time_partition() — null + time exceeded
- S-18: scheduler_context_switch_complete() — null + failure
- S-19: scheduler_get_stats() — null check
- S-20: task_get_info() — compound OR

test_ipc_mcdc.cpp (281 lines):
- IPC-2: uos_sampling_write() — argument validation (4 decisions)
- IPC-3: uos_sampling_read() — compound AND (validity + freshness)
- IPC-7: uos_queuing_send() — validation + blocking + full
- IPC-8: uos_queuing_recv() — validation + blocking + empty
- IPC-10: uos_shmem_get() — compound AND in lookup
- IPC-12: uos_ev_wait() — complex blocking logic
- IPC-13: uos_secure_vault_demo() — 3-way AND

test_memory_mcdc.cpp (183 lines):
- MM-3: mm_map_page() — compound null check
- MM-7: mm_add_region_to_domain() — compound null check
- MM-8: mm_handle_data_abort() — 4-way if-else-if
- MM-9: mm_print_statistics() — ternary operators
- Integer overflow/underflow boundary tests

test_partitions_mcdc.cpp (325 lines):
- PART-5: partition_configure() — compound AND-NOT
- PART-6: partition_start() — 4-way compound AND-NOT
- PART-14: partition_validate_safety() — 3 independent checks
- PART-15: partition_is_active() — compound AND
- PART-13: partition_find_by_name() — string match loop
- PART-1: partition_state_to_string() — all 13 switch cases

test_unreachable_justification.cpp (221 lines):
- 9 formally justified unreachable paths
- Risk assessment: 6 LOW, 3 MEDIUM, 0 HIGH
- All paths justified for DO-178C compliance

Total: 1,285 lines of MC/DC test cases covering 58 decision points
with 218 individual test cases across 4 critical modules.
2026-07-12 17:25:04 +01:00
.aurelio ci: add aurelio mirror action 2026-07-11 18:59:05 +01:00
.claude feat: implement core IPC, resource partitioning, health management, and RISC-V architecture parity enhancements. 2026-07-09 21:04:10 +01:00
.forgejo/workflows ci: add aurelio mirror action 2026-07-11 18:59:05 +01:00
.github/workflows feat(testing): add kernel coverage integration — Phase 3 complete 2026-07-12 17:13:51 +01:00
.hermes/plans fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
.mimocode fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
.zcode fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
cdk fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
docs fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
docs-extracted fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
guests fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
kernel feat(testing): add MC/DC test cases — Phase 4 complete 2026-07-12 17:25:04 +01:00
pikeos-mirror fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
pikeos-rebrand fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
rebrand-logs fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
share fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
src feat(import): Complete PikeOS 5.0 ecosystem import from devvm-arch 2026-07-06 21:01:41 +01:00
third_party fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
tools feat(testing): add kernel coverage integration — Phase 3 complete 2026-07-12 17:13:51 +01:00
website fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
xsd/src fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
.gitignore feat(kernel): add Stage 1 bare-metal hypervisor skeleton for QEMU ARM virt 2026-07-06 22:51:56 +01:00
.gitmodules refactor: remove mycelium-tfw-extension to centralize in mycelium repo 2026-07-12 15:34:58 +01:00
.woodpecker.yml fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
AGENTS.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
AURELIO_INTEGRATION.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
AUTOSAR_CPP.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
BLOCK_DRIVER_IMPLEMENTATION.md feat(universalisos): PikeOS-style Phase B/C device drivers + Phase D microkernel 2026-07-09 09:10:53 +01:00
BUILD_ENVIRONMENT.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
CHANGELOG.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
COMPONENTS.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
eradicate_prefixes.sh fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
fix_naming.sh fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
HYPERVISOR.md feat(phase-a): complete PikeOS 5.0 context switching implementation 2026-07-07 23:44:30 +01:00
implementation_plan.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
IMPORT_GUIDE.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
IMPORT_SUMMARY.md feat(import): Complete PikeOS 5.0 ecosystem import from devvm-arch 2026-07-06 21:01:41 +01:00
LICENSE feat(repository): Initialize Universalisos repository with core documentation 2026-07-06 17:54:22 +01:00
pikeos_5_parity_gap_analysis.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
pikeos_mirror_full_index.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
README.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
rebrand.sh fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
rebrand_docs.sh fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
RISCV_PIKEOS_PARITY_PLAN.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
UNIVERSALISOS_PIKEOS_ANALYSIS.md analysis: comprehensive UniversalisOS vs PikeOS 5.0 parity assessment 2026-07-08 00:04:05 +01:00
universalisos_status_report.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
UNIVERSALISOS_VS_PIKEOS_5.0.md feat(phase-a): complete PikeOS 5.0 context switching implementation 2026-07-07 23:44:30 +01:00
uos_map.h fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
VERSION fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
XSD_WORKFLOW_ANALYSIS.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00

UniversalisOS — Safety-Critical Type-1 Hypervisor

License: MIT Version

UniversalisOS is a safety-critical type-1 hypervisor for cyber-physical systems, implementing PikeOS 5.0 patterns. Supports ARMv7, AArch64 (EL2), and RISC-V (S-mode) with ARINC-653 partitioning, VirtIO paravirtualization, and live migration.

Quick Start

Prerequisites

  • ARMv7: arm-none-eabi-gcc + qemu-system-arm
  • AArch64: aarch64-linux-gnu-gcc + qemu-system-aarch64
  • RISC-V: riscv64-linux-gnu-gcc + qemu-system-riscv64
  • Mycelium: Rust toolchain (cargo)
  • Tools: Python 3.11+

Build the Kernel

cd kernel

# ARMv7 (primary, fully tested)
make ARCH=armv7 PLATFORM=qemu-arm-virt

# AArch64 (EL2 hypervisor)
make ARCH=aarch64 PLATFORM=qemu-aarch64-virt

# RISC-V (Icicle Kit)
make ARCH=riscv PLATFORM=polarfire

Run in QEMU

# ARMv7
qemu-system-arm -M virt -cpu cortex-a15 -m 512M \
  -nographic -kernel build/armv7/qemu-arm-virt/universalisos.elf

# AArch64 (virtualization=on is mandatory)
qemu-system-aarch64 -M virt,gic-version=3,virtualization=on \
  -cpu cortex-a53 -m 512M -smp 4 -nographic \
  -kernel build/aarch64/qemu-aarch64-virt/universalisos.elf

# RISC-V (bare-metal, BSP only)
qemu-system-riscv64 -machine microchip-icicle-kit -smp 5 -m 2G \
  -nographic -bios none -kernel build/riscv/polarfire/universalisos.elf

Press Ctrl+A then X to exit QEMU.

Architecture

┌──────────────────────────────────────────────┐
│  Guest Partitions (ARINC-653, POSIX, Bare)   │
├──────────────────────────────────────────────┤
│  Hypercall Interface (HVC / ecall / SVC)     │
├──────────────────────────────────────────────┤
│  Hypervisor Core                             │
│  ├─ Scheduler (priority, time-partitioning)  │
│  ├─ Memory (MMU, stage-2, partitions)        │
│  ├─ IPC (sampling ports, mailbox)            │
│  ├─ VirtIO (blk, net, console)              │
│  ├─ Migration (checkpoint/restore)           │
│  └─ Health Monitor                           │
├──────────────────────────────────────────────┤
│  Hardware Abstraction (ARM GIC, PL011, etc.) │
└──────────────────────────────────────────────┘

Project Structure

Directory Description
kernel/ Hypervisor kernel (C++, freestanding)
tools/uos-cover/ Coverage toolchain (8 tools, DO-178C)
tools/uos-pkg/ Package toolchain (RPM spec parser, build engine)
mycelium-tfw-extension/ VS Code extension for test framework
guests/ Guest OS payloads (Linux aarch64, RISC-V sampling)
src/ PikeOS source import (reference)
docs/ Documentation (extracted PikeOS manuals, parity specs)
third_party/ External deps (musl-uos-port, hardened_malloc)

What's Included

  • 3 architecture backends: ARMv7 (SVC-based), AArch64 (EL2 HVC), RISC-V (S-mode ecall)
  • ARINC-653 partitioning: Time-partitioned scheduling, sampling ports, error management
  • VirtIO paravirtualization: Block, network, and console devices via hypercalls
  • Live migration: Checkpoint/restore with guest state, memory, and device snapshots
  • Coverage toolchain: Instrumentation, structural linking, report generation, justification, traceability
  • Package toolchain: RPM 4.2-compatible spec parser and build engine
  • ADT library port: PikeOS data structures (AVL, CRC32, list, lheap, kdev)
  • Mycelium toolchain: XSD-to-C code generation (21 Rust crates replacing proprietary configconv)
  • DO-178C certification support: Verification plans, evidence packaging, traceability matrices

Build Instructions

ARMv7

cd kernel
make ARCH=armv7 PLATFORM=qemu-arm-virt

Output: build/armv7/qemu-arm-virt/universalisos.elf

AArch64

cd kernel
make ARCH=aarch64 PLATFORM=qemu-aarch64-virt

Output: build/aarch64/qemu-aarch64-virt/universalisos.elf

RISC-V

cd kernel
make ARCH=riscv PLATFORM=polarfire

Output: build/riscv/polarfire/universalisos.elf

AArch64 with Linux Guest

cd kernel
make run-linux-real ROOTFS=<path-to-rootfs.img>

Clean Builds

make clean          # Clean current arch/platform
make clean-all      # Clean all build trees

Documentation

Safety Standards

UniversalisOS targets compliance with:

  • DO-178C — Airborne software (DAL-A through DAL-E)
  • ISO 26262 — Automotive functional safety (ASIL-D)
  • MISRA C++ / MISRA C — Coding guidelines
  • ARINC 653 — Avionics application standard

License

MIT License — see LICENSE for details.

Integration

UniversalisOS integrates with the PortugalFuturista ecosystem:

  • nervura-electrica — Infrastructure platform and hosting
  • Aurelio — Compiler, gateway, and cyber-physical brain platform
  • mycelium — XSD-to-C configuration toolchain