Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
3921 commits
Select commit Hold shift + click to select a range
cc0cbd9
refactor(task): remove dead kstd_vector includes after etl migration
MRNIU Feb 27, 2026
a6bf059
Merge branch 'feature/etl-containers-migration'
MRNIU Feb 27, 2026
cf6d3a8
fix(task): provide explicit etl::vector container type for sleeping_t…
MRNIU Feb 27, 2026
e438244
style: update include styler
MRNIU Feb 27, 2026
cd25f16
fix: update cmake
MRNIU Feb 27, 2026
527bd5c
fix: add math.h, waiting for c++26
MRNIU Feb 27, 2026
ab7ba87
docs: etl plans
MRNIU Feb 27, 2026
b523f64
refactor: replace sk_assert with assert
MRNIU Feb 27, 2026
fe7fa1e
refactor: kstd
MRNIU Feb 28, 2026
6136111
fix: update unique_ptr
MRNIU Feb 28, 2026
e94ce69
refactor: migrate Singleton<T> to etl::singleton<T> named aliases
MRNIU Feb 28, 2026
d2c1ff2
refactor(arch): move arch-specific singletons out of kernel.h and mak…
MRNIU Feb 28, 2026
41b1a80
refactor(arch): remove static from Interrupt handler arrays
MRNIU Feb 28, 2026
fa41f51
3rd: add cpu_io
MRNIU Feb 28, 2026
36d5cde
refactor(arch): move arch-specific singletons from kernel.h to arch d…
MRNIU Feb 28, 2026
df2d13d
fix: string
MRNIU Feb 28, 2026
9870bde
fix: string
MRNIU Feb 28, 2026
470ed18
refactor: klog
MRNIU Feb 28, 2026
1958b73
refactor: io_buffer
MRNIU Feb 28, 2026
4f07b42
doc: update AGENT.md
MRNIU Feb 28, 2026
edfb305
doc(etl): add ETL integration migration design plan
MRNIU Feb 28, 2026
46a38d4
fix(libc): wrap noexcept in __cplusplus guard for C compilation
MRNIU Feb 28, 2026
79db340
feat(task): add ETL message and router ID registry
MRNIU Feb 28, 2026
dc75be8
refactor(task): replace CloneFlags enum and cpu_affinity with etl::flags
MRNIU Feb 28, 2026
86af6ce
refactor(interrupt): replace InterruptFunc pointer with etl::delegate
MRNIU Feb 28, 2026
906d1d7
refactor(task): replace TaskStatus enum with etl::fsm state machine
MRNIU Feb 28, 2026
89b3fe8
fix(task): address code quality review findings for etl::fsm migration
MRNIU Feb 28, 2026
41fa41c
feat(kernel): add tick and panic observer interfaces using etl::observer
MRNIU Feb 28, 2026
6ccea0b
feat(kernel): add lifecycle and virtio message types for etl::message…
MRNIU Feb 28, 2026
6955faa
docs(plans): add ETL migration implementation plan
MRNIU Feb 28, 2026
9f5b563
Merge branch 'feature/etl-migration'
MRNIU Feb 28, 2026
9070858
fix: task_fsm
MRNIU Feb 28, 2026
809ddf9
refactor: InterruptDelegate
MRNIU Feb 28, 2026
09e2155
style: update include style
MRNIU Feb 28, 2026
96b72c7
refactor: fsm
MRNIU Feb 28, 2026
980f883
refactor: task_control_block
MRNIU Feb 28, 2026
72fb14c
test: fix st
MRNIU Feb 28, 2026
0e9992d
chore(docs): remove superseded etl-migration plan files
MRNIU Feb 28, 2026
929cdd5
feat(expected): add VirtIO/device error codes for device_framework un…
MRNIU Feb 28, 2026
18f5530
feat(device): add platform_config.hpp concrete impl for device_framew…
MRNIU Feb 28, 2026
3022af5
build(device): use BEFORE in TARGET_INCLUDE_DIRECTORIES for platform_…
MRNIU Feb 28, 2026
54846c4
refactor(device_node): replace atomic<bool> with SpinLock-guarded boo…
MRNIU Feb 28, 2026
0d36548
refactor(df_bridge): remove DeviceStorage and ToKernelError, error ty…
MRNIU Feb 28, 2026
3dd1522
refactor(driver_registry): add etl::flat_map index for O(log N) platf…
MRNIU Feb 28, 2026
21618ed
refactor(virtio_blk_driver): remove Traits template param, use unifie…
MRNIU Feb 28, 2026
851605e
refactor(device): remove PlatformTraits template usage, unify error h…
MRNIU Feb 28, 2026
c852757
fix(arch/riscv64): remove PlatformTraits template param from VirtioBl…
MRNIU Feb 28, 2026
42a1176
fix(device): add kMaxSpinIterations to PlatformTraits; use TryBind() …
MRNIU Feb 28, 2026
d77a4d0
chore(submodule): bump device_framework to merged main (440bfe7)
MRNIU Feb 28, 2026
85e2092
refactor(device): delete placeholder and redundant header files
MRNIU Mar 1, 2026
3df49b0
refactor(device): simplify device module — remove Driver concept and …
MRNIU Mar 1, 2026
4c7e161
fix(arch/riscv64,device): update interrupt_main and virtio_blk_driver…
MRNIU Mar 1, 2026
d304efe
docs(device): add device_framework integration design doc
MRNIU Mar 1, 2026
9abe0b3
chore(device): create driver/ subdirectory skeleton
MRNIU Mar 1, 2026
d4de005
feat(device): add traits.hpp inlined from device_framework
MRNIU Mar 1, 2026
ab2ec34
feat(device): add ops/device_ops_base.hpp inlined from device_framework
MRNIU Mar 1, 2026
39cd119
feat(device): add ops/char_device.hpp inlined from device_framework
MRNIU Mar 1, 2026
2310a60
feat(device): add ops/block_device_ops.hpp inlined from device_framework
MRNIU Mar 1, 2026
c7f099c
feat(device): add detail/mmio_accessor.hpp inlined from device_framework
MRNIU Mar 1, 2026
6455a07
feat(device): add detail/storage.hpp inlined from device_framework
MRNIU Mar 1, 2026
1170e44
feat(device): add detail/uart_device.hpp inlined from device_framework
MRNIU Mar 1, 2026
35ec909
feat(device): add detail/ns16550a/ inlined from device_framework
MRNIU Mar 1, 2026
d7cc63e
feat(device): add detail/pl011/ inlined from device_framework
MRNIU Mar 1, 2026
82dc38d
feat(device): add detail/virtio/defs.h + traits.hpp (task 11)
MRNIU Mar 1, 2026
f9a0883
feat(device): add detail/virtio/transport/ (task 12)
MRNIU Mar 1, 2026
cd5f451
feat(device): add detail/virtio/virt_queue/ inlined from device_frame…
MRNIU Mar 1, 2026
fb0b357
feat(device): add detail/virtio/device/ inlined from device_framework
MRNIU Mar 1, 2026
10a21c7
feat(device): add detail/acpi/ inlined from device_framework
MRNIU Mar 1, 2026
18b9d2b
feat(device): add pl011/acpi facade headers and update driver include…
MRNIU Mar 1, 2026
42e5514
refactor(arch): replace device_framework includes with inlined driver…
MRNIU Mar 1, 2026
02344b3
build: remove device_framework from CMake and .gitmodules
MRNIU Mar 1, 2026
9c73cec
chore(device): remove device_framework submodule and platform_config.…
MRNIU Mar 1, 2026
fcaaa63
fix(device): add platform_config.hpp for inlined VirtIO driver and fi…
MRNIU Mar 1, 2026
5eb0af1
style: apply clang-format to VirtIO device and transport headers
MRNIU Mar 1, 2026
25e11e6
docs: remove plan
MRNIU Mar 1, 2026
c4721ff
refactor(device): replace raw array+ptr with etl::vector/flat_map in …
MRNIU Mar 1, 2026
e06ef8c
refactor(device): migrate Ns16550aDriver to etl::delegate, remove Dri…
MRNIU Mar 1, 2026
5968f3e
refactor(device): migrate VirtioBlkDriver to etl::optional + etl::del…
MRNIU Mar 1, 2026
b3f7bb1
refactor(device): delete detail/storage.hpp, superseded by etl::optional
MRNIU Mar 1, 2026
9ae7637
docs(device): update AGENTS.md for ETL refactor
MRNIU Mar 1, 2026
908514d
docs(device): fix duplicate section in AGENTS.md
MRNIU Mar 1, 2026
28c72c9
docs: add device module refactor design document
MRNIU Mar 1, 2026
314bcf9
refactor(device): extract VirtioBlkVfsAdapter to dedicated header
MRNIU Mar 1, 2026
238164a
test(device): add failing tests for VirtioDriver
MRNIU Mar 1, 2026
34f9889
feat(device): add unified VirtioDriver with runtime device-type dispatch
MRNIU Mar 1, 2026
f288f4a
build(device): add virtio_driver.cpp to device library sources
MRNIU Mar 1, 2026
e0cc946
refactor(device): update DeviceInit to use unified VirtioDriver
MRNIU Mar 1, 2026
106936a
refactor(device): ns16550a_driver include ns16550a.hpp directly
MRNIU Mar 1, 2026
2eb8d5f
refactor(device): pl011_driver include pl011.hpp directly
MRNIU Mar 1, 2026
aabc8e5
refactor(device): delete dead ops/ CRTP layer and unused device wrappers
MRNIU Mar 1, 2026
b85c1e9
docs(device): update AGENTS.md for new VirtioDriver architecture
MRNIU Mar 1, 2026
d3a2f18
Merge branch 'feat/device-refactor'
MRNIU Mar 1, 2026
c3b0dda
3rd: update
MRNIU Mar 1, 2026
a75047b
refactor(device): restructure drivers into per-driver subdirectories
MRNIU Mar 1, 2026
9c0c06d
refactor: device
MRNIU Mar 1, 2026
133682b
feat(device,fdt): add ForEachDeviceNode filter and split device_manager
MRNIU Mar 1, 2026
76f06c2
refactor(device): assert-harden mmio_helper and use ForEachDeviceNode
MRNIU Mar 1, 2026
b3b9d8e
refactor: device
MRNIU Mar 1, 2026
e42bd46
refactor: device
MRNIU Mar 1, 2026
3c42396
refactor(virtio): reorganize device/ into per-type subdirectories
MRNIU Mar 1, 2026
22555d1
refactor(virtio): modernize VirtioBlk with std::array
MRNIU Mar 1, 2026
0da72d6
Merge branch 'refactor/virtio-restructure'
MRNIU Mar 1, 2026
641875a
3rd: update cpu_io
MRNIU Mar 1, 2026
a4a0c40
refactor: device
MRNIU Mar 1, 2026
1f7bb59
feat: mmio_accessor
MRNIU Mar 1, 2026
2d4cce0
feat(arch/riscv64): add etl_putchar shim for ETL print support
MRNIU Mar 1, 2026
57092c5
feat(arch/aarch64): add etl_putchar shim for ETL print support
MRNIU Mar 1, 2026
2a74038
feat(arch/x86_64): add etl_putchar shim for ETL print support
MRNIU Mar 1, 2026
1946f47
refactor(device): migrate klog calls to ETL format syntax
MRNIU Mar 1, 2026
1e163e4
refactor(task): migrate klog calls to ETL format syntax
MRNIU Mar 1, 2026
8da36b0
refactor(arch): migrate klog calls to ETL format syntax
MRNIU Mar 1, 2026
88cdf93
refactor(src): migrate klog calls to ETL format syntax
MRNIU Mar 1, 2026
1b17db5
docs: update
MRNIU Mar 1, 2026
aa513c2
docs: update
MRNIU Mar 1, 2026
c976afd
feat(klog): rewrite kernel_log.hpp with type-safe {} format syntax
MRNIU Mar 1, 2026
840b076
docs: update
MRNIU Mar 1, 2026
8615148
refactor(libc): remove nanoprintf, replace sk_printf with emit helpers
MRNIU Mar 1, 2026
a4cf7bc
Merge branch 'refactor/remove-nanoprintf'
MRNIU Mar 1, 2026
d04e882
3rd: update cpu_io
MRNIU Mar 1, 2026
c62eeb5
refactor(libc): replace sk_putchar with etl_putchar
MRNIU Mar 1, 2026
96413b2
refactor(klog): simplify kernel_log — 8 complexity fixes
MRNIU Mar 1, 2026
e2687f5
refactor: replace nanoprintf with etl
MRNIU Mar 1, 2026
743b67f
docs: remove plans
MRNIU Mar 1, 2026
c8a5890
feat: remove kstd::ostream
MRNIU Mar 1, 2026
7c7fecd
refactor: sk_print_str
MRNIU Mar 1, 2026
347ee5f
style: replace __attribute__ with [[xxx]]
MRNIU Mar 2, 2026
f23f126
style: replace __attribute__ with [[xxx]]
MRNIU Mar 2, 2026
0948aff
fix: backtrace
MRNIU Mar 2, 2026
5c1f87f
fix: virtio
MRNIU Mar 2, 2026
179f164
refactor: device
MRNIU Mar 2, 2026
c3de0cf
refactor(device): unify driver singletons to etl::singleton
MRNIU Mar 2, 2026
4c00570
refactor: device
MRNIU Mar 2, 2026
3c14990
docs: remove etl docs
MRNIU Mar 2, 2026
e1546c4
fix(device): resolve singleton alias forward-reference in GetEntry()
MRNIU Mar 2, 2026
6256fc9
feat(device): add DmaRegion type and IoBuffer::ToDmaRegion()
MRNIU Mar 2, 2026
2cc08bb
refactor(device): replace void* DMA with DmaRegion + VirtToPhys abstr…
MRNIU Mar 2, 2026
adf9435
Merge branch 'feature/dma-region'
MRNIU Mar 2, 2026
5bb1b83
refactor: sk_print_str
MRNIU Mar 2, 2026
2cbffc9
refactor: device
MRNIU Mar 2, 2026
659ba02
feat(log): add per-CPU lock-free LogLineRaw/LogStreamRaw interfaces
MRNIU Mar 2, 2026
91a3e1c
fix(arch): use lock-free klog::raw_err in DumpStack to prevent deadlock
MRNIU Mar 2, 2026
0a6a968
refactor: klog
MRNIU Mar 2, 2026
b8926c5
refactor: klog
MRNIU Mar 2, 2026
af170d6
refactor: klog
MRNIU Mar 2, 2026
89e4b4a
3rd: add stb and EasyLogger
MRNIU Mar 3, 2026
ba5b96a
3rd: add stb and EasyLogger
MRNIU Mar 3, 2026
6a102e2
3rd: add stb and EasyLogger
MRNIU Mar 3, 2026
4ef9b5f
3rd: add stb and EasyLogger
MRNIU Mar 3, 2026
b1d9e6c
docs(log): add MPMC log refactor design and implementation plan
MRNIU Mar 3, 2026
4665623
refactor(log): rewrite kernel_log.hpp with MPMC lock-free queue
MRNIU Mar 3, 2026
9f448a2
refactor(log): migrate src/main.cpp to new klog API
MRNIU Mar 3, 2026
affc4b1
refactor(log): migrate src/arch/x86_64/ to new klog API
MRNIU Mar 3, 2026
090c62f
refactor(log): migrate src/arch/riscv64/ to new klog API
MRNIU Mar 3, 2026
f9ed87e
refactor(log): migrate src/arch/aarch64/ to new klog API
MRNIU Mar 3, 2026
4b865d1
refactor(log): migrate src/memory/ to new klog API
MRNIU Mar 3, 2026
ba65624
refactor(log): migrate src/device/ to new klog API
MRNIU Mar 3, 2026
a4e1236
refactor(log): migrate src/task/ to new klog API
MRNIU Mar 3, 2026
a8fd75b
refactor(log): migrate src/filesystem/ to new klog API
MRNIU Mar 3, 2026
7811ccd
refactor(log): migrate remaining headers and syscall to new klog API
MRNIU Mar 3, 2026
19f9e53
refactor(log): update commented-out klog calls in spinlock.hpp to new…
MRNIU Mar 3, 2026
74b328a
fix(log): replace __always_inline with inline on variadic klog functions
MRNIU Mar 3, 2026
a3413c5
fix(log): add missing cpu_io.h include for GetCurrentCoreId
MRNIU Mar 3, 2026
e852253
feat: mpsc log
MRNIU Mar 4, 2026
263ecbb
Merge branch 'refactor/mpmc-log'
MRNIU Mar 4, 2026
f822a01
feat: etl format
MRNIU Mar 4, 2026
96eac4e
fix: etl format
MRNIU Mar 7, 2026
1f46c1a
style: update
MRNIU Mar 7, 2026
282baaa
style: update
MRNIU Mar 7, 2026
d6cea43
feat: log with core id
MRNIU Mar 7, 2026
2c10805
feat: log with core id
MRNIU Mar 7, 2026
2cc9ac3
feat: working on smp
MRNIU Mar 7, 2026
e9dca22
3rd: update etl
MRNIU Mar 8, 2026
65655c8
3rd: update etl
MRNIU Mar 8, 2026
abe8f87
style: update
MRNIU Mar 9, 2026
61a774f
fix: add boot_task
MRNIU Mar 9, 2026
4fa5a9b
fix: move TimerInit to main
MRNIU Mar 9, 2026
71c14ee
fix: move TimerInit to main
MRNIU Mar 9, 2026
138a17d
doc: update AGENTS.md
MRNIU Mar 10, 2026
4b62f82
style: update
MRNIU Mar 10, 2026
d6f8c39
style: update
MRNIU Mar 10, 2026
f6f4413
style: update
MRNIU Mar 10, 2026
5368836
style: update
MRNIU Mar 10, 2026
de15a46
style: update
MRNIU Mar 10, 2026
3c51b6c
style: update
MRNIU Mar 10, 2026
912116b
style: use pragma once
MRNIU Mar 10, 2026
7d192b0
style: update
MRNIU Mar 10, 2026
7e58bd5
style(arch,filesystem,memory): update headers to coding standards
MRNIU Mar 10, 2026
714cad4
style: use trailing return types in .cpp and arch.h
MRNIU Mar 10, 2026
e19ce72
style: update
MRNIU Mar 11, 2026
f4a952b
style: update
MRNIU Mar 11, 2026
ad9f9fa
style: update
MRNIU Mar 11, 2026
0468109
style: update
MRNIU Mar 11, 2026
b32fcf6
style: update
MRNIU Mar 11, 2026
9ede4b1
style: update
MRNIU Mar 11, 2026
0aff049
style: update
MRNIU Mar 11, 2026
7062582
style: update
MRNIU Mar 11, 2026
120f937
style: update
MRNIU Mar 11, 2026
c12081f
style: update
MRNIU Mar 13, 2026
d269b9e
style: update
MRNIU Mar 13, 2026
0e14242
style: update
MRNIU Mar 13, 2026
6d06d10
style: update
MRNIU Mar 13, 2026
e30f707
style: update
MRNIU Mar 13, 2026
d55a4cd
style: update
MRNIU Mar 13, 2026
2ef12ea
style: update
MRNIU Mar 13, 2026
1b2c35a
style: update
MRNIU Mar 13, 2026
32b2b01
style: update
MRNIU Mar 13, 2026
378df42
style: update
MRNIU Mar 13, 2026
2fbdff5
style: update
MRNIU Mar 16, 2026
401fdf8
style: update
MRNIU Mar 16, 2026
550166e
style: update
MRNIU Mar 16, 2026
3ab5d4a
docs: update AGENTS.md
MRNIU Mar 16, 2026
b640df2
test: fix st
MRNIU Mar 16, 2026
16e9a00
style: update
MRNIU Mar 16, 2026
490b88f
style: update
MRNIU Mar 16, 2026
dd2a75d
test: fix st
MRNIU Mar 17, 2026
69a10d4
test: fix st
MRNIU Mar 17, 2026
a6dcb17
test: fix st
MRNIU Mar 17, 2026
3d264d3
docs: update AGENTS.md
MRNIU Mar 18, 2026
d3549d1
fix: warnning
MRNIU Mar 18, 2026
da0693c
fix(multi): address Copilot review findings across IO APIC, VFS, devi…
MRNIU Mar 18, 2026
a34714f
test: update devcontainer
MRNIU Mar 19, 2026
7527168
merge: upstream
MRNIU Mar 19, 2026
c953681
test: update devcontainer
MRNIU Mar 19, 2026
b4f72e6
test: update devcontainer
MRNIU Mar 19, 2026
bee7635
test: update devcontainer
MRNIU Mar 19, 2026
aa94bf0
Merge remote-tracking branch 'upstream'
MRNIU Mar 19, 2026
dc52556
feat: working on signal
MRNIU Mar 19, 2026
7610c3d
test: fix st
MRNIU Mar 19, 2026
5574c2a
fix: update st
MRNIU Mar 20, 2026
7eb2168
fix: st
MRNIU Mar 20, 2026
1508849
test: update ci
MRNIU Mar 20, 2026
f8c39cc
test: update ci
MRNIU Mar 20, 2026
33e0169
fix(cmake): create /srv/tftp directory before symlinking
MRNIU Mar 20, 2026
6f96431
fix(devcontainer): create /srv/tftp for QEMU built-in TFTP server
MRNIU Mar 20, 2026
7def88e
fix(devcontainer): add libssl-dev for U-Boot build
MRNIU Mar 20, 2026
34c0230
fix(devcontainer): add aarch64-linux-gnu-cpp alternative for OP-TEE b…
MRNIU Mar 20, 2026
37b0f52
feat(syscall): wire signal and affinity syscalls into dispatcher
MRNIU Mar 20, 2026
fa40d05
test(task): add yield system test
MRNIU Mar 20, 2026
cec4251
test: claen main.cpp
MRNIU Mar 20, 2026
3cbfa88
test(task): add fork system test
MRNIU Mar 20, 2026
49b1998
test(task): add signal, affinity, tick, zombie_reap, stress system tests
MRNIU Mar 20, 2026
5e6e1d6
fix: st
MRNIU Mar 20, 2026
bcd9be6
test: fix st
MRNIU Mar 20, 2026
82ae3a9
test: working on st
MRNIU Mar 20, 2026
ceba98c
fix: st
MRNIU Mar 20, 2026
4d8800e
fix: timer seq bug
MRNIU Mar 20, 2026
aca5734
fix: timer seq bug
MRNIU Mar 20, 2026
3fc9132
feat: remove x86_64
MRNIU Mar 20, 2026
3b3697b
fix(ci): use virtio-net-device and correct codecov path for ARM runner
MRNIU Mar 20, 2026
5f214f8
perf(ci): parallelize jobs, prebuilt Docker image, caching and shallo…
MRNIU Mar 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 7 additions & 10 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -29,20 +29,19 @@ RUN apt-get update && apt-get upgrade -y && \
python3-setuptools \
uuid-dev \
libgnutls28-dev \
libssl-dev \
swig \
libgtest-dev \
doxygen \
graphviz \
lcov \
qemu-system-x86 \
qemu-system-arm \
qemu-system-misc \
gdb-multiarch \
gcc-14 g++-14 \
gcc-14-riscv64-linux-gnu g++-14-riscv64-linux-gnu \
gcc-14-aarch64-linux-gnu g++-14-aarch64-linux-gnu \
gcc-14-arm-linux-gnueabihf g++-14-arm-linux-gnueabihf \
gcc-14-x86-64-linux-gnu g++-14-x86-64-linux-gnu && \
gcc-14-arm-linux-gnueabihf g++-14-arm-linux-gnueabihf && \
update-alternatives \
--install /usr/bin/gcc gcc /usr/bin/gcc-14 100 \
--slave /usr/bin/g++ g++ /usr/bin/g++-14 \
Expand All @@ -56,16 +55,14 @@ RUN apt-get update && apt-get upgrade -y && \
--install /usr/bin/aarch64-linux-gnu-gcc aarch64-linux-gnu-gcc \
/usr/bin/aarch64-linux-gnu-gcc-14 100 \
--slave /usr/bin/aarch64-linux-gnu-g++ aarch64-linux-gnu-g++ \
/usr/bin/aarch64-linux-gnu-g++-14 && \
/usr/bin/aarch64-linux-gnu-g++-14 \
--slave /usr/bin/aarch64-linux-gnu-cpp aarch64-linux-gnu-cpp \
/usr/bin/aarch64-linux-gnu-cpp-14 && \
update-alternatives \
--install /usr/bin/arm-linux-gnueabihf-gcc arm-linux-gnueabihf-gcc \
/usr/bin/arm-linux-gnueabihf-gcc-14 100 \
--slave /usr/bin/arm-linux-gnueabihf-g++ arm-linux-gnueabihf-g++ \
/usr/bin/arm-linux-gnueabihf-g++-14 && \
update-alternatives \
--install /usr/bin/x86_64-linux-gnu-gcc x86_64-linux-gnu-gcc \
/usr/bin/x86_64-linux-gnu-gcc-14 100 \
--slave /usr/bin/x86_64-linux-gnu-g++ x86_64-linux-gnu-g++ \
/usr/bin/x86_64-linux-gnu-g++-14 && \
apt-get autoremove -y && apt-get clean -y && \
rm -rf /var/lib/apt/lists/*
rm -rf /var/lib/apt/lists/* && \
mkdir -p /srv/tftp
3 changes: 1 addition & 2 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,7 @@
"plorefice.devicetree",
"zixuanwang.linkerscript",
"dan-c-underwood.arm",
"zhwu95.riscv",
"13xforever.language-x86-64-assembly"
"zhwu95.riscv"
]
}
}
Expand Down
48 changes: 48 additions & 0 deletions .github/workflows/dev-image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Copyright The SimpleKernel Contributors

name: dev-image

on:
push:
branches: [main]
paths:
- '.devcontainer/Dockerfile'
- '.github/workflows/dev-image.yml'
workflow_dispatch:

env:
IMAGE: ghcr.io/simple-xx/simplekernel-dev

jobs:
build-and-push:
runs-on: ubuntu-24.04-arm
permissions:
contents: read
packages: write
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push
uses: docker/build-push-action@v6
with:
context: .devcontainer
file: .devcontainer/Dockerfile
push: true
tags: |
${{ env.IMAGE }}:latest
${{ env.IMAGE }}:${{ github.sha }}
cache-from: type=gha
cache-to: type=gha,mode=max
138 changes: 108 additions & 30 deletions .github/workflows/workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,54 +3,132 @@
name: build

on:
- push
- pull_request
- release
push:
pull_request:
release:
types: [published]
Comment on lines 3 to +9
Copy link

Copilot AI Mar 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR 描述聚焦于 CI 性能优化,但该 PR 同时包含大量内核功能变更(信号机制、Wait/Exit 并发语义调整)、系统测试大规模新增、以及 x86_64 架构与相关构建/文档的整体移除。这会显著增加 review 与回滚成本;建议将 CI/workflow 变更与内核/架构变更拆分为独立 PR,或至少在 PR 描述中明确列出这些非 CI 范畴的重大改动与迁移影响。

Copilot uses AI. Check for mistakes.

# Cancel in-progress runs for the same branch/PR
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
# PR: 3 runs for speed; push/release: 10 runs for stability
SYSTEM_TEST_RUNS: ${{ github.event_name == 'pull_request' && 3 || 10 }}

jobs:
build:
runs-on: ubuntu-latest
build-riscv64:
runs-on: ubuntu-24.04-arm
permissions:
contents: write
contents: read
packages: read
statuses: write
container:
image: ghcr.io/simple-xx/simplekernel-dev:latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
fetch-depth: 1

- name: x86_64
uses: devcontainers/ci@v0.3
- name: Shallow submodule init
run: git submodule update --init --recursive --depth 1

- name: Cache CMake build (riscv64)
uses: actions/cache@v4
with:
runCmd: |
cmake --preset=build_x86_64
cmake --build build_x86_64 --target SimpleKernel unit-test coverage docs
path: build_riscv64/
key: cmake-riscv64-${{ runner.arch }}-${{ hashFiles('CMakeLists.txt', 'cmake/**', 'src/**') }}
Copy link

Copilot AI Mar 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

当前缓存 key 将 'src/' 全量纳入 hashFiles,意味着几乎任意源码改动都会导致缓存完全失效,从而降低“增量编译缓存”的命中率与收益。更可维护/更高命中率的做法通常是:缓存更细粒度(例如 ccache 或 Conan/vcpkg 产物),或只对会影响构建系统配置的文件生成 key(CMakeLists/cmake/ + toolchain + 3rd 依赖版本),再用 restore-keys 做回退。

Suggested change
key: cmake-riscv64-${{ runner.arch }}-${{ hashFiles('CMakeLists.txt', 'cmake/**', 'src/**') }}
key: cmake-riscv64-${{ runner.arch }}-${{ hashFiles('CMakeLists.txt', 'cmake/**') }}

Copilot uses AI. Check for mistakes.
restore-keys: |
cmake-riscv64-${{ runner.arch }}-

- name: Configure & Build
run: |
cmake --preset=build_riscv64
cmake --build build_riscv64 --target SimpleKernel docs

- name: System Test
run: |
for i in $(seq 1 $SYSTEM_TEST_RUNS); do
echo "=== riscv64 System Test Run $i/$SYSTEM_TEST_RUNS ==="
if ! timeout 300 cmake --build build_riscv64 --target system_test_run; then
echo "riscv64 system test run $i/$SYSTEM_TEST_RUNS FAILED"
exit 1
fi
echo "riscv64 system test run $i/$SYSTEM_TEST_RUNS passed"
done

- name: riscv64
uses: devcontainers/ci@v0.3
- name: Upload docs artifact
if: github.ref == 'refs/heads/main'
uses: actions/upload-artifact@v4
with:
runCmd: |
cmake --preset=build_riscv64
cmake --build build_riscv64 --target SimpleKernel
name: docs-html
path: docs/html/
retention-days: 1

- name: aarch64
uses: devcontainers/ci@v0.3
build-aarch64:
runs-on: ubuntu-24.04-arm
permissions:
contents: read
packages: read
container:
image: ghcr.io/simple-xx/simplekernel-dev:latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
runCmd: |
cmake --preset=build_aarch64
cmake --build build_aarch64 --target SimpleKernel
fetch-depth: 1

- name: Shallow submodule init
run: git submodule update --init --recursive --depth 1

- name: Cache CMake build (aarch64)
uses: actions/cache@v4
with:
path: build_aarch64/
key: cmake-aarch64-${{ runner.arch }}-${{ hashFiles('CMakeLists.txt', 'cmake/**', 'src/**') }}
restore-keys: |
cmake-aarch64-${{ runner.arch }}-

- name: Configure & Build
run: |
cmake --preset=build_aarch64 -DQEMU_NORMAL_WORLD_DEV_PATH=null -DQEMU_SECURE_WORLD_DEV_PATH=null
cmake --build build_aarch64 --target SimpleKernel unit-test coverage

- name: System Test
run: |
for i in $(seq 1 $SYSTEM_TEST_RUNS); do
echo "=== aarch64 System Test Run $i/$SYSTEM_TEST_RUNS ==="
timeout 300 cmake --build build_aarch64 --target system_test_run > /tmp/st_out_$i.txt 2>&1 || true
cat /tmp/st_out_$i.txt
if ! grep -q "Failed: 0" /tmp/st_out_$i.txt; then
echo "aarch64 system test run $i/$SYSTEM_TEST_RUNS FAILED"
exit 1
fi
echo "aarch64 system test run $i/$SYSTEM_TEST_RUNS passed"
done

- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v3
uses: codecov/codecov-action@v4
with:
files: ${{ github.workspace }}/build_x86_64/coverage/coverage.info
files: ${{ github.workspace }}/build_aarch64/coverage/coverage.info
verbose: true

- name: Publish
if: github.ref == 'refs/heads/main'
uses: peaceiris/actions-gh-pages@v3
publish:
needs: [build-riscv64, build-aarch64]
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Download docs artifact
uses: actions/download-artifact@v4
with:
name: docs-html
path: docs/html/

- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ${{ github.workspace }}/docs/html
publish_dir: docs/html/
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,4 @@ Doxyfile
*.elf
.pre-commit-config.yaml
.worktrees/
.claude
2 changes: 1 addition & 1 deletion 3rd/cpu_io
6 changes: 3 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# AGENTS.md — SimpleKernel

## OVERVIEW
Interface-driven OS kernel for AI-assisted learning. C++23/C23, freestanding, no RTTI/exceptions. Three architectures: x86_64, riscv64, aarch64. Headers define contracts (Doxygen @pre/@post), AI generates .cpp implementations, tests verify compliance.
Interface-driven OS kernel for AI-assisted learning. C++23/C23, freestanding, no RTTI/exceptions. Two architectures: riscv64, aarch64. Headers define contracts (Doxygen @pre/@post), AI generates .cpp implementations, tests verify compliance.

## STRUCTURE
```
Expand Down Expand Up @@ -72,7 +72,7 @@ cmake/ # Toolchain files, build helpers
## COMMANDS
```bash
git submodule update --init --recursive # First clone setup
cmake --preset build_{riscv64|aarch64|x86_64}
cmake --preset build_{riscv64|aarch64}
cd build_{arch} && make SimpleKernel # Build kernel (NOT 'make kernel')
make run # Run in QEMU
make debug # GDB on localhost:1234
Expand All @@ -83,7 +83,7 @@ pre-commit run --all-files # Format check

## NOTES
- Interface-driven: headers are contracts, .cpp files are implementations AI generates
- Boot chains differ: x86_64 (U-Boot), riscv64 (U-Boot SPL→OpenSBI→U-Boot), aarch64 (U-Boot→ATF→OP-TEE)
- Boot chains differ: riscv64 (U-Boot SPL→OpenSBI→U-Boot), aarch64 (U-Boot→ATF→OP-TEE)
- aarch64 needs two serial terminal tasks (::54320, ::54321) before `make run`
- Unit tests only run on host arch (`build_{arch}` on {arch} host)
- Git commits: `<type>(<scope>): <subject>` with `--signoff`
Expand Down
43 changes: 3 additions & 40 deletions CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -77,15 +77,15 @@
},
"QEMU_DEBUG_FLAGS": {
"type": "STRING",
"value": "-S;-gdb;tcp::1234;-d;int,cpu_reset,guest_errors"
"value": "-S;-gdb;tcp::1234;-d;cpu_reset,guest_errors"
},
"QEMU_COMMON_FLAG": {
"type": "STRING",
"value": "-nographic;-serial;stdio;-monitor;telnet::2333,server,nowait;-m;1024M;-smp;2;-d;guest_errors,int,cpu_reset"
"value": "-nographic;-serial;stdio;-monitor;telnet::2333,server,nowait;-m;1024M;-smp;2;-d;guest_errors,cpu_reset"
},
"QEMU_DEVICE_FLAGS": {
"type": "STRING",
"value": "-global;virtio-mmio.force-legacy=false;-netdev;user,id=net0,tftp=/srv/tftp;-device;e1000,netdev=net0;-device;virtio-gpu-device"
"value": "-global;virtio-mmio.force-legacy=false;-netdev;user,id=net0,tftp=/srv/tftp;-device;virtio-net-device,netdev=net0;-device;virtio-gpu-device"
},
"KERNEL_ELF_OUTPUT_NAME": {
"type": "STRING",
Expand All @@ -105,43 +105,6 @@
}
}
},
{
"name": "build_x86_64",
"hidden": false,
"inherits": [
"configurePresets_base"
],
"displayName": "build x86_64 kernel",
"description": "build x86_64 kernel",
"toolchainFile": "${sourceDir}/cmake/x86_64-gcc.cmake",
"binaryDir": "${sourceDir}/build_x86_64",
"cacheVariables": {
"CMAKE_SYSTEM_PROCESSOR": {
"type": "STRING",
"value": "x86_64"
},
"EXECUTABLE_OUTPUT_PATH": {
"type": "STRING",
"value": "${sourceDir}/build_x86_64/bin"
},
"LIBRARY_OUTPUT_PATH": {
"type": "STRING",
"value": "${sourceDir}/build_x86_64/lib"
},
"QEMU_MACHINE_FLAGS": {
"type": "STRING",
"value": "-drive;file=${sourceDir}/build_x86_64/bin/rootfs.img,if=none,format=raw,id=hd0;-device;virtio-blk-device,drive=hd0"
},
"SIMPLEKERNEL_EARLY_CONSOLE_BASE": {
"type": "STRING",
"value": "0"
},
"SIMPLEKERNEL_PER_CPU_ALIGN_SIZE": {
"type": "STRING",
"value": "128"
}
}
},
{
"name": "build_riscv64",
"hidden": false,
Expand Down
Loading
Loading