2015 lines
95 KiB
JSON
2015 lines
95 KiB
JSON
{
|
||
"schema": "esc-card-react-view.v1",
|
||
"card": {
|
||
"id": "mpabi-freertos-cpp-09-kernel-facade",
|
||
"series": "freertos-cpp",
|
||
"series_title": "FreeRTOS C++",
|
||
"number": "09",
|
||
"count": "16",
|
||
"slug": "kernel-facade",
|
||
"title": "Scheduler Facade and Scoped Kernel Guards",
|
||
"topic": "Statyczna fasada, this_task, critical section i scheduler suspend guard",
|
||
"project": "Freestanding C++ nad FreeRTOS",
|
||
"subject": "Informatyka",
|
||
"level": "Rok 2 · L08 · RV32I/Hazard3",
|
||
"revision_date": "2026-07-19T00:00:00+02:00",
|
||
"status": "Gotowa",
|
||
"version": "v00.01",
|
||
"uuid": "6a2ab068-17e7-4bfa-b726-2df37787ed69",
|
||
"author": "M. Pabiszczak",
|
||
"year": "2026"
|
||
},
|
||
"library": {
|
||
"schema": "stem-card-library.v2",
|
||
"workspace": "edu",
|
||
"subjects": [
|
||
{
|
||
"id": "inf",
|
||
"title": "INF · Informatyka",
|
||
"current": true,
|
||
"levels": [
|
||
{
|
||
"id": "year-1",
|
||
"title": "Rok 1",
|
||
"current": false,
|
||
"series": [
|
||
{
|
||
"id": "console-bash",
|
||
"title": "Bash · Console Tools",
|
||
"current": false,
|
||
"catalog_only": true,
|
||
"role": "",
|
||
"status": "",
|
||
"cards": [
|
||
{
|
||
"id": "L01",
|
||
"title": "BusyBox — the Swiss Army Knife",
|
||
"repo": "lab-console-busybox",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "01",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "L02",
|
||
"title": "Tmux — sessions, windows and panes",
|
||
"repo": "lab-console-tmux",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "02",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "L03",
|
||
"title": "Neovim — navigation and editing",
|
||
"repo": "lab-console-neovim",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "03",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "L04",
|
||
"title": "Git Basics I — status, add and commit",
|
||
"repo": "lab-console-git-basics-1",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "04",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "L05",
|
||
"title": "Git Basics II — log, diff and restore",
|
||
"repo": "lab-console-git-basics-2",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "05",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "L06",
|
||
"title": "Git Branching I — branch, switch and merge",
|
||
"repo": "lab-console-git-branching-1",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "06",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "L07",
|
||
"title": "Git Branching II — rebase and conflicts",
|
||
"repo": "lab-console-git-branching-2",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "07",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "L08",
|
||
"title": "Docker Fundamentals",
|
||
"repo": "lab-console-docker",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "08",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "rv32i-asm",
|
||
"title": "ASM · RV32I From Blinker to RISC-V",
|
||
"current": false,
|
||
"catalog_only": true,
|
||
"role": "",
|
||
"status": "",
|
||
"cards": [
|
||
{
|
||
"id": "L01",
|
||
"title": "Number Systems and Storage",
|
||
"repo": "lab-rv32i-asm-number-systems",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "01",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "L02",
|
||
"title": "FPGA Bring-up and Programming",
|
||
"repo": "lab-rv32i-asm-fpga-bringup",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "02",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "L03",
|
||
"title": "Blinker and Synchronous Logic",
|
||
"repo": "lab-rv32i-asm-blinker",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "03",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "L04",
|
||
"title": "The RISC-V ISA and Instruction Decoder",
|
||
"repo": "lab-rv32i-asm-decoder",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "04",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "L05",
|
||
"title": "ALU and the Verilog Assembler",
|
||
"repo": "lab-rv32i-asm-alu",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "05",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "L06",
|
||
"title": "Control Flow — Jumps and Branches",
|
||
"repo": "lab-rv32i-asm-control-flow",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "06",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "L07",
|
||
"title": "Addresses and Memory",
|
||
"repo": "lab-rv32i-asm-addresses-memory",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "07",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "L08",
|
||
"title": "Subroutines and the RISC-V ABI",
|
||
"repo": "lab-rv32i-asm-subroutines-abi",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "08",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "L09",
|
||
"title": "Load and Store",
|
||
"repo": "lab-rv32i-asm-load-store",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "09",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "c",
|
||
"title": "C · Freestanding RV32I and K&R",
|
||
"current": false,
|
||
"catalog_only": true,
|
||
"role": "",
|
||
"status": "",
|
||
"cards": [
|
||
{
|
||
"id": "C01",
|
||
"title": "ASM, C and GCC",
|
||
"repo": "lab-rv32i-strlen-asm-c-gcc",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "01",
|
||
"version": "",
|
||
"status": "existing",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "C02",
|
||
"title": ".bss, .data and static storage",
|
||
"repo": "lab-rv32i-strlen-bss-data-stack",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "02",
|
||
"version": "",
|
||
"status": "existing",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "C03",
|
||
"title": "ABI and Stack Frame",
|
||
"repo": "lab-rv32i-strlen-abi-stack",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "03",
|
||
"version": "",
|
||
"status": "existing",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "C04",
|
||
"title": "Types, Operators and Expressions",
|
||
"repo": "lab-rv32i-c-types-operators-expressions",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "04",
|
||
"version": "",
|
||
"status": "existing",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "C05",
|
||
"title": "Control Flow",
|
||
"repo": "lab-rv32i-c-control-flow",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "05",
|
||
"version": "",
|
||
"status": "existing",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "C06",
|
||
"title": "Functions and Program Structure",
|
||
"repo": "lab-rv32i-c-functions-program-structure",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "06",
|
||
"version": "",
|
||
"status": "existing",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "C07",
|
||
"title": "Pointers, Arrays and Linear Allocator",
|
||
"repo": "lab-rv32i-c-pointers-arrays",
|
||
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/98dbe323-c624-53d6-9fe2-4ee688c44b38",
|
||
"available": true,
|
||
"current": false,
|
||
"number": "07",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "task01"
|
||
},
|
||
{
|
||
"id": "task02",
|
||
"title": "task02"
|
||
},
|
||
{
|
||
"id": "task03",
|
||
"title": "task03"
|
||
},
|
||
{
|
||
"id": "task04",
|
||
"title": "K&R 5.4 -- Linear Memory Allocator"
|
||
},
|
||
{
|
||
"id": "task05",
|
||
"title": "task05"
|
||
},
|
||
{
|
||
"id": "task06",
|
||
"title": "task06"
|
||
},
|
||
{
|
||
"id": "task07",
|
||
"title": "task07"
|
||
},
|
||
{
|
||
"id": "task08",
|
||
"title": "task08"
|
||
},
|
||
{
|
||
"id": "task09",
|
||
"title": "task09"
|
||
},
|
||
{
|
||
"id": "task10",
|
||
"title": "task10"
|
||
},
|
||
{
|
||
"id": "task11",
|
||
"title": "task11"
|
||
},
|
||
{
|
||
"id": "task12",
|
||
"title": "task12"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "C08",
|
||
"title": "Structures and Linked State",
|
||
"repo": "lab-rv32i-c-structures",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "08",
|
||
"version": "",
|
||
"status": "existing",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "C09",
|
||
"title": "smalloc, sbrk and minimal libc",
|
||
"repo": "lab-rv32i-c-smalloc-sbrk-libc",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "09",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "C10",
|
||
"title": "RV32I Traps and Interrupt Control",
|
||
"repo": "lab-rv32i-c-interrupts",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "10",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "C11",
|
||
"title": "Machine Timer and Periodic Work",
|
||
"repo": "lab-rv32i-c-timer",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "11",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "C12",
|
||
"title": "UART — polling and interrupts",
|
||
"repo": "lab-rv32i-c-uart",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "12",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "C13",
|
||
"title": "GPIO, Edges and Debounce",
|
||
"repo": "lab-rv32i-c-gpio",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "13",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "year-2",
|
||
"title": "Rok 2",
|
||
"current": true,
|
||
"series": [
|
||
{
|
||
"id": "cpp",
|
||
"title": "C++",
|
||
"current": false,
|
||
"catalog_only": true,
|
||
"role": "",
|
||
"status": "",
|
||
"cards": [
|
||
{
|
||
"id": "CPP01",
|
||
"title": "Translation Units, Linkage and Namespaces",
|
||
"repo": "lab-cpp-build-namespaces",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "01",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "CPP02",
|
||
"title": "Classes, Encapsulation and Invariants",
|
||
"repo": "lab-cpp-classes-invariants",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "02",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "CPP03",
|
||
"title": "Construction, Destruction and RAII",
|
||
"repo": "lab-cpp-lifetime-raii",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "03",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "CPP04",
|
||
"title": "References, const and Value Categories",
|
||
"repo": "lab-cpp-references-const",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "04",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "CPP05",
|
||
"title": "Copy, Move and the Rule of Zero/Five",
|
||
"repo": "lab-cpp-copy-move",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "05",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "CPP06",
|
||
"title": "Ownership and Resource Types",
|
||
"repo": "lab-cpp-ownership",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "06",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "CPP07",
|
||
"title": "Function and Class Templates",
|
||
"repo": "lab-cpp-templates",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "07",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "CPP08",
|
||
"title": "Static Polymorphism and CRTP",
|
||
"repo": "lab-cpp-static-polymorphism",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "08",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "CPP09",
|
||
"title": "Inheritance, Interfaces and Dynamic Dispatch",
|
||
"repo": "lab-cpp-dynamic-polymorphism",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "09",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "CPP10",
|
||
"title": "Operator Overloading and Strong Types",
|
||
"repo": "lab-cpp-strong-types",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "10",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "CPP11",
|
||
"title": "Containers, Iterators and Algorithms",
|
||
"repo": "lab-cpp-containers-iterators",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "11",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "CPP12",
|
||
"title": "Lambdas, Function Objects and Callables",
|
||
"repo": "lab-cpp-lambdas-callables",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "12",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "CPP13",
|
||
"title": "Error Models with and without Exceptions",
|
||
"repo": "lab-cpp-error-models",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "13",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "CPP14",
|
||
"title": "Object Layout, ABI and Binary Evidence",
|
||
"repo": "lab-cpp-abi-evidence",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "14",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "CPP15",
|
||
"title": "Resource-type Integration Project",
|
||
"repo": "lab-cpp-resource-integration",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "15",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "freertos-c",
|
||
"title": "FreeRTOS C",
|
||
"current": false,
|
||
"catalog_only": true,
|
||
"role": "",
|
||
"status": "",
|
||
"cards": [
|
||
{
|
||
"id": "FC01",
|
||
"title": "heap_4: From Linear Cursor to Reusable Blocks",
|
||
"repo": "lab-rv32i-freertos-heap4",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "01",
|
||
"version": "",
|
||
"status": "existing",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "FC02",
|
||
"title": "First Task, TCB and Task Stack",
|
||
"repo": "lab-rv32i-freertos-c-first-task",
|
||
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/a2538a1a-3c37-4c14-a6ea-db5aba8fd038",
|
||
"available": true,
|
||
"current": false,
|
||
"number": "02",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "Pierwszy task FreeRTOS — callback, context, TCB i stos"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "FC03",
|
||
"title": "Tick, Scheduler, Priorities and Time Slicing",
|
||
"repo": "lab-rv32i-freertos-c-scheduler",
|
||
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/2214a13f-34c6-40a1-a561-70a00ec98285",
|
||
"available": true,
|
||
"current": false,
|
||
"number": "03",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "Kontrolowany eksperyment schedulera FreeRTOS"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "FC04",
|
||
"title": "Delay, Blocking and Task States",
|
||
"repo": "lab-rv32i-freertos-c-delay-state",
|
||
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/4a7ef04c-ab08-5783-9192-5b02a90f05f8",
|
||
"available": true,
|
||
"current": false,
|
||
"number": "04",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "Delay, blokowanie, zawieszenie i self-delete"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "FC05",
|
||
"title": "Queues and Byte-copy Semantics",
|
||
"repo": "lab-rv32i-freertos-c-queue",
|
||
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/8ee8f36a-471b-51bc-97b8-e204bd541c61",
|
||
"available": true,
|
||
"current": false,
|
||
"number": "05",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "Kolejka długości 1: empty, full, copy i FIFO"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "FC06",
|
||
"title": "Software Timers and the Daemon Task",
|
||
"repo": "lab-rv32i-freertos-c-software-timers",
|
||
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/ab188300-f03d-5ddb-8316-b9534876a5bc",
|
||
"available": true,
|
||
"current": false,
|
||
"number": "06",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "One-shot, auto-reload i timer daemon"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "FC07",
|
||
"title": "Interrupt-safe API and Semaphore Handoff",
|
||
"repo": "lab-rv32i-freertos-c-isr-semaphore",
|
||
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/a6da1075-8d1f-5615-b0e6-0fc33e59e1e3",
|
||
"available": true,
|
||
"current": false,
|
||
"number": "07",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "External IRQ → FromISR semaphore → high-priority task"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "FC08",
|
||
"title": "Critical Sections, Mutexes and Priority Inheritance",
|
||
"repo": "lab-rv32i-freertos-c-resource-management",
|
||
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/2392f81a-ed6c-510b-86b5-06c5e2f1c6aa",
|
||
"available": true,
|
||
"current": false,
|
||
"number": "08",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "Low/Medium/High: ownership i dziedziczenie priorytetu"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "FC09",
|
||
"title": "Event Groups and Multi-event Synchronization",
|
||
"repo": "lab-rv32i-freertos-c-event-groups",
|
||
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/3f4c1b8b-d54b-58d5-b92d-87a7233cbd9f",
|
||
"available": true,
|
||
"current": false,
|
||
"number": "09",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "ALL-ready i trzyosobowa bariera"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "FC10",
|
||
"title": "Direct-to-task Notifications",
|
||
"repo": "lab-rv32i-freertos-c-notifications",
|
||
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/3b57334e-2c35-5207-a51d-9321906db078",
|
||
"available": true,
|
||
"current": false,
|
||
"number": "10",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "Count, overwrite i bit flags na jednym slocie"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "FC11",
|
||
"title": "Static Allocation and Bounded Storage",
|
||
"repo": "lab-rv32i-freertos-c-static-allocation",
|
||
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/f4d7caf3-d665-5a2d-b9eb-39a120a64ff7",
|
||
"available": true,
|
||
"current": false,
|
||
"number": "11",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "Same behavior, two storage policies"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "FC12",
|
||
"title": "Assertions, Hooks, Stack Checks and Runtime Diagnostics",
|
||
"repo": "lab-rv32i-freertos-c-diagnostics",
|
||
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/c3027314-85a4-5e4a-af13-0939c7467a62",
|
||
"available": true,
|
||
"current": false,
|
||
"number": "12",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "Diagnose before changing the program"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "FC13",
|
||
"title": "UART Interrupt-to-task Pipeline",
|
||
"repo": "lab-rv32i-freertos-c-uart",
|
||
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/6a838fd1-ab1b-52b6-baaf-659120a4d60a",
|
||
"available": true,
|
||
"current": false,
|
||
"number": "13",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "Build and prove a bounded UART RX pipeline"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "FC14",
|
||
"title": "GPIO, Hardware Timer and Deferred Work",
|
||
"repo": "lab-rv32i-freertos-c-gpio-timer",
|
||
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/0cc561df-bf81-5bba-9df1-c872d5b42eb8",
|
||
"available": true,
|
||
"current": false,
|
||
"number": "14",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "Prove one machine-timer event from ISR to daemon GPIO work"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "FC15",
|
||
"title": "Integrated Deterministic FreeRTOS C Application",
|
||
"repo": "lab-rv32i-freertos-c-integration",
|
||
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/fe92efeb-3c38-5975-86d8-ed630e1ad3bb",
|
||
"available": true,
|
||
"current": false,
|
||
"number": "15",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "Prove one complete FreeRTOS C architecture"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "freertos-cpp",
|
||
"title": "FreeRTOS C++",
|
||
"current": true,
|
||
"catalog_only": true,
|
||
"role": "",
|
||
"status": "",
|
||
"cards": [
|
||
{
|
||
"id": "K02",
|
||
"title": "C++ Task<Derived> Wrapper, CRTP and Lifecycle",
|
||
"repo": "lab-rv32i-freertos-task-stack-vector",
|
||
"href": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/948ce9fd-3d0c-5721-a0ae-ef422008fec8",
|
||
"available": true,
|
||
"current": false,
|
||
"number": "02",
|
||
"version": "v00.04",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "C++ Task wrapper — OOP i debugowanie cyklu życia"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "K03",
|
||
"title": "Vector V1 — Destructor, Move, Ownership and RAII",
|
||
"repo": "lab-rv32i-freertos-vector-raii",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "03",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "Vector V1 — transfer własności i powrót heapu"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "K04",
|
||
"title": "Scheduler States, Priorities and Typed Ticks",
|
||
"repo": "lab-rv32i-freertos-scheduler-states",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "04",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "Osiem snapshotów decyzji schedulera"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "K05",
|
||
"title": "C++ Heap Bridge, Heap Models and HeapStats",
|
||
"repo": "lab-rv32i-freertos-heap-models",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "05",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "Fragmentacja, koalescencja i historyczny watermark"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "K06",
|
||
"title": "MemoryResource and FreeRtosAllocator<T>",
|
||
"repo": "lab-rv32i-freertos-allocator-resource",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "06",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "Dwa zasoby, jeden typed allocator"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "K07",
|
||
"title": "TaskHandle_t, Explicit Start and Static Trampoline",
|
||
"repo": "lab-rv32i-freertos-task-wrapper",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "07",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "Stabilny obiekt przez statyczny trampoline"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "K08",
|
||
"title": "DynamicTask, StaticTask, Deletion and Lifetime",
|
||
"repo": "lab-rv32i-freertos-static-task",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "08",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "Dwie polityki storage i pełna oś delete"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "K09",
|
||
"title": "Scheduler Facade and Scoped Kernel Guards",
|
||
"repo": "lab-rv32i-freertos-kernel-facade",
|
||
"href": "",
|
||
"available": false,
|
||
"current": true,
|
||
"number": "09",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "Fasada kernela i restore na każdej ścieżce"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "K10",
|
||
"title": "Queue<T> and StaticQueue<T, N>",
|
||
"repo": "lab-rv32i-freertos-queue",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "10",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "Typed byte-copy queue z dwiema politykami storage"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "K11",
|
||
"title": "Mutex, LockGuard and Priority Inheritance",
|
||
"repo": "lab-rv32i-freertos-mutex",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "11",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "LockGuard i zmierzone priority inheritance"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "K12",
|
||
"title": "Semaphores and Task Notifications",
|
||
"repo": "lab-rv32i-freertos-semaphore-notify",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "12",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "Semaphore slots i jednoodbiorcza notification"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "K13",
|
||
"title": "EventGroup and Coordinated State",
|
||
"repo": "lab-rv32i-freertos-event-group",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "13",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "Typed EventGroup i trzy źródła stanu"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "K14",
|
||
"title": "Software Timer and the Timer Daemon Task",
|
||
"repo": "lab-rv32i-freertos-sw-timer",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "14",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "Static one-shot i periodic timer na daemon tasku"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "K15",
|
||
"title": "Explicit FromISR, UART and GPIO Wrappers",
|
||
"repo": "lab-rv32i-freertos-isr-drivers",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "15",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "UART queue i GPIO notify z realnego IRQ"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "K16",
|
||
"title": "Integrated Real-time Application and Evidence",
|
||
"repo": "lab-rv32i-freertos-integration",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "16",
|
||
"version": "v00.01",
|
||
"status": "existing",
|
||
"tasks": [
|
||
{
|
||
"id": "task01",
|
||
"title": "End-to-end RTOS service i evidence report"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "posix-threads",
|
||
"title": "POSIX Threads",
|
||
"current": false,
|
||
"catalog_only": true,
|
||
"role": "",
|
||
"status": "",
|
||
"cards": [
|
||
{
|
||
"id": "PT01",
|
||
"title": "Process and Thread Execution Context",
|
||
"repo": "lab-posix-process-thread",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "01",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "PT02",
|
||
"title": "pthread_create, pthread_join and Lifecycle",
|
||
"repo": "lab-posix-pthread-create-join",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "02",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "PT03",
|
||
"title": "Arguments, Return Values and Ownership",
|
||
"repo": "lab-posix-thread-arguments",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "03",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "PT04",
|
||
"title": "Data Races and the Happens-before Question",
|
||
"repo": "lab-posix-data-races",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "04",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "PT05",
|
||
"title": "Mutex, Critical Section and Deadlock",
|
||
"repo": "lab-posix-mutex",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "05",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "PT06",
|
||
"title": "Condition Variables and Predicates",
|
||
"repo": "lab-posix-condition-variable",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "06",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "PT07",
|
||
"title": "Bounded Producer–Consumer Queue",
|
||
"repo": "lab-posix-producer-consumer",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "07",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "PT08",
|
||
"title": "POSIX Semaphores",
|
||
"repo": "lab-posix-semaphore",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "08",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "PT09",
|
||
"title": "Reader–Writer Lock",
|
||
"repo": "lab-posix-rwlock",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "09",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "PT10",
|
||
"title": "C Atomics and Memory Ordering",
|
||
"repo": "lab-posix-atomics",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "10",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "PT11",
|
||
"title": "Cancellation, Cleanup and Safe Shutdown",
|
||
"repo": "lab-posix-cancellation-cleanup",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "11",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "PT12",
|
||
"title": "Thread-local Storage",
|
||
"repo": "lab-posix-thread-local",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "12",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "PT13",
|
||
"title": "Scheduling Policy, Priority and Affinity",
|
||
"repo": "lab-posix-scheduling",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "13",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "PT14",
|
||
"title": "GDB, Sanitizers and Race Evidence",
|
||
"repo": "lab-posix-thread-debugging",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "14",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "PT15",
|
||
"title": "POSIX Threads vs FreeRTOS Integration",
|
||
"repo": "lab-posix-freertos-comparison",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "15",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "oop",
|
||
"title": "OOP and Design Patterns",
|
||
"current": false,
|
||
"catalog_only": true,
|
||
"role": "reference",
|
||
"status": "",
|
||
"cards": [
|
||
{
|
||
"id": "OOP01",
|
||
"title": "Strategy — Replaceable Behaviour",
|
||
"repo": "lab-cpp-oop-strategy",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "01",
|
||
"version": "",
|
||
"status": "design",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP02",
|
||
"title": "Adapter — Stable Boundary",
|
||
"repo": "lab-cpp-oop-adapter",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "02",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP03",
|
||
"title": "Template Method — Fixed Skeleton",
|
||
"repo": "lab-cpp-oop-template-method",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "03",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP04",
|
||
"title": "Static vs Dynamic Dispatch",
|
||
"repo": "lab-cpp-oop-dispatch",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "04",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP05",
|
||
"title": "RAII and Ownership",
|
||
"repo": "lab-cpp-oop-raii",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "05",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP06",
|
||
"title": "State — Explicit Behaviour",
|
||
"repo": "lab-cpp-oop-state",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "06",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP07",
|
||
"title": "Facade — Subsystem Boundary",
|
||
"repo": "lab-cpp-oop-facade",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "07",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP08",
|
||
"title": "Command — Request as Object",
|
||
"repo": "lab-cpp-oop-command",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "08",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP09",
|
||
"title": "Observer — Subscription and Telemetry",
|
||
"repo": "lab-cpp-oop-observer",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "09",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP10",
|
||
"title": "Factory Method — Resource Policy",
|
||
"repo": "lab-cpp-oop-factory-method",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "10",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP11",
|
||
"title": "Builder — Valid Configuration",
|
||
"repo": "lab-cpp-oop-builder",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "11",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP12",
|
||
"title": "Decorator — Measurement and Diagnostics",
|
||
"repo": "lab-cpp-oop-decorator",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "12",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP13",
|
||
"title": "Composite — Component Tree",
|
||
"repo": "lab-cpp-oop-composite",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "13",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP14",
|
||
"title": "Chain of Responsibility",
|
||
"repo": "lab-cpp-oop-chain",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "14",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP15",
|
||
"title": "Pattern-language Integration",
|
||
"repo": "lab-cpp-oop-integration",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "15",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "year-3",
|
||
"title": "Rok 3 · plan",
|
||
"current": false,
|
||
"series": [
|
||
{
|
||
"id": "modern-cpp-stl",
|
||
"title": "Modern C++ / STL",
|
||
"current": false,
|
||
"catalog_only": true,
|
||
"role": "",
|
||
"status": "scope-reserved",
|
||
"cards": []
|
||
},
|
||
{
|
||
"id": "std-threads",
|
||
"title": "std::thread / std::jthread",
|
||
"current": false,
|
||
"catalog_only": true,
|
||
"role": "",
|
||
"status": "scope-reserved",
|
||
"cards": []
|
||
},
|
||
{
|
||
"id": "boost-asio",
|
||
"title": "Boost.Asio",
|
||
"current": false,
|
||
"catalog_only": true,
|
||
"role": "",
|
||
"status": "scope-reserved",
|
||
"cards": []
|
||
},
|
||
{
|
||
"id": "oop",
|
||
"title": "OOP and Design Patterns",
|
||
"current": false,
|
||
"catalog_only": true,
|
||
"role": "reference",
|
||
"status": "",
|
||
"cards": [
|
||
{
|
||
"id": "OOP01",
|
||
"title": "Strategy — Replaceable Behaviour",
|
||
"repo": "lab-cpp-oop-strategy",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "01",
|
||
"version": "",
|
||
"status": "design",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP02",
|
||
"title": "Adapter — Stable Boundary",
|
||
"repo": "lab-cpp-oop-adapter",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "02",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP03",
|
||
"title": "Template Method — Fixed Skeleton",
|
||
"repo": "lab-cpp-oop-template-method",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "03",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP04",
|
||
"title": "Static vs Dynamic Dispatch",
|
||
"repo": "lab-cpp-oop-dispatch",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "04",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP05",
|
||
"title": "RAII and Ownership",
|
||
"repo": "lab-cpp-oop-raii",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "05",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP06",
|
||
"title": "State — Explicit Behaviour",
|
||
"repo": "lab-cpp-oop-state",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "06",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP07",
|
||
"title": "Facade — Subsystem Boundary",
|
||
"repo": "lab-cpp-oop-facade",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "07",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP08",
|
||
"title": "Command — Request as Object",
|
||
"repo": "lab-cpp-oop-command",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "08",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP09",
|
||
"title": "Observer — Subscription and Telemetry",
|
||
"repo": "lab-cpp-oop-observer",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "09",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP10",
|
||
"title": "Factory Method — Resource Policy",
|
||
"repo": "lab-cpp-oop-factory-method",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "10",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP11",
|
||
"title": "Builder — Valid Configuration",
|
||
"repo": "lab-cpp-oop-builder",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "11",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP12",
|
||
"title": "Decorator — Measurement and Diagnostics",
|
||
"repo": "lab-cpp-oop-decorator",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "12",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP13",
|
||
"title": "Composite — Component Tree",
|
||
"repo": "lab-cpp-oop-composite",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "13",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP14",
|
||
"title": "Chain of Responsibility",
|
||
"repo": "lab-cpp-oop-chain",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "14",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "OOP15",
|
||
"title": "Pattern-language Integration",
|
||
"repo": "lab-cpp-oop-integration",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "15",
|
||
"version": "",
|
||
"status": "planned",
|
||
"tasks": []
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "year-4",
|
||
"title": "Rok 4 · plan",
|
||
"current": false,
|
||
"series": [
|
||
{
|
||
"id": "transformers-gpu",
|
||
"title": "Transformers on GPU",
|
||
"current": false,
|
||
"catalog_only": true,
|
||
"role": "",
|
||
"status": "scope-reserved",
|
||
"cards": []
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "fiz",
|
||
"title": "FIZ · Fizyka",
|
||
"current": false,
|
||
"levels": [
|
||
{
|
||
"id": "all",
|
||
"title": "Katalog",
|
||
"current": false,
|
||
"series": [
|
||
{
|
||
"id": "fiz",
|
||
"title": "Fizyka",
|
||
"current": false,
|
||
"catalog_only": false,
|
||
"role": "",
|
||
"status": "",
|
||
"cards": [
|
||
{
|
||
"id": "ruch-1d",
|
||
"title": "Ruch 1D",
|
||
"repo": "ruch-1d",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "",
|
||
"version": "",
|
||
"status": "",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "ruch-2d",
|
||
"title": "Ruch 2D",
|
||
"repo": "ruch-2d",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "",
|
||
"version": "",
|
||
"status": "",
|
||
"tasks": []
|
||
},
|
||
{
|
||
"id": "ruch-po-okregu",
|
||
"title": "Ruch po okręgu",
|
||
"repo": "ruch-po-okregu",
|
||
"href": "",
|
||
"available": false,
|
||
"current": false,
|
||
"number": "",
|
||
"version": "",
|
||
"status": "",
|
||
"tasks": []
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
"total_pages": 5,
|
||
"front": {
|
||
"header_html": "<header class=\"page-resource-header\" data-resource-url=\"\" data-repository-url=\"https://zsl-gitea.mpabi.pl/edu-freertos-cpp/lab-rv32i-freertos-kernel-facade\" data-page=\"1\" data-page-total=\"5\"><table class=\"resource-header-table\"><colgroup><col><col style=\"width:24mm\"></colgroup><tbody><tr><td class=\"resource-header-center\"><div class=\"resource-header-grid\"><div class=\"resource-header-row\" style=\"grid-template-columns:59.5fr 18fr 41.5fr\"><div class=\"resource-header-field resource-header-field--title\"><span class=\"resource-label\">TITLE</span><span class=\"resource-value\">Scheduler Facade and Scoped Kernel Guards</span></div><div class=\"resource-header-field resource-header-field--emphasis\"><span class=\"resource-label\">VER.</span><span class=\"resource-value\">v00.01</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">DATETIME</span><span class=\"resource-value\">2026-07-19T00:00:00+02:00</span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:59.5fr 30fr 17fr 12.5fr\"><div class=\"resource-header-field resource-header-field--title\"><span class=\"resource-label\">PROJECT</span><span class=\"resource-value\">Freestanding C++ nad FreeRTOS</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">SERIES</span><span class=\"resource-value\">FreeRTOS C++</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">CARD</span><span class=\"resource-value\">09/16</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">SHEET</span><span class=\"resource-value\">1/5</span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:7fr 6fr 17.5fr 11fr 9fr 9fr 59.5fr\"><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">SUBJ.</span><span class=\"resource-value\">Inf.</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">PROG.</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">CORE</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">SCOPE</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">LEVEL</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">POS.</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--identity\"><span><b>GITEA UUID</b><span class=\"resource-identity-value\">6a2ab068-17e7-4bfa-b726-2df37787ed69</span></span><span><b>CARD UUID</b><span class=\"resource-identity-value\">6a2ab068-17e7-4bfa-b726-2df37787ed69</span><b class=\"resource-author\">AUTHOR M. Pabiszczak</b></span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:119fr\"><div class=\"resource-header-field resource-header-field--url-row\"><a href=\"https://zsl-gitea.mpabi.pl/edu-freertos-cpp/lab-rv32i-freertos-kernel-facade\"><b>GITEA</b> https://zsl-gitea.mpabi.pl/edu-freertos-cpp/lab-rv32i-freertos-kernel-facade</a></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:119fr\"><div class=\"resource-header-field resource-header-field--url-row\"><a href=\"\"><b>HTML</b> </a></div></div></div></td><td class=\"resource-qr-cell resource-qr-cell--right\"><div class=\"resource-qr resource-qr-page resource-qr-empty\"><span>QR</span><strong>HTML wyłączony</strong></div></td></tr></tbody></table></header>",
|
||
"left_margin_html": "<div class=\"margin-title\">TECH</div><div class=\"margin-list\"><button class=\"margin-tag we\" style=\"--indent:0.00em\" type=\"button\" data-margin-display=\"WE 01\" data-margin-tip=\"\" title=\"\"><span>WE 01</span><span class=\"local\"></span></button><button class=\"margin-tag tech\" style=\"--indent:0.28em\" type=\"button\" data-margin-display=\"EK LOCAL RTOS.KERNEL.01\" data-margin-tip=\"Śledzi critical nesting, MIE, scheduler state i wynik inliningu.\" title=\"Śledzi critical nesting, MIE, scheduler state i wynik inliningu.\"><span>EK LOCAL RTOS.KERNEL</span><span class=\"local\">.01</span></button><button class=\"margin-tag kw\" style=\"--indent:0.54em\" type=\"button\" data-margin-display=\"KW LOCAL RTOS.KERNEL.01\" data-margin-tip=\"Pokazuje dokładne sekwencje, zachowanie IRQ podczas suspension oraz brak symboli wrappera.\" title=\"Pokazuje dokładne sekwencje, zachowanie IRQ podczas suspension oraz brak symboli wrappera.\"><span>KW LOCAL RTOS.KERNEL</span><span class=\"local\">.01</span></button></div>",
|
||
"right_margin_html": "<div class=\"margin-title\">OG</div><div class=\"margin-list\"><button class=\"margin-tag we\" style=\"--indent:0.00em\" type=\"button\" data-margin-display=\"WE 01\" data-margin-tip=\"\" title=\"\"><span>WE 01</span><span class=\"local\"></span></button><button class=\"margin-tag og\" style=\"--indent:0.28em\" type=\"button\" data-margin-display=\"EN LOCAL EN OOP.RAII.03\" data-margin-tip=\"Analizuje lifetime usługi, scope guarda i early-return control flow.\" title=\"Analizuje lifetime usługi, scope guarda i early-return control flow.\"><span>EN LOCAL EN OOP.RAII</span><span class=\"local\">.03</span></button><button class=\"margin-tag kw\" style=\"--indent:0.54em\" type=\"button\" data-margin-display=\"KW LOCAL KW OOP.RAII.03\" data-margin-tip=\"Uzasadnia statyczny Scheduler i dokładnie jedno restore na każdej ścieżce.\" title=\"Uzasadnia statyczny Scheduler i dokładnie jedno restore na każdej ścieżce.\"><span>KW LOCAL KW OOP.RAII</span><span class=\"local\">.03</span></button></div>",
|
||
"goal_title": "Cel karty",
|
||
"goal_html": "<p>Uczeń rozdziela bezstanową usługę Scheduler od parowanych operacji, mierzy critical nesting i mstatus.MIE oraz dowodzi odtworzenia stanu na trzech wczesnych wyjściach.</p>",
|
||
"scope_title": "Zakres karty",
|
||
"scope_html": "<p>Scheduler suspension nie maskuje przerwań i nie dopuszcza blokujących API. CriticalSection działa w task context, nie jest mutexem ani guardem ISR.</p>",
|
||
"scope_columns": [
|
||
"chapter",
|
||
"idea",
|
||
"priority"
|
||
],
|
||
"scope_headers": [
|
||
"K&R",
|
||
"Najważniejsza idea",
|
||
"Priorytet"
|
||
],
|
||
"scope_rows": []
|
||
},
|
||
"sections": [
|
||
{
|
||
"id": "section-1-content",
|
||
"index": 1,
|
||
"title": "Usługa kontra para",
|
||
"show_heading": true,
|
||
"toc_entry": true,
|
||
"header_html": "<header class=\"page-resource-header\" data-resource-url=\"\" data-repository-url=\"https://zsl-gitea.mpabi.pl/edu-freertos-cpp/lab-rv32i-freertos-kernel-facade\" data-page=\"2\" data-page-total=\"5\"><table class=\"resource-header-table\"><colgroup><col><col style=\"width:24mm\"></colgroup><tbody><tr><td class=\"resource-header-center\"><div class=\"resource-header-grid\"><div class=\"resource-header-row\" style=\"grid-template-columns:59.5fr 18fr 41.5fr\"><div class=\"resource-header-field resource-header-field--title\"><span class=\"resource-label\">TITLE</span><span class=\"resource-value\">Scheduler Facade and Scoped Kernel Guards</span></div><div class=\"resource-header-field resource-header-field--emphasis\"><span class=\"resource-label\">VER.</span><span class=\"resource-value\">v00.01</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">DATETIME</span><span class=\"resource-value\">2026-07-19T00:00:00+02:00</span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:59.5fr 30fr 17fr 12.5fr\"><div class=\"resource-header-field resource-header-field--title\"><span class=\"resource-label\">PROJECT</span><span class=\"resource-value\">Freestanding C++ nad FreeRTOS</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">SERIES</span><span class=\"resource-value\">FreeRTOS C++</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">CARD</span><span class=\"resource-value\">09/16</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">SHEET</span><span class=\"resource-value\">2/5</span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:7fr 6fr 17.5fr 11fr 9fr 9fr 59.5fr\"><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">SUBJ.</span><span class=\"resource-value\">Inf.</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">PROG.</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">CORE</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">SCOPE</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">LEVEL</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">POS.</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--identity\"><span><b>GITEA UUID</b><span class=\"resource-identity-value\">6a2ab068-17e7-4bfa-b726-2df37787ed69</span></span><span><b>CARD UUID</b><span class=\"resource-identity-value\">6a2ab068-17e7-4bfa-b726-2df37787ed69</span><b class=\"resource-author\">AUTHOR M. Pabiszczak</b></span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:119fr\"><div class=\"resource-header-field resource-header-field--url-row\"><a href=\"https://zsl-gitea.mpabi.pl/edu-freertos-cpp/lab-rv32i-freertos-kernel-facade\"><b>GITEA</b> https://zsl-gitea.mpabi.pl/edu-freertos-cpp/lab-rv32i-freertos-kernel-facade</a></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:119fr\"><div class=\"resource-header-field resource-header-field--url-row\"><a href=\"\"><b>HTML</b> </a></div></div></div></td><td class=\"resource-qr-cell resource-qr-cell--right\"><div class=\"resource-qr resource-qr-page resource-qr-empty\"><span>QR</span><strong>HTML wyłączony</strong></div></td></tr></tbody></table></header>",
|
||
"left_margin_html": "<div class=\"margin-title\">TECH</div><div class=\"margin-list\"><button class=\"margin-tag we\" style=\"--indent:0.00em\" type=\"button\" data-margin-display=\"WE 01\" data-margin-tip=\"\" title=\"\"><span>WE 01</span><span class=\"local\"></span></button></div>",
|
||
"right_margin_html": "<div class=\"margin-title\">OG</div><div class=\"margin-list\"><button class=\"margin-tag we\" style=\"--indent:0.00em\" type=\"button\" data-margin-display=\"WE 01\" data-margin-tip=\"\" title=\"\"><span>WE 01</span><span class=\"local\"></span></button></div>",
|
||
"content_html": "<p>Sklasyfikuj Scheduler start/state jako statyczną fasadę, a enter/exit i suspend/resume jako zakresowe pary.</p>",
|
||
"tasks": [],
|
||
"assets": [],
|
||
"steps": [
|
||
{
|
||
"id": "S01",
|
||
"title": "Uzasadnij brak konstruktora i destruktora Scheduler."
|
||
},
|
||
{
|
||
"id": "S02",
|
||
"title": "Napraw trzy early returns jednym guardem."
|
||
}
|
||
],
|
||
"spread_group": "",
|
||
"spread_label": "",
|
||
"spread_columns": 1,
|
||
"spread_index": 1,
|
||
"spread_count": 1,
|
||
"page_orientation": "portrait"
|
||
},
|
||
{
|
||
"id": "section-2-content",
|
||
"index": 2,
|
||
"title": "Critical nesting i mstatus.MIE",
|
||
"show_heading": true,
|
||
"toc_entry": true,
|
||
"header_html": "<header class=\"page-resource-header\" data-resource-url=\"\" data-repository-url=\"https://zsl-gitea.mpabi.pl/edu-freertos-cpp/lab-rv32i-freertos-kernel-facade\" data-page=\"3\" data-page-total=\"5\"><table class=\"resource-header-table\"><colgroup><col><col style=\"width:24mm\"></colgroup><tbody><tr><td class=\"resource-header-center\"><div class=\"resource-header-grid\"><div class=\"resource-header-row\" style=\"grid-template-columns:59.5fr 18fr 41.5fr\"><div class=\"resource-header-field resource-header-field--title\"><span class=\"resource-label\">TITLE</span><span class=\"resource-value\">Scheduler Facade and Scoped Kernel Guards</span></div><div class=\"resource-header-field resource-header-field--emphasis\"><span class=\"resource-label\">VER.</span><span class=\"resource-value\">v00.01</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">DATETIME</span><span class=\"resource-value\">2026-07-19T00:00:00+02:00</span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:59.5fr 30fr 17fr 12.5fr\"><div class=\"resource-header-field resource-header-field--title\"><span class=\"resource-label\">PROJECT</span><span class=\"resource-value\">Freestanding C++ nad FreeRTOS</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">SERIES</span><span class=\"resource-value\">FreeRTOS C++</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">CARD</span><span class=\"resource-value\">09/16</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">SHEET</span><span class=\"resource-value\">3/5</span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:7fr 6fr 17.5fr 11fr 9fr 9fr 59.5fr\"><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">SUBJ.</span><span class=\"resource-value\">Inf.</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">PROG.</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">CORE</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">SCOPE</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">LEVEL</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">POS.</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--identity\"><span><b>GITEA UUID</b><span class=\"resource-identity-value\">6a2ab068-17e7-4bfa-b726-2df37787ed69</span></span><span><b>CARD UUID</b><span class=\"resource-identity-value\">6a2ab068-17e7-4bfa-b726-2df37787ed69</span><b class=\"resource-author\">AUTHOR M. Pabiszczak</b></span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:119fr\"><div class=\"resource-header-field resource-header-field--url-row\"><a href=\"https://zsl-gitea.mpabi.pl/edu-freertos-cpp/lab-rv32i-freertos-kernel-facade\"><b>GITEA</b> https://zsl-gitea.mpabi.pl/edu-freertos-cpp/lab-rv32i-freertos-kernel-facade</a></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:119fr\"><div class=\"resource-header-field resource-header-field--url-row\"><a href=\"\"><b>HTML</b> </a></div></div></div></td><td class=\"resource-qr-cell resource-qr-cell--right\"><div class=\"resource-qr resource-qr-page resource-qr-empty\"><span>QR</span><strong>HTML wyłączony</strong></div></td></tr></tbody></table></header>",
|
||
"left_margin_html": "<div class=\"margin-title\">TECH</div><div class=\"margin-list\"><button class=\"margin-tag we\" style=\"--indent:0.00em\" type=\"button\" data-margin-display=\"WE 01\" data-margin-tip=\"\" title=\"\"><span>WE 01</span><span class=\"local\"></span></button></div>",
|
||
"right_margin_html": "<div class=\"margin-title\">OG</div><div class=\"margin-list\"><button class=\"margin-tag we\" style=\"--indent:0.00em\" type=\"button\" data-margin-display=\"WE 01\" data-margin-tip=\"\" title=\"\"><span>WE 01</span><span class=\"local\"></span></button></div>",
|
||
"content_html": "<p>Wykonaj raw enter/enter/exit/exit, a potem ten sam kontrakt przez CriticalSection. Zapisz depth i MIE na każdym checkpoint.</p>",
|
||
"tasks": [],
|
||
"assets": [],
|
||
"steps": [
|
||
{
|
||
"id": "S03",
|
||
"title": "Odtwórz 0-1-2-1-0 oraz 1-0-0-0-1."
|
||
},
|
||
{
|
||
"id": "S04",
|
||
"title": "Potwierdź depth 0 i MIE 1 po każdej ścieżce."
|
||
}
|
||
],
|
||
"spread_group": "",
|
||
"spread_label": "",
|
||
"spread_columns": 1,
|
||
"spread_index": 1,
|
||
"spread_count": 1,
|
||
"page_orientation": "portrait"
|
||
},
|
||
{
|
||
"id": "section-3-content",
|
||
"index": 3,
|
||
"title": "Scheduler suspension i this_task",
|
||
"show_heading": true,
|
||
"toc_entry": true,
|
||
"header_html": "<header class=\"page-resource-header\" data-resource-url=\"\" data-repository-url=\"https://zsl-gitea.mpabi.pl/edu-freertos-cpp/lab-rv32i-freertos-kernel-facade\" data-page=\"4\" data-page-total=\"5\"><table class=\"resource-header-table\"><colgroup><col><col style=\"width:24mm\"></colgroup><tbody><tr><td class=\"resource-header-center\"><div class=\"resource-header-grid\"><div class=\"resource-header-row\" style=\"grid-template-columns:59.5fr 18fr 41.5fr\"><div class=\"resource-header-field resource-header-field--title\"><span class=\"resource-label\">TITLE</span><span class=\"resource-value\">Scheduler Facade and Scoped Kernel Guards</span></div><div class=\"resource-header-field resource-header-field--emphasis\"><span class=\"resource-label\">VER.</span><span class=\"resource-value\">v00.01</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">DATETIME</span><span class=\"resource-value\">2026-07-19T00:00:00+02:00</span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:59.5fr 30fr 17fr 12.5fr\"><div class=\"resource-header-field resource-header-field--title\"><span class=\"resource-label\">PROJECT</span><span class=\"resource-value\">Freestanding C++ nad FreeRTOS</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">SERIES</span><span class=\"resource-value\">FreeRTOS C++</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">CARD</span><span class=\"resource-value\">09/16</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">SHEET</span><span class=\"resource-value\">4/5</span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:7fr 6fr 17.5fr 11fr 9fr 9fr 59.5fr\"><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">SUBJ.</span><span class=\"resource-value\">Inf.</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">PROG.</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">CORE</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">SCOPE</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">LEVEL</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">POS.</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--identity\"><span><b>GITEA UUID</b><span class=\"resource-identity-value\">6a2ab068-17e7-4bfa-b726-2df37787ed69</span></span><span><b>CARD UUID</b><span class=\"resource-identity-value\">6a2ab068-17e7-4bfa-b726-2df37787ed69</span><b class=\"resource-author\">AUTHOR M. Pabiszczak</b></span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:119fr\"><div class=\"resource-header-field resource-header-field--url-row\"><a href=\"https://zsl-gitea.mpabi.pl/edu-freertos-cpp/lab-rv32i-freertos-kernel-facade\"><b>GITEA</b> https://zsl-gitea.mpabi.pl/edu-freertos-cpp/lab-rv32i-freertos-kernel-facade</a></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:119fr\"><div class=\"resource-header-field resource-header-field--url-row\"><a href=\"\"><b>HTML</b> </a></div></div></div></td><td class=\"resource-qr-cell resource-qr-cell--right\"><div class=\"resource-qr resource-qr-page resource-qr-empty\"><span>QR</span><strong>HTML wyłączony</strong></div></td></tr></tbody></table></header>",
|
||
"left_margin_html": "<div class=\"margin-title\">TECH</div><div class=\"margin-list\"><button class=\"margin-tag we\" style=\"--indent:0.00em\" type=\"button\" data-margin-display=\"WE 01\" data-margin-tip=\"\" title=\"\"><span>WE 01</span><span class=\"local\"></span></button></div>",
|
||
"right_margin_html": "<div class=\"margin-title\">OG</div><div class=\"margin-list\"><button class=\"margin-tag we\" style=\"--indent:0.00em\" type=\"button\" data-margin-display=\"WE 01\" data-margin-tip=\"\" title=\"\"><span>WE 01</span><span class=\"local\"></span></button></div>",
|
||
"content_html": "<p>Zmierz running-suspended-running przy stale włączonym MIE, przetestuj nesting i zidentyfikuj bieżący handle, tick oraz yield.</p>",
|
||
"tasks": [],
|
||
"assets": [],
|
||
"steps": [
|
||
{
|
||
"id": "S05",
|
||
"title": "Pokaż MIE=1 podczas suspension i outer/inner nesting."
|
||
},
|
||
{
|
||
"id": "S06",
|
||
"title": "Porównaj this_task handle i sprawdź inline w ELF."
|
||
}
|
||
],
|
||
"spread_group": "",
|
||
"spread_label": "",
|
||
"spread_columns": 1,
|
||
"spread_index": 1,
|
||
"spread_count": 1,
|
||
"page_orientation": "portrait"
|
||
}
|
||
],
|
||
"viewpoints": [],
|
||
"has_spread": false,
|
||
"has_allocator_model": false,
|
||
"dictionary": {
|
||
"header_html": "<header class=\"page-resource-header\" data-resource-url=\"\" data-repository-url=\"https://zsl-gitea.mpabi.pl/edu-freertos-cpp/lab-rv32i-freertos-kernel-facade\" data-page=\"5\" data-page-total=\"5\"><table class=\"resource-header-table\"><colgroup><col><col style=\"width:24mm\"></colgroup><tbody><tr><td class=\"resource-header-center\"><div class=\"resource-header-grid\"><div class=\"resource-header-row\" style=\"grid-template-columns:59.5fr 18fr 41.5fr\"><div class=\"resource-header-field resource-header-field--title\"><span class=\"resource-label\">TITLE</span><span class=\"resource-value\">Scheduler Facade and Scoped Kernel Guards</span></div><div class=\"resource-header-field resource-header-field--emphasis\"><span class=\"resource-label\">VER.</span><span class=\"resource-value\">v00.01</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">DATETIME</span><span class=\"resource-value\">2026-07-19T00:00:00+02:00</span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:59.5fr 30fr 17fr 12.5fr\"><div class=\"resource-header-field resource-header-field--title\"><span class=\"resource-label\">PROJECT</span><span class=\"resource-value\">Freestanding C++ nad FreeRTOS</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">SERIES</span><span class=\"resource-value\">FreeRTOS C++</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">CARD</span><span class=\"resource-value\">09/16</span></div><div class=\"resource-header-field\"><span class=\"resource-label\">SHEET</span><span class=\"resource-value\">5/5</span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:7fr 6fr 17.5fr 11fr 9fr 9fr 59.5fr\"><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">SUBJ.</span><span class=\"resource-value\">Inf.</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">PROG.</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">CORE</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">SCOPE</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">LEVEL</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--compact\"><span class=\"resource-label\">POS.</span><span class=\"resource-value\">—</span></div><div class=\"resource-header-field resource-header-field--identity\"><span><b>GITEA UUID</b><span class=\"resource-identity-value\">6a2ab068-17e7-4bfa-b726-2df37787ed69</span></span><span><b>CARD UUID</b><span class=\"resource-identity-value\">6a2ab068-17e7-4bfa-b726-2df37787ed69</span><b class=\"resource-author\">AUTHOR M. Pabiszczak</b></span></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:119fr\"><div class=\"resource-header-field resource-header-field--url-row\"><a href=\"https://zsl-gitea.mpabi.pl/edu-freertos-cpp/lab-rv32i-freertos-kernel-facade\"><b>GITEA</b> https://zsl-gitea.mpabi.pl/edu-freertos-cpp/lab-rv32i-freertos-kernel-facade</a></div></div><div class=\"resource-header-row\" style=\"grid-template-columns:119fr\"><div class=\"resource-header-field resource-header-field--url-row\"><a href=\"\"><b>HTML</b> </a></div></div></div></td><td class=\"resource-qr-cell resource-qr-cell--right\"><div class=\"resource-qr resource-qr-page resource-qr-empty\"><span>QR</span><strong>HTML wyłączony</strong></div></td></tr></tbody></table></header>",
|
||
"content_html": "<details class=\"we-block\"><summary><strong>WE 01</strong> Kernel facade i guards</summary><p>Zaprojektowanie cienkiej fasady kernela i scope-bound par z dowodem odtworzenia stanu.</p><h4>OG</h4><details><summary><code>EN LOCAL OOP.RAII.03</code> Analizuje lifetime usługi, scope guarda i early-return control flow.</summary><ul><li><code>KW LOCAL OOP.RAII.03</code> Uzasadnia statyczny Scheduler i dokładnie jedno restore na każdej ścieżce.</li></ul></details><h4>TECH</h4><details><summary><code>EK LOCAL RTOS.KERNEL.01</code> Śledzi critical nesting, MIE, scheduler state i wynik inliningu.</summary><ul><li><code>KW LOCAL RTOS.KERNEL.01</code> Pokazuje dokładne sekwencje, zachowanie IRQ podczas suspension oraz brak symboli wrappera.</li></ul></details></details>"
|
||
},
|
||
"toc": [
|
||
{
|
||
"id": "section-1-content",
|
||
"label": "1. Usługa kontra para"
|
||
},
|
||
{
|
||
"id": "section-2-content",
|
||
"label": "2. Critical nesting i mstatus.MIE"
|
||
},
|
||
{
|
||
"id": "section-3-content",
|
||
"label": "3. Scheduler suspension i this_task"
|
||
}
|
||
]
|
||
}
|