{ "schema": "esc-card-react-view.v1", "card": { "id": "mpabi-freertos-c-09-event-groups", "series": "freertos-c", "series_title": "FreeRTOS C", "number": "09", "count": "15", "slug": "event-groups", "title": "Event Groups: ALL-ready i bariera", "topic": "bit masks, wait semantics, automatic clear i xEventGroupSync", "project": "Freestanding C nad FreeRTOS", "subject": "Informatyka", "level": "Rok 2 · L09 · RV32I/Hazard3", "revision_date": "2026-07-19T00:00:00+02:00", "status": "Gotowa", "version": "v00.01", "uuid": "e5c4c0f3-3dd0-5168-9945-14d48744ec6f", "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://4abec2d9-79e9-0dca-9040-c60669f51ff8/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": true, "catalog_only": true, "role": "", "status": "", "cards": [ { "id": "FC01", "title": "heap_1–heap_5 and heap_4 mechanics", "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": true, "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://33c1da5c-dd20-5ed1-a829-64a5306fc804/f4d7caf3-d665-5a2d-b9eb-39a120a64ff7", "available": true, "current": false, "number": "12", "version": "v00.01", "status": "planned", "tasks": [ { "id": "task01", "title": "Same behavior, two storage policies" } ] }, { "id": "FC13", "title": "UART Interrupt-to-task Pipeline", "repo": "lab-rv32i-freertos-c-uart", "href": "", "available": false, "current": false, "number": "13", "version": "", "status": "planned", "tasks": [] }, { "id": "FC14", "title": "GPIO, Hardware Timer and Deferred Work", "repo": "lab-rv32i-freertos-c-gpio-timer", "href": "", "available": false, "current": false, "number": "14", "version": "", "status": "planned", "tasks": [] }, { "id": "FC15", "title": "Integrated Deterministic FreeRTOS C Application", "repo": "lab-rv32i-freertos-c-integration", "href": "", "available": false, "current": false, "number": "15", "version": "", "status": "planned", "tasks": [] } ] }, { "id": "freertos-cpp", "title": "FreeRTOS C++", "current": false, "catalog_only": true, "role": "", "status": "", "cards": [ { "id": "K02", "title": "First Task, Stack, Tick, Scheduler and Vector V0", "repo": "lab-rv32i-freertos-task-stack-vector", "href": "https://3400a752-f4d6-579c-a033-73677fef4b74/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": "", "status": "planned", "tasks": [] }, { "id": "K04", "title": "Scheduler States, Priorities and Typed Ticks", "repo": "lab-rv32i-freertos-scheduler-states", "href": "", "available": false, "current": false, "number": "04", "version": "", "status": "planned", "tasks": [] }, { "id": "K05", "title": "C++ Heap Bridge, Heap Models and HeapStats", "repo": "lab-rv32i-freertos-heap-models", "href": "", "available": false, "current": false, "number": "05", "version": "", "status": "planned", "tasks": [] }, { "id": "K06", "title": "MemoryResource and FreeRtosAllocator", "repo": "lab-rv32i-freertos-allocator-resource", "href": "", "available": false, "current": false, "number": "06", "version": "", "status": "planned", "tasks": [] }, { "id": "K07", "title": "TaskHandle_t, Explicit Start and Static Trampoline", "repo": "lab-rv32i-freertos-task-wrapper", "href": "", "available": false, "current": false, "number": "07", "version": "", "status": "planned", "tasks": [] }, { "id": "K08", "title": "DynamicTask, StaticTask, Deletion and Lifetime", "repo": "lab-rv32i-freertos-static-task", "href": "", "available": false, "current": false, "number": "08", "version": "", "status": "planned", "tasks": [] }, { "id": "K09", "title": "Scheduler Facade and Scoped Kernel Guards", "repo": "lab-rv32i-freertos-kernel-facade", "href": "", "available": false, "current": false, "number": "09", "version": "", "status": "planned", "tasks": [] }, { "id": "K10", "title": "Queue and StaticQueue", "repo": "lab-rv32i-freertos-queue", "href": "", "available": false, "current": false, "number": "10", "version": "", "status": "planned", "tasks": [] }, { "id": "K11", "title": "Mutex, LockGuard and Priority Inheritance", "repo": "lab-rv32i-freertos-mutex", "href": "", "available": false, "current": false, "number": "11", "version": "", "status": "planned", "tasks": [] }, { "id": "K12", "title": "Semaphores and Task Notifications", "repo": "lab-rv32i-freertos-semaphore-notify", "href": "", "available": false, "current": false, "number": "12", "version": "", "status": "planned", "tasks": [] }, { "id": "K13", "title": "EventGroup and Coordinated State", "repo": "lab-rv32i-freertos-event-group", "href": "", "available": false, "current": false, "number": "13", "version": "", "status": "planned", "tasks": [] }, { "id": "K14", "title": "Software Timer and the Timer Daemon Task", "repo": "lab-rv32i-freertos-sw-timer", "href": "", "available": false, "current": false, "number": "14", "version": "", "status": "planned", "tasks": [] }, { "id": "K15", "title": "Explicit FromISR, UART and GPIO Wrappers", "repo": "lab-rv32i-freertos-isr-drivers", "href": "", "available": false, "current": false, "number": "15", "version": "", "status": "planned", "tasks": [] }, { "id": "K16", "title": "Integrated Real-time Application and Evidence", "repo": "lab-rv32i-freertos-integration", "href": "", "available": false, "current": false, "number": "16", "version": "", "status": "planned", "tasks": [] } ] }, { "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": 8, "front": { "header_html": "
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
TITLEEvent Groups: ALL-ready i bariera
VER.v00.01
DATETIME2026-07-19T00:00:00+02:00
PROJECTFreestanding C nad FreeRTOS
SERIESFreeRTOS C
CARD09/15
SHEET1/8
SUBJ.Inf.
PROG.
CORE
SCOPE
LEVEL
POS.
GITEA UUIDe5c4c0f3-3dd0-5168-9945-14d48744ec6fCARD UUID3f4c1b8b-d54b-58d5-b92d-87a7233cbd9fAUTHOR  M. Pabiszczak
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
", "left_margin_html": "
TECH
", "right_margin_html": "
OG
", "goal_title": "Cel karty", "goal_html": "

Uczeń projektuje rozłączne maski EventGroup i dowodzi różnicy między oczekiwaniem ALL a trzyosobową barierą.

", "scope_title": "Zakres karty", "scope_html": "

Koordynator p3 blokuje się na READY_ALL. Worker A ustawia READY_A i blokuje się w xEventGroupSync. Worker B potwierdza maskę częściową, ustawia READY_B, po czym koordynator wnosi SYNC_C. Ostatni SYNC_B zwalnia wszystkich; każdy wynik zawiera 0x70, a automatycznie wyczyszczona grupa kończy z 0.

", "scope_columns": [ "chapter", "task", "idea", "priority", "status", "version" ], "scope_headers": [ "Lekcja", "Task", "Najważniejsza idea", "Priorytet", "Status", "Version" ], "scope_rows": [ { "chapter": "FC09", "task": "Task01", "idea_html": "

bit masks, wait semantics, automatic clear i xEventGroupSync

", "priority": "główny", "status": "ready", "status_label": "opracowane", "version": "v00.01", "key": true } ] }, "sections": [ { "id": "section-1-content", "index": 1, "title": "A2 — Structure", "show_heading": false, "toc_entry": true, "header_html": "
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
TITLEEvent Groups: ALL-ready i bariera
VER.v00.01
DATETIME2026-07-19T00:00:00+02:00
PROJECTFreestanding C nad FreeRTOS
SERIESFreeRTOS C
CARD09/15
SHEET2/8
SUBJ.Inf.
PROG.
CORE
SCOPE
LEVEL
POS.
GITEA UUIDe5c4c0f3-3dd0-5168-9945-14d48744ec6fCARD UUID3f4c1b8b-d54b-58d5-b92d-87a7233cbd9fAUTHOR  M. Pabiszczak
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
", "left_margin_html": "
TECH
-
", "right_margin_html": "
OG
-
", "content_html": "", "tasks": [], "assets": [ { "label": "fig:a2-structure", "logical_label": "fig:a2-structure", "figure_number": 1, "caption": "A2 STRUCTURE — READY and SYNC masks. — część 1/1 (r1 c1)", "alt": "Struktura EventGroup.", "href": "figures/a2-structure.svg", "source_href": "figures/a2-structure.puml", "width": 1.0, "kind": "diagram", "interactive": { "kind": "uml-class", "storage_key": "fc09-a2-structure-tile-1", "title": "A2 · masks and participants", "task": { "id": "task01", "label": "Task01 · EventGroup" }, "block": { "id": "a2", "label": "A2 STRUCTURE", "description": "One group, two disjoint protocols and three participants." }, "phases": [ { "id": "structure", "label": "GROUP / MASKS / PARTICIPANTS", "steps": [ { "id": "group", "number": 1, "label": "one real EventGroup", "mode": "CODE", "strategy_ref": "code.protocol", "svg_label": "01", "code_ref": "src/tasks/task01_event_groups.c:261", "description": "Kernel object holds bits and wait lists.", "evidence": "xEventGroupCreate symbol.", "strategy": { "id": "task01/a2/structure/group", "kind": "code", "action": "open", "expected_observations": [ "disjoint low-bit masks", "finite waits" ], "assertions": [ "READY_ALL=0x03", "SYNC_ALL=0x70" ], "evidence_fields": [ "mask", "API", "code_ref" ], "prerequisites": [ "źródło FC09" ], "layout": [ "mask table", "EventGroupExperiment", "kernel config" ], "commands": [ "rg -n 'READY_|SYNC_|xEventGroup' include src" ], "template_id": "code.protocol" } }, { "id": "ready", "number": 2, "label": "READY bits are disjoint", "mode": "CODE", "strategy_ref": "code.protocol", "svg_label": "02", "code_ref": "include/task01_event_groups.h:11", "description": "A and B own one bit each.", "evidence": "ALL=0x03.", "strategy": { "id": "task01/a2/structure/ready", "kind": "code", "action": "open", "expected_observations": [ "disjoint low-bit masks", "finite waits" ], "assertions": [ "READY_ALL=0x03", "SYNC_ALL=0x70" ], "evidence_fields": [ "mask", "API", "code_ref" ], "prerequisites": [ "źródło FC09" ], "layout": [ "mask table", "EventGroupExperiment", "kernel config" ], "commands": [ "rg -n 'READY_|SYNC_|xEventGroup' include src" ], "template_id": "code.protocol" } }, { "id": "sync", "number": 3, "label": "SYNC is a separate mask", "mode": "CODE", "strategy_ref": "code.protocol", "svg_label": "03", "code_ref": "include/task01_event_groups.h:14", "description": "Barrier cannot consume readiness meaning.", "evidence": "ALL=0x70.", "strategy": { "id": "task01/a2/structure/sync", "kind": "code", "action": "open", "expected_observations": [ "disjoint low-bit masks", "finite waits" ], "assertions": [ "READY_ALL=0x03", "SYNC_ALL=0x70" ], "evidence_fields": [ "mask", "API", "code_ref" ], "prerequisites": [ "źródło FC09" ], "layout": [ "mask table", "EventGroupExperiment", "kernel config" ], "commands": [ "rg -n 'READY_|SYNC_|xEventGroup' include src" ], "template_id": "code.protocol" } }, { "id": "coordinator", "number": 4, "label": "coordinator waits ALL", "mode": "RUN", "event_id": "E02", "strategy_ref": "run.ready", "svg_label": "04", "code_ref": "src/tasks/task01_event_groups.c:97", "snapshot_ref": "task01.coordinator-wait", "description": "Partial READY cannot release p3.", "evidence": "Blocked path.", "strategy": { "id": "task01/a2/structure/coordinator", "kind": "run", "action": "replay", "expected_observations": [ "partial=0x11", "A Blocked", "coordinator still Blocked" ], "assertions": [ "ALL not satisfied by READY_A", "reserved bits unused" ], "evidence_fields": [ "bits", "state", "PC", "SP", "timestamp" ], "prerequisites": [ "clean Hazard3 RAM" ], "layout": [ "group bits", "coordinator/A states", "event log" ], "commands": [ "print g_fc09.partial_bits", "print g_fc09.worker_a_state_at_partial" ], "template_id": "run.ready" } }, { "id": "a", "number": 5, "label": "worker A owns READY_A/SYNC_A", "mode": "RUN", "event_id": "E04", "strategy_ref": "run.ready", "svg_label": "05", "code_ref": "src/tasks/task01_event_groups.c:140", "snapshot_ref": "task01.sync-a", "description": "A blocks at barrier.", "evidence": "partial mask follows.", "strategy": { "id": "task01/a2/structure/a", "kind": "run", "action": "replay", "expected_observations": [ "partial=0x11", "A Blocked", "coordinator still Blocked" ], "assertions": [ "ALL not satisfied by READY_A", "reserved bits unused" ], "evidence_fields": [ "bits", "state", "PC", "SP", "timestamp" ], "prerequisites": [ "clean Hazard3 RAM" ], "layout": [ "group bits", "coordinator/A states", "event log" ], "commands": [ "print g_fc09.partial_bits", "print g_fc09.worker_a_state_at_partial" ], "template_id": "run.ready" } }, { "id": "b", "number": 6, "label": "worker B contributes final bits", "mode": "RUN", "event_id": "E10", "strategy_ref": "run.barrier", "svg_label": "06", "code_ref": "src/tasks/task01_event_groups.c:183", "snapshot_ref": "task01.b-release", "description": "B completes READY then SYNC.", "evidence": "returns 0x70.", "strategy": { "id": "task01/a2/structure/b", "kind": "run", "action": "replay", "expected_observations": [ "all contain 0x70", "final=0" ], "assertions": [ "each participant syncs once", "auto clear" ], "evidence_fields": [ "result masks", "final bits", "order" ], "prerequisites": [ "READY_ALL consumed" ], "layout": [ "three sync results", "final group bits" ], "commands": [ "print/x g_fc09.sync_a_result", "print/x g_fc09.sync_b_result", "print/x g_fc09.sync_c_result" ], "template_id": "run.barrier" } } ] } ] }, "tile": { "index": 1, "count": 1, "row": 1, "column": 1, "rows": 1, "columns": 1, "x": 0.0, "y": 0.0, "width": 744.0, "height": 217.0, "full_x": 0.0, "full_y": 0.0, "full_width": 744.0, "full_height": 217.0, "page_width": 940.0, "page_height": 560.0, "overview": true, "step_ids": [ "a", "b", "coordinator", "group", "ready", "sync" ] }, "diagram_title": "A2 · masks and participants", "diagram_block_label": "A2 STRUCTURE", "diagram_description": "One group, two disjoint protocols and three participants.", "diagram_phase_labels": [ "GROUP / MASKS / PARTICIPANTS" ] } ], "steps": [], "spread_group": "", "spread_label": "A2 STRUCTURE — READY and SYNC masks.", "spread_columns": 1, "spread_index": 1, "spread_count": 1, "page_orientation": "landscape" }, { "id": "section-2-content", "index": 2, "title": "A4 — Application", "show_heading": false, "toc_entry": true, "header_html": "
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
TITLEEvent Groups: ALL-ready i bariera
VER.v00.01
DATETIME2026-07-19T00:00:00+02:00
PROJECTFreestanding C nad FreeRTOS
SERIESFreeRTOS C
CARD09/15
SHEET3/8
SUBJ.Inf.
PROG.
CORE
SCOPE
LEVEL
POS.
GITEA UUIDe5c4c0f3-3dd0-5168-9945-14d48744ec6fCARD UUID3f4c1b8b-d54b-58d5-b92d-87a7233cbd9fAUTHOR  M. Pabiszczak
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
", "left_margin_html": "
TECH
-
", "right_margin_html": "
OG
-
", "content_html": "", "tasks": [], "assets": [ { "label": "fig:a4-application", "logical_label": "fig:a4-application", "figure_number": 2, "caption": "A4 APPLICATION — deterministic release topology. — część 1/1 (r1 c1)", "alt": "Topologia trzech tasków i verifiera.", "href": "figures/a4-application.svg", "source_href": "figures/a4-application.puml", "width": 1.0, "kind": "diagram", "interactive": { "kind": "uml-class", "storage_key": "fc09-a4-application-tile-1", "title": "A4 · participant topology", "task": { "id": "task01", "label": "Task01 · EventGroup" }, "block": { "id": "a4", "label": "A4 APPLICATION", "description": "Priorities create a deterministic observation order." }, "phases": [ { "id": "topology", "label": "BLOCK / SET / PREEMPT / VERIFY", "steps": [ { "id": "c", "number": 1, "label": "coordinator blocks first", "mode": "RUN", "event_id": "E02", "strategy_ref": "run.ready", "svg_label": "01", "code_ref": "src/tasks/task01_event_groups.c:96", "snapshot_ref": "task01.coordinator-wait", "description": "Priority 3.", "evidence": "coordinator stack.", "strategy": { "id": "task01/a4/topology/c", "kind": "run", "action": "replay", "expected_observations": [ "partial=0x11", "A Blocked", "coordinator still Blocked" ], "assertions": [ "ALL not satisfied by READY_A", "reserved bits unused" ], "evidence_fields": [ "bits", "state", "PC", "SP", "timestamp" ], "prerequisites": [ "clean Hazard3 RAM" ], "layout": [ "group bits", "coordinator/A states", "event log" ], "commands": [ "print g_fc09.partial_bits", "print g_fc09.worker_a_state_at_partial" ], "template_id": "run.ready" } }, { "id": "a", "number": 2, "label": "A publishes partial protocols", "mode": "RUN", "event_id": "E04", "strategy_ref": "run.ready", "svg_label": "02", "code_ref": "src/tasks/task01_event_groups.c:145", "snapshot_ref": "task01.sync-a", "description": "Priority 2 then block.", "evidence": "READY_A and SYNC_A.", "strategy": { "id": "task01/a4/topology/a", "kind": "run", "action": "replay", "expected_observations": [ "partial=0x11", "A Blocked", "coordinator still Blocked" ], "assertions": [ "ALL not satisfied by READY_A", "reserved bits unused" ], "evidence_fields": [ "bits", "state", "PC", "SP", "timestamp" ], "prerequisites": [ "clean Hazard3 RAM" ], "layout": [ "group bits", "coordinator/A states", "event log" ], "commands": [ "print g_fc09.partial_bits", "print g_fc09.worker_a_state_at_partial" ], "template_id": "run.ready" } }, { "id": "b", "number": 3, "label": "B observes two blocked tasks", "mode": "RUN", "event_id": "E05", "strategy_ref": "run.ready", "svg_label": "03", "code_ref": "src/tasks/task01_event_groups.c:175", "snapshot_ref": "task01.partial", "description": "No timing guess is needed.", "evidence": "0x11 and eBlocked.", "strategy": { "id": "task01/a4/topology/b", "kind": "run", "action": "replay", "expected_observations": [ "partial=0x11", "A Blocked", "coordinator still Blocked" ], "assertions": [ "ALL not satisfied by READY_A", "reserved bits unused" ], "evidence_fields": [ "bits", "state", "PC", "SP", "timestamp" ], "prerequisites": [ "clean Hazard3 RAM" ], "layout": [ "group bits", "coordinator/A states", "event log" ], "commands": [ "print g_fc09.partial_bits", "print g_fc09.worker_a_state_at_partial" ], "template_id": "run.ready" } }, { "id": "cp", "number": 4, "label": "coordinator preempts on READY_ALL", "mode": "RUN", "event_id": "E06", "strategy_ref": "run.ready", "svg_label": "04", "code_ref": "src/tasks/task01_event_groups.c:107", "snapshot_ref": "task01.ready-all", "description": "Higher p3 consumes READY epoch.", "evidence": "ready_result contains 0x03.", "strategy": { "id": "task01/a4/topology/cp", "kind": "run", "action": "replay", "expected_observations": [ "partial=0x11", "A Blocked", "coordinator still Blocked" ], "assertions": [ "ALL not satisfied by READY_A", "reserved bits unused" ], "evidence_fields": [ "bits", "state", "PC", "SP", "timestamp" ], "prerequisites": [ "clean Hazard3 RAM" ], "layout": [ "group bits", "coordinator/A states", "event log" ], "commands": [ "print g_fc09.partial_bits", "print g_fc09.worker_a_state_at_partial" ], "template_id": "run.ready" } }, { "id": "bf", "number": 5, "label": "B sets the final barrier bit", "mode": "RUN", "event_id": "E10", "strategy_ref": "run.barrier", "svg_label": "05", "code_ref": "src/tasks/task01_event_groups.c:190", "snapshot_ref": "task01.b-release", "description": "All three waiters return.", "evidence": "SYNC_ALL.", "strategy": { "id": "task01/a4/topology/bf", "kind": "run", "action": "replay", "expected_observations": [ "all contain 0x70", "final=0" ], "assertions": [ "each participant syncs once", "auto clear" ], "evidence_fields": [ "result masks", "final bits", "order" ], "prerequisites": [ "READY_ALL consumed" ], "layout": [ "three sync results", "final group bits" ], "commands": [ "print/x g_fc09.sync_a_result", "print/x g_fc09.sync_b_result", "print/x g_fc09.sync_c_result" ], "template_id": "run.barrier" } }, { "id": "v", "number": 6, "label": "p0 verifier observes final zero", "mode": "RUN", "event_id": "E11", "strategy_ref": "run.pass", "svg_label": "06", "code_ref": "src/tasks/task01_event_groups.c:230", "snapshot_ref": "task01.pass", "description": "Auto-clear is part of acceptance.", "evidence": "PASS and digest.", "strategy": { "id": "task01/a4/topology/v", "kind": "run", "action": "replay", "expected_observations": [ "PASS=1", "11 committed records" ], "assertions": [ "three-run deterministic", "distinct stacks" ], "evidence_fields": [ "PASS", "digest", "hashes", "timestamp" ], "prerequisites": [ "all participants done" ], "layout": [ "PASS", "bounded log", "digest" ], "commands": [ "print g_fc09_pass", "print g_fc09.evidence_digest" ], "template_id": "run.pass" } } ] } ] }, "tile": { "index": 1, "count": 1, "row": 1, "column": 1, "rows": 1, "columns": 1, "x": 0.0, "y": 0.0, "width": 314.0, "height": 684.0, "full_x": 0.0, "full_y": 0.0, "full_width": 314.0, "full_height": 684.0, "page_width": 660.0, "page_height": 760.0, "overview": true, "step_ids": [ "a", "b", "bf", "c", "cp", "v" ] }, "diagram_title": "A4 · participant topology", "diagram_block_label": "A4 APPLICATION", "diagram_description": "Priorities create a deterministic observation order.", "diagram_phase_labels": [ "BLOCK / SET / PREEMPT / VERIFY" ] } ], "steps": [], "spread_group": "", "spread_label": "A4 APPLICATION — deterministic release topology.", "spread_columns": 1, "spread_index": 1, "spread_count": 1, "page_orientation": "portrait" }, { "id": "section-3-content", "index": 3, "title": "A5 — Flow", "show_heading": false, "toc_entry": true, "header_html": "
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
TITLEEvent Groups: ALL-ready i bariera
VER.v00.01
DATETIME2026-07-19T00:00:00+02:00
PROJECTFreestanding C nad FreeRTOS
SERIESFreeRTOS C
CARD09/15
SHEET4/8
SUBJ.Inf.
PROG.
CORE
SCOPE
LEVEL
POS.
GITEA UUIDe5c4c0f3-3dd0-5168-9945-14d48744ec6fCARD UUID3f4c1b8b-d54b-58d5-b92d-87a7233cbd9fAUTHOR  M. Pabiszczak
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
", "left_margin_html": "
TECH
-
", "right_margin_html": "
OG
-
", "content_html": "", "tasks": [], "assets": [ { "label": "fig:a5-flow", "logical_label": "fig:a5-flow", "figure_number": 3, "caption": "A5 FLOW — ALL-ready followed by xEventGroupSync. — część 1/1 (r1 c1)", "alt": "Sekwencja EventGroup.", "href": "figures/a5-flow.svg", "source_href": "figures/a5-flow.puml", "width": 1.0, "kind": "diagram", "interactive": { "kind": "uml-sequence", "storage_key": "fc09-a5-flow-tile-1", "title": "A5 · ready and barrier flow", "task": { "id": "task01", "label": "Task01 · EventGroup" }, "block": { "id": "a5", "label": "A5 FLOW", "description": "Complete E01–E11 protocol flow." }, "phases": [ { "id": "flow", "label": "READY ALL / BARRIER / CLEAR", "steps": [ { "id": "config", "number": 1, "label": "group starts at zero", "mode": "RUN", "event_id": "E01", "strategy_ref": "run.ready", "svg_label": "01", "code_ref": "src/tasks/task01_event_groups.c:266", "snapshot_ref": "task01.config", "description": "Clean RAM.", "evidence": "bits=0.", "strategy": { "id": "task01/a5/flow/config", "kind": "run", "action": "replay", "expected_observations": [ "partial=0x11", "A Blocked", "coordinator still Blocked" ], "assertions": [ "ALL not satisfied by READY_A", "reserved bits unused" ], "evidence_fields": [ "bits", "state", "PC", "SP", "timestamp" ], "prerequisites": [ "clean Hazard3 RAM" ], "layout": [ "group bits", "coordinator/A states", "event log" ], "commands": [ "print g_fc09.partial_bits", "print g_fc09.worker_a_state_at_partial" ], "template_id": "run.ready" } }, { "id": "wait", "number": 2, "label": "coordinator waits ALL", "mode": "RUN", "event_id": "E02", "strategy_ref": "run.ready", "svg_label": "02", "code_ref": "src/tasks/task01_event_groups.c:98", "snapshot_ref": "task01.coordinator-wait", "description": "Finite timeout.", "evidence": "p3 blocks.", "strategy": { "id": "task01/a5/flow/wait", "kind": "run", "action": "replay", "expected_observations": [ "partial=0x11", "A Blocked", "coordinator still Blocked" ], "assertions": [ "ALL not satisfied by READY_A", "reserved bits unused" ], "evidence_fields": [ "bits", "state", "PC", "SP", "timestamp" ], "prerequisites": [ "clean Hazard3 RAM" ], "layout": [ "group bits", "coordinator/A states", "event log" ], "commands": [ "print g_fc09.partial_bits", "print g_fc09.worker_a_state_at_partial" ], "template_id": "run.ready" } }, { "id": "seta", "number": 3, "label": "A sets READY_A", "mode": "RUN", "event_id": "E03", "strategy_ref": "run.ready", "svg_label": "03", "code_ref": "src/tasks/task01_event_groups.c:140", "snapshot_ref": "task01.ready-a", "description": "ALL remains false.", "evidence": "bits 0x01.", "strategy": { "id": "task01/a5/flow/seta", "kind": "run", "action": "replay", "expected_observations": [ "partial=0x11", "A Blocked", "coordinator still Blocked" ], "assertions": [ "ALL not satisfied by READY_A", "reserved bits unused" ], "evidence_fields": [ "bits", "state", "PC", "SP", "timestamp" ], "prerequisites": [ "clean Hazard3 RAM" ], "layout": [ "group bits", "coordinator/A states", "event log" ], "commands": [ "print g_fc09.partial_bits", "print g_fc09.worker_a_state_at_partial" ], "template_id": "run.ready" } }, { "id": "synca", "number": 4, "label": "A contributes SYNC_A", "mode": "RUN", "event_id": "E04", "strategy_ref": "run.ready", "svg_label": "04", "code_ref": "src/tasks/task01_event_groups.c:146", "snapshot_ref": "task01.sync-a", "description": "A blocks.", "evidence": "next partial=0x11.", "strategy": { "id": "task01/a5/flow/synca", "kind": "run", "action": "replay", "expected_observations": [ "partial=0x11", "A Blocked", "coordinator still Blocked" ], "assertions": [ "ALL not satisfied by READY_A", "reserved bits unused" ], "evidence_fields": [ "bits", "state", "PC", "SP", "timestamp" ], "prerequisites": [ "clean Hazard3 RAM" ], "layout": [ "group bits", "coordinator/A states", "event log" ], "commands": [ "print g_fc09.partial_bits", "print g_fc09.worker_a_state_at_partial" ], "template_id": "run.ready" } }, { "id": "partial", "number": 5, "label": "B proves partial state", "mode": "RUN", "event_id": "E05", "strategy_ref": "run.ready", "svg_label": "05", "code_ref": "src/tasks/task01_event_groups.c:175", "snapshot_ref": "task01.partial", "description": "Neither protocol is complete.", "evidence": "0x11 and A Blocked.", "strategy": { "id": "task01/a5/flow/partial", "kind": "run", "action": "replay", "expected_observations": [ "partial=0x11", "A Blocked", "coordinator still Blocked" ], "assertions": [ "ALL not satisfied by READY_A", "reserved bits unused" ], "evidence_fields": [ "bits", "state", "PC", "SP", "timestamp" ], "prerequisites": [ "clean Hazard3 RAM" ], "layout": [ "group bits", "coordinator/A states", "event log" ], "commands": [ "print g_fc09.partial_bits", "print g_fc09.worker_a_state_at_partial" ], "template_id": "run.ready" } }, { "id": "ready", "number": 6, "label": "coordinator receives READY_ALL", "mode": "RUN", "event_id": "E06", "strategy_ref": "run.ready", "svg_label": "06", "code_ref": "src/tasks/task01_event_groups.c:107", "snapshot_ref": "task01.ready-all", "description": "Ready bits clear on exit.", "evidence": "result 0x03.", "strategy": { "id": "task01/a5/flow/ready", "kind": "run", "action": "replay", "expected_observations": [ "partial=0x11", "A Blocked", "coordinator still Blocked" ], "assertions": [ "ALL not satisfied by READY_A", "reserved bits unused" ], "evidence_fields": [ "bits", "state", "PC", "SP", "timestamp" ], "prerequisites": [ "clean Hazard3 RAM" ], "layout": [ "group bits", "coordinator/A states", "event log" ], "commands": [ "print g_fc09.partial_bits", "print g_fc09.worker_a_state_at_partial" ], "template_id": "run.ready" } }, { "id": "before", "number": 7, "label": "coordinator waits at barrier", "mode": "RUN", "event_id": "E07", "strategy_ref": "run.barrier", "svg_label": "07", "code_ref": "src/tasks/task01_event_groups.c:184", "snapshot_ref": "task01.before-final", "description": "B sees p3 Blocked.", "evidence": "state eBlocked.", "strategy": { "id": "task01/a5/flow/before", "kind": "run", "action": "replay", "expected_observations": [ "all contain 0x70", "final=0" ], "assertions": [ "each participant syncs once", "auto clear" ], "evidence_fields": [ "result masks", "final bits", "order" ], "prerequisites": [ "READY_ALL consumed" ], "layout": [ "three sync results", "final group bits" ], "commands": [ "print/x g_fc09.sync_a_result", "print/x g_fc09.sync_b_result", "print/x g_fc09.sync_c_result" ], "template_id": "run.barrier" } }, { "id": "c", "number": 8, "label": "coordinator leaves barrier", "mode": "RUN", "event_id": "E08", "strategy_ref": "run.barrier", "svg_label": "08", "code_ref": "src/tasks/task01_event_groups.c:120", "snapshot_ref": "task01.coordinator-release", "description": "Final B bit released it.", "evidence": "result contains 0x70.", "strategy": { "id": "task01/a5/flow/c", "kind": "run", "action": "replay", "expected_observations": [ "all contain 0x70", "final=0" ], "assertions": [ "each participant syncs once", "auto clear" ], "evidence_fields": [ "result masks", "final bits", "order" ], "prerequisites": [ "READY_ALL consumed" ], "layout": [ "three sync results", "final group bits" ], "commands": [ "print/x g_fc09.sync_a_result", "print/x g_fc09.sync_b_result", "print/x g_fc09.sync_c_result" ], "template_id": "run.barrier" } }, { "id": "a", "number": 9, "label": "A leaves barrier", "mode": "RUN", "event_id": "E09", "strategy_ref": "run.barrier", "svg_label": "09", "code_ref": "src/tasks/task01_event_groups.c:155", "snapshot_ref": "task01.a-release", "description": "A returns same complete mask.", "evidence": "0x70.", "strategy": { "id": "task01/a5/flow/a", "kind": "run", "action": "replay", "expected_observations": [ "all contain 0x70", "final=0" ], "assertions": [ "each participant syncs once", "auto clear" ], "evidence_fields": [ "result masks", "final bits", "order" ], "prerequisites": [ "READY_ALL consumed" ], "layout": [ "three sync results", "final group bits" ], "commands": [ "print/x g_fc09.sync_a_result", "print/x g_fc09.sync_b_result", "print/x g_fc09.sync_c_result" ], "template_id": "run.barrier" } }, { "id": "b", "number": 10, "label": "B returns and sync bits clear", "mode": "RUN", "event_id": "E10", "strategy_ref": "run.barrier", "svg_label": "10", "code_ref": "src/tasks/task01_event_groups.c:199", "snapshot_ref": "task01.b-release", "description": "Last contributor also receives full mask.", "evidence": "0x70.", "strategy": { "id": "task01/a5/flow/b", "kind": "run", "action": "replay", "expected_observations": [ "all contain 0x70", "final=0" ], "assertions": [ "each participant syncs once", "auto clear" ], "evidence_fields": [ "result masks", "final bits", "order" ], "prerequisites": [ "READY_ALL consumed" ], "layout": [ "three sync results", "final group bits" ], "commands": [ "print/x g_fc09.sync_a_result", "print/x g_fc09.sync_b_result", "print/x g_fc09.sync_c_result" ], "template_id": "run.barrier" } }, { "id": "pass", "number": 11, "label": "verifier commits PASS", "mode": "RUN", "event_id": "E11", "strategy_ref": "run.pass", "svg_label": "11", "code_ref": "src/tasks/task01_event_groups.c:230", "snapshot_ref": "task01.pass", "description": "Final group value is zero.", "evidence": "digest 2391788d.", "strategy": { "id": "task01/a5/flow/pass", "kind": "run", "action": "replay", "expected_observations": [ "PASS=1", "11 committed records" ], "assertions": [ "three-run deterministic", "distinct stacks" ], "evidence_fields": [ "PASS", "digest", "hashes", "timestamp" ], "prerequisites": [ "all participants done" ], "layout": [ "PASS", "bounded log", "digest" ], "commands": [ "print g_fc09_pass", "print g_fc09.evidence_digest" ], "template_id": "run.pass" } } ] } ] }, "tile": { "index": 1, "count": 1, "row": 1, "column": 1, "rows": 1, "columns": 1, "x": 0.0, "y": 0.0, "width": 572.0, "height": 530.0, "full_x": 0.0, "full_y": 0.0, "full_width": 572.0, "full_height": 530.0, "page_width": 940.0, "page_height": 560.0, "overview": true, "step_ids": [ "a", "b", "before", "c", "config", "partial", "pass", "ready", "seta", "synca", "wait" ] }, "diagram_title": "A5 · ready and barrier flow", "diagram_block_label": "A5 FLOW", "diagram_description": "Complete E01–E11 protocol flow.", "diagram_phase_labels": [ "READY ALL / BARRIER / CLEAR" ] } ], "steps": [], "spread_group": "", "spread_label": "A5 FLOW — ALL-ready followed by xEventGroupSync.", "spread_columns": 1, "spread_index": 1, "spread_count": 1, "page_orientation": "landscape" }, { "id": "section-4-content", "index": 4, "title": "A6 — State", "show_heading": false, "toc_entry": true, "header_html": "
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
TITLEEvent Groups: ALL-ready i bariera
VER.v00.01
DATETIME2026-07-19T00:00:00+02:00
PROJECTFreestanding C nad FreeRTOS
SERIESFreeRTOS C
CARD09/15
SHEET5/8
SUBJ.Inf.
PROG.
CORE
SCOPE
LEVEL
POS.
GITEA UUIDe5c4c0f3-3dd0-5168-9945-14d48744ec6fCARD UUID3f4c1b8b-d54b-58d5-b92d-87a7233cbd9fAUTHOR  M. Pabiszczak
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
", "left_margin_html": "
TECH
-
", "right_margin_html": "
OG
-
", "content_html": "", "tasks": [], "assets": [ { "label": "fig:a6-state", "logical_label": "fig:a6-state", "figure_number": 4, "caption": "A6 STATE — zero, partial, ready and barrier release. — część 1/1 (r1 c1)", "alt": "Maszyna stanu bitów.", "href": "figures/a6-state.svg", "source_href": "figures/a6-state.puml", "width": 1.0, "kind": "diagram", "interactive": { "kind": "uml-class", "storage_key": "fc09-a6-state-tile-1", "title": "A6 · bit-state machine", "task": { "id": "task01", "label": "Task01 · EventGroup" }, "block": { "id": "a6", "label": "A6 STATE", "description": "The same integer carries two explicit protocols." }, "phases": [ { "id": "state", "label": "ZERO / PARTIAL / COMPLETE / CLEAR", "steps": [ { "id": "zero", "number": 1, "label": "zero initial and final", "mode": "RUN", "event_id": "E01", "strategy_ref": "run.ready", "svg_label": "01", "code_ref": "src/tasks/task01_event_groups.c:261", "snapshot_ref": "task01.config", "description": "No retained epoch.", "evidence": "0x00.", "strategy": { "id": "task01/a6/state/zero", "kind": "run", "action": "replay", "expected_observations": [ "partial=0x11", "A Blocked", "coordinator still Blocked" ], "assertions": [ "ALL not satisfied by READY_A", "reserved bits unused" ], "evidence_fields": [ "bits", "state", "PC", "SP", "timestamp" ], "prerequisites": [ "clean Hazard3 RAM" ], "layout": [ "group bits", "coordinator/A states", "event log" ], "commands": [ "print g_fc09.partial_bits", "print g_fc09.worker_a_state_at_partial" ], "template_id": "run.ready" } }, { "id": "partial", "number": 3, "label": "READY_A is insufficient", "mode": "RUN", "event_id": "E05", "strategy_ref": "run.ready", "svg_label": "03", "code_ref": "src/tasks/task01_event_groups.c:175", "snapshot_ref": "task01.partial", "description": "Both waiters remain blocked.", "evidence": "0x11.", "strategy": { "id": "task01/a6/state/partial", "kind": "run", "action": "replay", "expected_observations": [ "partial=0x11", "A Blocked", "coordinator still Blocked" ], "assertions": [ "ALL not satisfied by READY_A", "reserved bits unused" ], "evidence_fields": [ "bits", "state", "PC", "SP", "timestamp" ], "prerequisites": [ "clean Hazard3 RAM" ], "layout": [ "group bits", "coordinator/A states", "event log" ], "commands": [ "print g_fc09.partial_bits", "print g_fc09.worker_a_state_at_partial" ], "template_id": "run.ready" } }, { "id": "all", "number": 6, "label": "READY_ALL releases and clears", "mode": "RUN", "event_id": "E06", "strategy_ref": "run.ready", "svg_label": "06", "code_ref": "src/tasks/task01_event_groups.c:97", "snapshot_ref": "task01.ready-all", "description": "Return contains pre-clear bits.", "evidence": "0x03.", "strategy": { "id": "task01/a6/state/all", "kind": "run", "action": "replay", "expected_observations": [ "partial=0x11", "A Blocked", "coordinator still Blocked" ], "assertions": [ "ALL not satisfied by READY_A", "reserved bits unused" ], "evidence_fields": [ "bits", "state", "PC", "SP", "timestamp" ], "prerequisites": [ "clean Hazard3 RAM" ], "layout": [ "group bits", "coordinator/A states", "event log" ], "commands": [ "print g_fc09.partial_bits", "print g_fc09.worker_a_state_at_partial" ], "template_id": "run.ready" } }, { "id": "barrier", "number": 10, "label": "SYNC_ALL releases and auto-clears", "mode": "RUN", "event_id": "E10", "strategy_ref": "run.barrier", "svg_label": "10", "code_ref": "src/tasks/task01_event_groups.c:190", "snapshot_ref": "task01.b-release", "description": "All participants see complete mask.", "evidence": "0x70 then 0.", "strategy": { "id": "task01/a6/state/barrier", "kind": "run", "action": "replay", "expected_observations": [ "all contain 0x70", "final=0" ], "assertions": [ "each participant syncs once", "auto clear" ], "evidence_fields": [ "result masks", "final bits", "order" ], "prerequisites": [ "READY_ALL consumed" ], "layout": [ "three sync results", "final group bits" ], "commands": [ "print/x g_fc09.sync_a_result", "print/x g_fc09.sync_b_result", "print/x g_fc09.sync_c_result" ], "template_id": "run.barrier" } } ] } ] }, "tile": { "index": 1, "count": 1, "row": 1, "column": 1, "rows": 1, "columns": 1, "x": 0.0, "y": 0.0, "width": 311.0, "height": 700.0, "full_x": 0.0, "full_y": 0.0, "full_width": 311.0, "full_height": 700.0, "page_width": 660.0, "page_height": 760.0, "overview": true, "step_ids": [ "all", "barrier", "partial", "zero" ] }, "diagram_title": "A6 · bit-state machine", "diagram_block_label": "A6 STATE", "diagram_description": "The same integer carries two explicit protocols.", "diagram_phase_labels": [ "ZERO / PARTIAL / COMPLETE / CLEAR" ] } ], "steps": [], "spread_group": "", "spread_label": "A6 STATE — zero, partial, ready and barrier release.", "spread_columns": 1, "spread_index": 1, "spread_count": 1, "page_orientation": "portrait" }, { "id": "section-5-content", "index": 5, "title": "A7 — Runtime", "show_heading": false, "toc_entry": true, "header_html": "
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
TITLEEvent Groups: ALL-ready i bariera
VER.v00.01
DATETIME2026-07-19T00:00:00+02:00
PROJECTFreestanding C nad FreeRTOS
SERIESFreeRTOS C
CARD09/15
SHEET6/8
SUBJ.Inf.
PROG.
CORE
SCOPE
LEVEL
POS.
GITEA UUIDe5c4c0f3-3dd0-5168-9945-14d48744ec6fCARD UUID3f4c1b8b-d54b-58d5-b92d-87a7233cbd9fAUTHOR  M. Pabiszczak
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
", "left_margin_html": "
TECH
-
", "right_margin_html": "
OG
-
", "content_html": "", "tasks": [], "assets": [ { "label": "fig:a7-runtime", "logical_label": "fig:a7-runtime", "figure_number": 5, "caption": "A7 RUNTIME — event value and waiting TCBs. — część 1/1 (r1 c1)", "alt": "Runtime EventGroup.", "href": "figures/a7-runtime.svg", "source_href": "figures/a7-runtime.puml", "width": 1.0, "kind": "diagram", "interactive": { "kind": "uml-class", "storage_key": "fc09-a7-runtime-tile-1", "title": "A7 · runtime evidence", "task": { "id": "task01", "label": "Task01 · EventGroup" }, "block": { "id": "a7", "label": "A7 RUNTIME", "description": "One handle, two wait masks, three stacks and one canonical log." }, "phases": [ { "id": "runtime", "label": "GROUP / TCB / STACK / LOG", "steps": [ { "id": "group", "number": 1, "label": "real group handle", "mode": "RUN", "event_id": "E01", "strategy_ref": "run.ready", "svg_label": "01", "code_ref": "src/tasks/task01_event_groups.c:261", "snapshot_ref": "task01.config", "description": "Persistent kernel object.", "evidence": "non-null handle.", "strategy": { "id": "task01/a7/runtime/group", "kind": "run", "action": "replay", "expected_observations": [ "partial=0x11", "A Blocked", "coordinator still Blocked" ], "assertions": [ "ALL not satisfied by READY_A", "reserved bits unused" ], "evidence_fields": [ "bits", "state", "PC", "SP", "timestamp" ], "prerequisites": [ "clean Hazard3 RAM" ], "layout": [ "group bits", "coordinator/A states", "event log" ], "commands": [ "print g_fc09.partial_bits", "print g_fc09.worker_a_state_at_partial" ], "template_id": "run.ready" } }, { "id": "bits", "number": 2, "label": "value evolves by API calls", "mode": "RUN", "event_id": "E05", "strategy_ref": "run.ready", "svg_label": "02", "code_ref": "src/tasks/task01_event_groups.c:175", "snapshot_ref": "task01.partial", "description": "No shadow counter.", "evidence": "0x11.", "strategy": { "id": "task01/a7/runtime/bits", "kind": "run", "action": "replay", "expected_observations": [ "partial=0x11", "A Blocked", "coordinator still Blocked" ], "assertions": [ "ALL not satisfied by READY_A", "reserved bits unused" ], "evidence_fields": [ "bits", "state", "PC", "SP", "timestamp" ], "prerequisites": [ "clean Hazard3 RAM" ], "layout": [ "group bits", "coordinator/A states", "event log" ], "commands": [ "print g_fc09.partial_bits", "print g_fc09.worker_a_state_at_partial" ], "template_id": "run.ready" } }, { "id": "c", "number": 3, "label": "coordinator has distinct stack", "mode": "RUN", "event_id": "E02", "strategy_ref": "run.ready", "svg_label": "03", "code_ref": "src/tasks/task01_event_groups.c:95", "snapshot_ref": "task01.coordinator-wait", "description": "Blocked context preserved.", "evidence": "coordinator_sp.", "strategy": { "id": "task01/a7/runtime/c", "kind": "run", "action": "replay", "expected_observations": [ "partial=0x11", "A Blocked", "coordinator still Blocked" ], "assertions": [ "ALL not satisfied by READY_A", "reserved bits unused" ], "evidence_fields": [ "bits", "state", "PC", "SP", "timestamp" ], "prerequisites": [ "clean Hazard3 RAM" ], "layout": [ "group bits", "coordinator/A states", "event log" ], "commands": [ "print g_fc09.partial_bits", "print g_fc09.worker_a_state_at_partial" ], "template_id": "run.ready" } }, { "id": "a", "number": 4, "label": "A waits at barrier", "mode": "RUN", "event_id": "E05", "strategy_ref": "run.ready", "svg_label": "04", "code_ref": "src/tasks/task01_event_groups.c:176", "snapshot_ref": "task01.partial", "description": "Public eBlocked proof.", "evidence": "worker_a_sp.", "strategy": { "id": "task01/a7/runtime/a", "kind": "run", "action": "replay", "expected_observations": [ "partial=0x11", "A Blocked", "coordinator still Blocked" ], "assertions": [ "ALL not satisfied by READY_A", "reserved bits unused" ], "evidence_fields": [ "bits", "state", "PC", "SP", "timestamp" ], "prerequisites": [ "clean Hazard3 RAM" ], "layout": [ "group bits", "coordinator/A states", "event log" ], "commands": [ "print g_fc09.partial_bits", "print g_fc09.worker_a_state_at_partial" ], "template_id": "run.ready" } }, { "id": "b", "number": 5, "label": "B provides final bit", "mode": "RUN", "event_id": "E10", "strategy_ref": "run.barrier", "svg_label": "05", "code_ref": "src/tasks/task01_event_groups.c:190", "snapshot_ref": "task01.b-release", "description": "Third stack.", "evidence": "worker_b_sp.", "strategy": { "id": "task01/a7/runtime/b", "kind": "run", "action": "replay", "expected_observations": [ "all contain 0x70", "final=0" ], "assertions": [ "each participant syncs once", "auto clear" ], "evidence_fields": [ "result masks", "final bits", "order" ], "prerequisites": [ "READY_ALL consumed" ], "layout": [ "three sync results", "final group bits" ], "commands": [ "print/x g_fc09.sync_a_result", "print/x g_fc09.sync_b_result", "print/x g_fc09.sync_c_result" ], "template_id": "run.barrier" } }, { "id": "log", "number": 6, "label": "commit-last bounded evidence", "mode": "RUN", "event_id": "E11", "strategy_ref": "run.pass", "svg_label": "06", "code_ref": "src/tasks/task01_event_groups.c:55", "snapshot_ref": "task01.pass", "description": "Exact E01–E11.", "evidence": "digest.", "strategy": { "id": "task01/a7/runtime/log", "kind": "run", "action": "replay", "expected_observations": [ "PASS=1", "11 committed records" ], "assertions": [ "three-run deterministic", "distinct stacks" ], "evidence_fields": [ "PASS", "digest", "hashes", "timestamp" ], "prerequisites": [ "all participants done" ], "layout": [ "PASS", "bounded log", "digest" ], "commands": [ "print g_fc09_pass", "print g_fc09.evidence_digest" ], "template_id": "run.pass" } } ] } ] }, "tile": { "index": 1, "count": 1, "row": 1, "column": 1, "rows": 1, "columns": 1, "x": 0.0, "y": 0.0, "width": 708.0, "height": 346.0, "full_x": 0.0, "full_y": 0.0, "full_width": 708.0, "full_height": 346.0, "page_width": 940.0, "page_height": 560.0, "overview": true, "step_ids": [ "a", "b", "bits", "c", "group", "log" ] }, "diagram_title": "A7 · runtime evidence", "diagram_block_label": "A7 RUNTIME", "diagram_description": "One handle, two wait masks, three stacks and one canonical log.", "diagram_phase_labels": [ "GROUP / TCB / STACK / LOG" ] } ], "steps": [], "spread_group": "", "spread_label": "A7 RUNTIME — event value and waiting TCBs.", "spread_columns": 1, "spread_index": 1, "spread_count": 1, "page_orientation": "landscape" }, { "id": "section-6-content", "index": 6, "title": "A8 — Patterns", "show_heading": false, "toc_entry": true, "header_html": "
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
TITLEEvent Groups: ALL-ready i bariera
VER.v00.01
DATETIME2026-07-19T00:00:00+02:00
PROJECTFreestanding C nad FreeRTOS
SERIESFreeRTOS C
CARD09/15
SHEET7/8
SUBJ.Inf.
PROG.
CORE
SCOPE
LEVEL
POS.
GITEA UUIDe5c4c0f3-3dd0-5168-9945-14d48744ec6fCARD UUID3f4c1b8b-d54b-58d5-b92d-87a7233cbd9fAUTHOR  M. Pabiszczak
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
", "left_margin_html": "
TECH
-
", "right_margin_html": "
OG
-
", "content_html": "", "tasks": [], "assets": [ { "label": "fig:a8-patterns", "logical_label": "fig:a8-patterns", "figure_number": 6, "caption": "A8 PATTERNS — ANY, ALL, consume and barrier. — część 1/1 (r1 c1)", "alt": "Wzorce EventGroup.", "href": "figures/a8-patterns.svg", "source_href": "figures/a8-patterns.puml", "width": 1.0, "kind": "diagram", "interactive": { "kind": "uml-class", "storage_key": "fc09-a8-patterns-tile-1", "title": "A8 · event synchronization choices", "task": { "id": "task01", "label": "Task01 · EventGroup" }, "block": { "id": "a8", "label": "A8 PATTERNS", "description": "Choose bit protocol semantics explicitly." }, "phases": [ { "id": "patterns", "label": "ANY / ALL / CLEAR / SYNC", "steps": [ { "id": "any", "number": 1, "label": "ANY releases on first selected bit", "mode": "CODE", "strategy_ref": "code.protocol", "svg_label": "01", "code_ref": "include/task01_event_groups.h:11", "description": "Useful for alternatives.", "evidence": "exercise variant.", "strategy": { "id": "task01/a8/patterns/any", "kind": "code", "action": "open", "expected_observations": [ "disjoint low-bit masks", "finite waits" ], "assertions": [ "READY_ALL=0x03", "SYNC_ALL=0x70" ], "evidence_fields": [ "mask", "API", "code_ref" ], "prerequisites": [ "źródło FC09" ], "layout": [ "mask table", "EventGroupExperiment", "kernel config" ], "commands": [ "rg -n 'READY_|SYNC_|xEventGroup' include src" ], "template_id": "code.protocol" } }, { "id": "all", "number": 2, "label": "ALL joins independent readiness", "mode": "RUN", "event_id": "E06", "strategy_ref": "run.ready", "svg_label": "02", "code_ref": "src/tasks/task01_event_groups.c:98", "snapshot_ref": "task01.ready-all", "description": "FC09 readiness contract.", "evidence": "0x03.", "strategy": { "id": "task01/a8/patterns/all", "kind": "run", "action": "replay", "expected_observations": [ "partial=0x11", "A Blocked", "coordinator still Blocked" ], "assertions": [ "ALL not satisfied by READY_A", "reserved bits unused" ], "evidence_fields": [ "bits", "state", "PC", "SP", "timestamp" ], "prerequisites": [ "clean Hazard3 RAM" ], "layout": [ "group bits", "coordinator/A states", "event log" ], "commands": [ "print g_fc09.partial_bits", "print g_fc09.worker_a_state_at_partial" ], "template_id": "run.ready" } }, { "id": "clear", "number": 3, "label": "clear consumes the readiness epoch", "mode": "RUN", "event_id": "E06", "strategy_ref": "run.ready", "svg_label": "03", "code_ref": "src/tasks/task01_event_groups.c:100", "snapshot_ref": "task01.ready-all", "description": "Old readiness is not retained.", "evidence": "final zero.", "strategy": { "id": "task01/a8/patterns/clear", "kind": "run", "action": "replay", "expected_observations": [ "partial=0x11", "A Blocked", "coordinator still Blocked" ], "assertions": [ "ALL not satisfied by READY_A", "reserved bits unused" ], "evidence_fields": [ "bits", "state", "PC", "SP", "timestamp" ], "prerequisites": [ "clean Hazard3 RAM" ], "layout": [ "group bits", "coordinator/A states", "event log" ], "commands": [ "print g_fc09.partial_bits", "print g_fc09.worker_a_state_at_partial" ], "template_id": "run.ready" } }, { "id": "sync", "number": 4, "label": "sync is a reusable barrier", "mode": "RUN", "event_id": "E10", "strategy_ref": "run.barrier", "svg_label": "04", "code_ref": "src/tasks/task01_event_groups.c:190", "snapshot_ref": "task01.b-release", "description": "Set own bit and wait ALL atomically.", "evidence": "three 0x70 results.", "strategy": { "id": "task01/a8/patterns/sync", "kind": "run", "action": "replay", "expected_observations": [ "all contain 0x70", "final=0" ], "assertions": [ "each participant syncs once", "auto clear" ], "evidence_fields": [ "result masks", "final bits", "order" ], "prerequisites": [ "READY_ALL consumed" ], "layout": [ "three sync results", "final group bits" ], "commands": [ "print/x g_fc09.sync_a_result", "print/x g_fc09.sync_b_result", "print/x g_fc09.sync_c_result" ], "template_id": "run.barrier" } } ] } ] }, "tile": { "index": 1, "count": 1, "row": 1, "column": 1, "rows": 1, "columns": 1, "x": 0.0, "y": 0.0, "width": 438.0, "height": 433.0, "full_x": 0.0, "full_y": 0.0, "full_width": 438.0, "full_height": 433.0, "page_width": 940.0, "page_height": 560.0, "overview": true, "step_ids": [ "all", "any", "clear", "sync" ] }, "diagram_title": "A8 · event synchronization choices", "diagram_block_label": "A8 PATTERNS", "diagram_description": "Choose bit protocol semantics explicitly.", "diagram_phase_labels": [ "ANY / ALL / CLEAR / SYNC" ] } ], "steps": [], "spread_group": "", "spread_label": "A8 PATTERNS — ANY, ALL, consume and barrier.", "spread_columns": 1, "spread_index": 1, "spread_count": 1, "page_orientation": "landscape" }, { "id": "section-7-task01", "index": 7, "title": "Task01 — EventGroup", "show_heading": true, "toc_entry": true, "header_html": "
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
TITLEEvent Groups: ALL-ready i bariera
VER.v00.01
DATETIME2026-07-19T00:00:00+02:00
PROJECTFreestanding C nad FreeRTOS
SERIESFreeRTOS C
CARD09/15
SHEET8/8
SUBJ.Inf.
PROG.
CORE
SCOPE
LEVEL
POS.
GITEA UUIDe5c4c0f3-3dd0-5168-9945-14d48744ec6fCARD UUID3f4c1b8b-d54b-58d5-b92d-87a7233cbd9fAUTHOR  M. Pabiszczak
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
", "left_margin_html": "
TECH
-
", "right_margin_html": "
OG
-
", "content_html": "", "tasks": [ { "ref": "task01", "title": "ALL-ready i trzyosobowa bariera", "uuid": "3f4c1b8b-d54b-58d5-b92d-87a7233cbd9f", "criterion": "PASS; partial=0x11; READY result contains 0x03; all SYNC results contain 0x70; final=0; deterministic digest.", "conclusion_html": "

EventGroup przechowuje bity stanu protokołu, nie historię zdarzeń. Rozłączne maski i jawne reguły clear są warunkiem poprawnej synchronizacji.

", "prompt_html": "

Przejdź po A2, A4, A5, A6, A7 i A8. Odtwórz E01–E11 i udowodnij, że maska częściowa nie zwalnia tasków, a bariera zwalnia wszystkich dokładnie raz.

", "flow": [ { "id": "predict", "kind": "block", "title": "A — mask table", "content_html": "

Przypisz READY i SYNC do właścicieli.

", "steps": [ { "id": "partial", "title": "Przewidź 0x11.", "content_html": "

Wskaż, które taski muszą być Blocked.

" }, { "id": "clear", "title": "Przewidź final zero.", "content_html": "

Rozdziel clear-on-exit od barrier auto-clear.

" } ] }, { "id": "replay", "kind": "block", "title": "B — replay Hazard3", "content_html": "

RUN zaczyna się od czystej RAM.

", "steps": [ { "id": "ready", "title": "Zbadaj E02–E06.", "content_html": "

Porównaj maski i task states.

" }, { "id": "barrier", "title": "Zbadaj E07–E10.", "content_html": "

Porównaj trzy wartości zwrotne.

" }, { "id": "pass", "title": "Zbadaj E11.", "content_html": "

Zapisz final bits, SP, PASS i digest.

" } ] }, { "id": "any-all", "kind": "exercise", "title": "Ćwiczenie — ANY kontra ALL", "content_html": "", "steps": [] } ] } ], "assets": [], "steps": [], "spread_group": "", "spread_label": "", "spread_columns": 1, "spread_index": 1, "spread_count": 1, "page_orientation": "portrait" } ], "viewpoints": [ { "id": "A1", "label": "CONTEXT", "subtitle": "Granice", "status": "unavailable", "reason": "Bez nowej granicy sprzętowej lub callbacku.", "target_id": "" }, { "id": "A2", "label": "STRUCTURE", "subtitle": "EventGroup, masks i participants", "status": "enabled", "target_label": "fig:a2-structure", "target_id": "fig-a2-structure" }, { "id": "A3", "label": "DISPATCH", "subtitle": "Binding", "status": "unavailable", "reason": "Task-context EventGroup nie wprowadza callbacku.", "target_id": "" }, { "id": "A4", "label": "APPLICATION", "subtitle": "Coordinator, A, B, verifier", "status": "enabled", "target_label": "fig:a4-application", "target_id": "fig-a4-application" }, { "id": "A5", "label": "FLOW", "subtitle": "E01–E11", "status": "enabled", "target_label": "fig:a5-flow", "target_id": "fig-a5-flow" }, { "id": "A6", "label": "STATE", "subtitle": "Bit value i blocked tasks", "status": "enabled", "target_label": "fig:a6-state", "target_id": "fig-a6-state" }, { "id": "A7", "label": "RUNTIME", "subtitle": "Handle, wait lists, stacks, digest", "status": "enabled", "target_label": "fig:a7-runtime", "target_id": "fig-a7-runtime" }, { "id": "A8", "label": "PATTERNS", "subtitle": "ANY, ALL, clear i barrier", "status": "enabled", "target_label": "fig:a8-patterns", "target_id": "fig-a8-patterns" } ], "has_spread": false, "has_allocator_model": false, "dictionary": null, "toc": [ { "id": "section-1-content", "label": "1. A2 — Structure" }, { "id": "section-2-content", "label": "2. A4 — Application" }, { "id": "section-3-content", "label": "3. A5 — Flow" }, { "id": "section-4-content", "label": "4. A6 — State" }, { "id": "section-5-content", "label": "5. A7 — Runtime" }, { "id": "section-6-content", "label": "6. A8 — Patterns" }, { "id": "section-7-task01", "label": "7. Task01 — EventGroup" } ] }