diff --git a/README.md b/README.md index 2595bdc..e1a78ac 100644 --- a/README.md +++ b/README.md @@ -3,16 +3,16 @@ * SPDX-License-Identifier: MIT --> -# TIMPANI +# timpani -Distributed real-time scheduling system with time-triggered execution capabilities. TIMPANI provides both C and Rust implementations of node executors and schedulers for deterministic real-time applications. +Distributed real-time scheduling system with time-triggered execution capabilities. timpani provides both C and Rust implementations of node executors and schedulers for deterministic real-time applications. This repository contains both original C implementations and modern Rust ports with enhanced type safety and memory safety. ## Architecture -- **TIMPANI-N (Node Executor)**: Executes time-triggered tasks on individual nodes -- **TIMPANI-O (Node Scheduler)**: Orchestrates and schedules tasks across distributed nodes +- **timpani-n(Node Executor)**: Executes time-triggered tasks on individual nodes +- **timpani-o (Node Scheduler)**: Orchestrates and schedules tasks across distributed nodes - **Sample Applications**: Real-time test applications for system validation ## Getting Started @@ -20,8 +20,8 @@ This repository contains both original C implementations and modern Rust ports w ### Clone the Repository ```bash -git clone --recurse-submodules https://github.com/MCO-PICCOLO/TIMPANI.git -cd TIMPANI +git clone --recurse-submodules https://github.com/eclipse-timpani/timpani.git +cd timpani ``` > **Note:** Use `--recurse-submodules` to automatically clone the required submodules (libbpf, etc.). @@ -42,7 +42,7 @@ make ``` *For detailed setup and usage β†’ [Full Documentation](sample-apps/README.md)* -### [TIMPANI-N (Node Executor)](timpani-n/README.md) +### [timpani-n(Node Executor)](timpani-n/README.md) C implementation of the time-triggered node executor component. **Quick Build:** @@ -58,7 +58,7 @@ make *For detailed setup, dependencies, and usage β†’ [Full Documentation](timpani-n/README.md)* -### [TIMPANI-O (Node Scheduler)](timpani-o/README.md) +### [timpani-o (Node Scheduler)](timpani-o/README.md) C implementation of the orchestrator component with gRPC & protobuf support for distributed scheduling. **Quick Build:** @@ -70,10 +70,10 @@ make ``` *For detailed setup, protobuf configuration, and usage β†’ [Full Documentation](timpani-o/README.md)* -### [TIMPANI Rust Components](timpani_rust/README.md) -Rust ports of TIMPANI components with enhanced type safety and memory safety. +### [timpani Rust Components](timpani_rust/README.md) +Rust ports of timpani components with enhanced type safety and memory safety. -#### [Rust TIMPANI-N (Node Executor)](timpani_rust/timpani-n/README.md) +#### [Rust timpani-n(Node Executor)](timpani_rust/timpani-n/README.md) Rust implementation of the node executor with comprehensive CLI interface, configuration validation, and structured logging. **Status**: Configuration parsing complete, runtime features in development. **Quick Build:** @@ -84,7 +84,7 @@ cargo test # Run tests ``` *For detailed setup, usage examples, and current status β†’ [Full Documentation](timpani_rust/timpani-n/README.md)* -#### [Rust TIMPANI-O (Node Scheduler)](timpani_rust/timpani-o/) +#### [Rust timpani-o (Node Scheduler)](timpani_rust/timpani-o/) Rust implementation of the global scheduler component. **Status**: In development. **Quick Build:** @@ -102,7 +102,7 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file ## πŸ“– Documentation Structure ``` -TIMPANI/ +timpani/ β”œβ”€β”€ README.md # This file - main project overview β”œβ”€β”€ sample-apps/ β”‚ β”œβ”€β”€ README.md # Sample applications documentation @@ -124,4 +124,4 @@ TIMPANI/ --- -**Navigation:** [Sample Apps](sample-apps/) | [TIMPANI-N (C)](timpani-n/) | [TIMPANI-O (C)](timpani-o/) | [Rust Components](timpani_rust/) | [Rust TIMPANI-N](timpani_rust/timpani-n/) +**Navigation:** [Sample Apps](sample-apps/) | [timpani-n(C)](timpani-n/) | [timpani-o (C)](timpani-o/) | [Rust Components](timpani_rust/) | [Rust timpani-n](timpani_rust/timpani-n/) diff --git a/doc/README.md b/doc/README.md index fa682e5..8ad7c21 100644 --- a/doc/README.md +++ b/doc/README.md @@ -3,17 +3,17 @@ * SPDX-License-Identifier: MIT --> -# TIMPANI Documentation Guide +# timpani Documentation Guide **Last Updated:** May 12, 2026 -**Project:** Eclipse TIMPANI (Rust Migration) +**Project:** Eclipse timpani (Rust Migration) **Version:** Milestone 1 & 2 (gRPC Integration) --- ## πŸ“‘ Documentation Overview -This documentation provides a comprehensive guide to the TIMPANI project's migration from C/C++ to Rust, including architecture documentation, high-level design (HLD) comparisons, and implementation details. This structure is designed for **developers and contributors** to understand the system architecture and implementation. +This documentation provides a comprehensive guide to the timpani project's migration from C/C++ to Rust, including architecture documentation, low-level design (LLD) comparisons, and implementation details. This structure is designed for **developers and contributors** to understand the system architecture and implementation. --- @@ -24,16 +24,16 @@ This documentation provides a comprehensive guide to the TIMPANI project's migra System architecture, communication protocols, and high-level design documentation. -- [TIMPANI Architecture](architecture/timpani_architecture.md) - Overall system architecture +- [timpani Architecture](architecture/timpani_architecture.md) - Overall system architecture - [gRPC Architecture](architecture/grpc_architecture.md) - Communication layer design -#### High-Level Design (HLD) Documents -πŸ“ [`architecture/HLD/`](architecture/HLD/) +#### Low-Level Design (LLD) Documents +πŸ“ [`architecture/LLD/`](architecture/LLD/) -Component-level HLD documents comparing legacy C/C++ with Rust implementations. +Component-level LLD documents comparing legacy C/C++ with Rust implementations. -**Timpani-O (Global Orchestrator):** -- [`HLD/timpani-o/`](architecture/HLD/timpani-o/) - 10 component HLD documents +**timpani-o (Global Orchestrator):** +- [`LLD/timpani-o/`](architecture/LLD/timpani-o/) - 10 component LLD documents - 01: SchedInfo Service - 02: Fault Service Client - 03: D-Bus β†’ gRPC Node Service @@ -44,10 +44,10 @@ Component-level HLD documents comparing legacy C/C++ with Rust implementations. - 08: Data Structures - 09: Communication Protocols - 10: Error Handling - - [README](architecture/HLD/timpani-o/README.md) - Component overview & migration themes + - [README](architecture/LLD/timpani-o/README.md) - Component overview & migration themes -**Timpani-N (Node Executor):** -- [`HLD/timpani-n/`](architecture/HLD/timpani-n/) - 10 component HLD documents +**timpani-n (Node Executor):** +- [`LLD/timpani-n/`](architecture/LLD/timpani-n/) - 10 component LLD documents - 01: Initialization & Main - 02: Configuration Management βœ… - 03: Time Trigger Core @@ -58,7 +58,7 @@ Component-level HLD documents comparing legacy C/C++ with Rust implementations. - 08: Communication (libtrpc β†’ gRPC) - 09: Resource Management - 10: Data Structures - - [README](architecture/HLD/timpani-n/README.md) - Component overview & migration status + - [README](architecture/LLD/timpani-n/README.md) - Component overview & migration status **πŸ” Focus:** Understand system architecture and component-level AS-IS vs WILL-BE comparisons @@ -91,7 +91,7 @@ Development standards, coding rules, and workflow guidelines. --- -## πŸ“Š Documentation Flow (Architecture β†’ HLD β†’ Implementation) +## πŸ“Š Documentation Flow (Architecture β†’ LLD β†’ Implementation) ```mermaid graph TD @@ -100,9 +100,9 @@ graph TD A2[gRPC Architecture
grpc_architecture.md] end - subgraph "2. Component HLD" - H1[Timpani-O HLD
10 Components] - H2[Timpani-N HLD
10 Components] + subgraph "2. Component LLD" + H1[timpani-o LLD
10 Components] + H2[timpani-n LLD
10 Components] H3[AS-IS vs WILL-BE
Comparisons] end @@ -150,12 +150,12 @@ graph TD eclipse_timpani/ β”œβ”€β”€ doc/ # πŸ“š All documentation (YOU ARE HERE) β”‚ β”œβ”€β”€ README.md # This file -β”‚ β”œβ”€β”€ architecture/ # Architecture & HLD documentation +β”‚ β”œβ”€β”€ architecture/ # Architecture & LLD documentation β”‚ β”‚ β”œβ”€β”€ timpani_architecture.md β”‚ β”‚ β”œβ”€β”€ grpc_architecture.md -β”‚ β”‚ └── HLD/ # High-Level Design documents -β”‚ β”‚ β”œβ”€β”€ timpani-o/ # Timpani-O component HLDs -β”‚ β”‚ └── timpani-n/ # Timpani-N component HLDs +β”‚ β”‚ └── LLD/ # Low-Level Design documents +β”‚ β”‚ β”œβ”€β”€ timpani-o/ # timpani-o component LLDs +β”‚ β”‚ └── timpani-n/ # timpani-n component LLDs β”‚ β”œβ”€β”€ docs/ # Implementation guides β”‚ β”‚ β”œβ”€β”€ api.md β”‚ β”‚ β”œβ”€β”€ getting-started.md @@ -180,24 +180,24 @@ eclipse_timpani/ ## πŸ” Development Checklist -### Phase 1: Architecture Review +### Step 1: Architecture Review - [ ] System architecture documentation is complete and accurate - [ ] gRPC architecture addresses all communication requirements - [ ] Component boundaries are clearly defined -### Phase 2: Component HLD Review +### Step 2: Component LLD Review - [ ] AS-IS architecture accurately reflects legacy implementation (C/C++) - [ ] WILL-BE architecture documents Rust implementation status -- [ ] Component HLDs are verified against actual source code +- [ ] Component LLDs are verified against actual source code - [ ] Migration notes capture key design decisions -### Phase 3: Implementation Verification +### Step 3: Implementation Verification - [ ] API documentation matches protobuf definitions - [ ] Build process is reproducible - [ ] Test coverage meets acceptance criteria (>80% for critical paths) - [ ] Performance benchmarks validate requirements -### Phase 4: Quality Assurance +### Step 4: Quality Assurance - [ ] Code follows Rust coding standards (clippy, rustfmt) - [ ] All PRs follow branching and review guidelines - [ ] CI/CD pipeline enforces quality gates @@ -214,12 +214,12 @@ eclipse_timpani/ - Consult [GitHub Issues](https://github.com/eclipse-timpani/timpani/issues) ### For Architecture Clarifications -- Refer to [TIMPANI Architecture](architecture/timpani_architecture.md) +- Refer to [timpani Architecture](architecture/timpani_architecture.md) - Review [gRPC Architecture](architecture/grpc_architecture.md) -- Check component HLDs in [HLD/timpani-o/](architecture/HLD/timpani-o/) or [HLD/timpani-n/](architecture/HLD/timpani-n/) +- Check component LLDs in [LLD/timpani-o/](architecture/LLD/timpani-o/) or [LLD/timpani-n/](architecture/LLD/timpani-n/) ### For Development Queries -- Review architecture documentation: `architecture/` β†’ `HLD/` β†’ `docs/` +- Review architecture documentation: `architecture/` β†’ `LLD/` β†’ `docs/` - Check test coverage reports: `timpani_rust/target/coverage/` - Review CI/CD logs: GitHub Actions workflow results diff --git a/doc/architecture/HLD/timpani-n/01-initialization-main.md b/doc/architecture/LLD/timpani-n/01-initialization-main.md similarity index 93% rename from doc/architecture/HLD/timpani-n/01-initialization-main.md rename to doc/architecture/LLD/timpani-n/01-initialization-main.md index 8fb0dd8..f28ba9a 100644 --- a/doc/architecture/HLD/timpani-n/01-initialization-main.md +++ b/doc/architecture/LLD/timpani-n/01-initialization-main.md @@ -3,17 +3,17 @@ * SPDX-License-Identifier: MIT --> -# HLD: Initialization & Main Entry Point +# LLD: Initialization & Main Entry Point -**Component Type:** Application Entry Point -**Responsibility:** Program initialization, main execution loop coordination, graceful shutdown +**Component Type:** Application Entry Point +**Responsibility:** Program initialization, main execution loop coordination, graceful shutdown **Status:** πŸ”„ Partially Migrated (C β†’ Rust) --- ## Component Overview -The Initialization & Main component serves as the entry point for Timpani-N, coordinating the startup sequence, initialization of all subsystems, runtime execution, and graceful shutdown. +The Initialization & Main component serves as the entry point for timpani-n, coordinating the startup sequence, initialization of all subsystems, runtime execution, and graceful shutdown. --- @@ -86,7 +86,7 @@ static tt_error_t initialize(struct context *ctx) return TT_ERROR_BPF; } - // 5. Initialize TRPC and get schedule from Timpani-O + // 5. Initialize TRPC and get schedule from timpani-o if (init_trpc(ctx) != TT_SUCCESS) { return TT_ERROR_NETWORK; } @@ -113,7 +113,7 @@ static tt_error_t initialize(struct context *ctx) ```c static tt_error_t run(struct context *ctx) { - // 1. Synchronize with Timpani-O server + // 1. Synchronize with timpani-o server if (sync_timer_with_server(ctx) != TT_SUCCESS) { return TT_ERROR_NETWORK; } @@ -144,27 +144,27 @@ graph TD A[main: Start] --> B[memset context] B --> C[parse_config] C --> D[initialize] - + D --> E[setup_signal_handlers] E --> F[set_affinity CPU] F --> G[set_schedattr RT prio] G --> H[calibrate_bpf_time_offset] H --> I[init_trpc] I --> J{Apex.OS mode?} - + J -->|Yes| K[init_apex_list] J -->|No| L[bpf_on] L --> M[init_task_list] - + K --> N[apex_monitor_init] M --> N - + N --> O[run] O --> P[sync_timer_with_server] P --> Q[start_timers] Q --> R[start_hyperperiod_timer] R --> S[epoll_loop] - + S --> T[cleanup_context] T --> U[exit] ``` @@ -208,7 +208,7 @@ async fn main() -> anyhow::Result<()> { ```rust pub async fn run_app(config: Config) -> TimpaniResult<()> { - info!("Starting Timpani-N node executor"); + info!("Starting timpani-n node executor"); info!("Configuration: {:?}", config); // Initialize context @@ -226,12 +226,12 @@ pub async fn run_app(config: Config) -> TimpaniResult<()> { /// Initialize the context (⏸️ TBD - placeholders only) pub fn initialize(ctx: &mut Context) -> TimpaniResult<()> { - info!("Initializing Timpani-N context..."); + info!("Initializing timpani-n context..."); // TODO: Signal handlers // TODO: CPU affinity // TODO: RT priority // TODO: BPF initialization - // TODO: Connect to Timpani-O + // TODO: Connect to timpani-o // TODO: Fetch schedule warn!("Initialization phase not fully implemented yet"); Ok(()) @@ -316,7 +316,7 @@ calibrate_bpf_time_offset(); ### 5. TRPC Connection (C: βœ… | Rust: ⏸️) ```c // C implementation -init_trpc(ctx); // Connect to Timpani-O via D-Bus +init_trpc(ctx); // Connect to timpani-o via D-Bus ``` - **Purpose:** Establish connection to orchestrator - **Rust Status:** ⏸️ Planned (will use gRPC, not D-Bus) @@ -393,7 +393,7 @@ Ok(()) --- -**Document Version:** 1.0 -**Last Updated:** May 12, 2026 -**Status:** πŸ”„ Partial (CLI + Config βœ…, Runtime ⏸️) +**Document Version:** 1.0 +**Last Updated:** May 12, 2026 +**Status:** πŸ”„ Partial (CLI + Config βœ…, Runtime ⏸️) **Verified Against:** `timpani-n/src/main.c`, `timpani_rust/timpani-n/src/main.rs` diff --git a/doc/architecture/HLD/timpani-n/02-configuration-management.md b/doc/architecture/LLD/timpani-n/02-configuration-management.md similarity index 94% rename from doc/architecture/HLD/timpani-n/02-configuration-management.md rename to doc/architecture/LLD/timpani-n/02-configuration-management.md index 4035146..cb6b5cf 100644 --- a/doc/architecture/HLD/timpani-n/02-configuration-management.md +++ b/doc/architecture/LLD/timpani-n/02-configuration-management.md @@ -3,17 +3,17 @@ * SPDX-License-Identifier: MIT --> -# HLD: Configuration Management +# LLD: Configuration Management -**Component Type:** Configuration System -**Responsibility:** CLI parsing, configuration validation, defaults management +**Component Type:** Configuration System +**Responsibility:** CLI parsing, configuration validation, defaults management **Status:** βœ… Complete in Rust --- ## Component Overview -Configuration Management handles command-line argument parsing, configuration validation, and default value management for all Timpani-N runtime parameters. +Configuration Management handles command-line argument parsing, configuration validation, and default value management for all timpani-n runtime parameters. --- @@ -77,7 +77,7 @@ struct config { #[derive(Debug, Clone, Parser)] #[command( name = "timpani-n", - about = "Timpani-N Node Executor - Time-Triggered Real-Time Task Scheduler", + about = "timpani-n Node Executor - Time-Triggered Real-Time Task Scheduler", version )] pub struct Config { @@ -180,6 +180,6 @@ impl Config { --- -**Document Version:** 1.0 -**Status:** βœ… Complete +**Document Version:** 1.0 +**Status:** βœ… Complete **Verified Against:** `timpani_rust/timpani-n/src/config/mod.rs` diff --git a/doc/architecture/HLD/timpani-n/03-time-trigger-core.md b/doc/architecture/LLD/timpani-n/03-time-trigger-core.md similarity index 90% rename from doc/architecture/HLD/timpani-n/03-time-trigger-core.md rename to doc/architecture/LLD/timpani-n/03-time-trigger-core.md index b2184da..89299af 100644 --- a/doc/architecture/HLD/timpani-n/03-time-trigger-core.md +++ b/doc/architecture/LLD/timpani-n/03-time-trigger-core.md @@ -3,10 +3,10 @@ * SPDX-License-Identifier: MIT --> -# HLD: Time Trigger Core +# LLD: Time Trigger Core -**Component Type:** Core Runtime Engine -**Responsibility:** Event loop, hyperperiod management, timer coordination +**Component Type:** Core Runtime Engine +**Responsibility:** Event loop, hyperperiod management, timer coordination **Status:** ⏸️ Not Started in Rust (C implementation documented) --- @@ -18,14 +18,14 @@ ### Hyperperiod Calculation ```c -tt_error_t init_hyperperiod(struct context *ctx, +tt_error_t init_hyperperiod(struct context *ctx, const char *workload_id, uint64_t hyperperiod_us, struct hyperperiod_manager *hp_mgr) { hp_mgr->hyperperiod_us = hyperperiod_us; hp_mgr->hp_count = 0; strncpy(hp_mgr->workload_id, workload_id, sizeof(hp_mgr->workload_id) - 1); - + clock_gettime(CLOCK_MONOTONIC, &hp_mgr->hp_timer_start); return TT_SUCCESS; } @@ -36,10 +36,10 @@ tt_error_t init_hyperperiod(struct context *ctx, ```c tt_error_t epoll_loop(struct context *ctx) { int epfd = epoll_create1(0); - + while (!ctx->shutdown_requested) { int nfds = epoll_wait(epfd, events, MAX_EVENTS, -1); - + for (int i = 0; i < nfds; i++) { if (events[i].data.fd == ctx->runtime.hyperperiod_timer_fd) { handle_hyperperiod_tick(ctx); @@ -48,7 +48,7 @@ tt_error_t epoll_loop(struct context *ctx) { } } } - + return TT_SUCCESS; } ``` @@ -61,7 +61,7 @@ tt_error_t start_hyperperiod_timer(struct context *ctx) { its.it_interval.tv_sec = 0; its.it_interval.tv_nsec = ctx->hp_manager.hyperperiod_us * 1000; its.it_value = its.it_interval; - + return timerfd_settime(ctx->runtime.hyperperiod_timer_fd, 0, &its, NULL) == 0 ? TT_SUCCESS : TT_ERROR_TIMER; } @@ -80,6 +80,6 @@ tt_error_t start_hyperperiod_timer(struct context *ctx) { --- -**Document Version:** 1.0 -**Status:** C βœ…, Rust ⏸️ +**Document Version:** 1.0 +**Status:** C βœ…, Rust ⏸️ **Verified Against:** `timpani-n/src/core.c`, `timpani-n/src/hyperperiod.c` diff --git a/doc/architecture/HLD/timpani-n/04-task-management.md b/doc/architecture/LLD/timpani-n/04-task-management.md similarity index 91% rename from doc/architecture/HLD/timpani-n/04-task-management.md rename to doc/architecture/LLD/timpani-n/04-task-management.md index 1e6611e..0faac3d 100644 --- a/doc/architecture/HLD/timpani-n/04-task-management.md +++ b/doc/architecture/LLD/timpani-n/04-task-management.md @@ -3,10 +3,10 @@ * SPDX-License-Identifier: MIT --> -# HLD: Task Management +# LLD: Task Management -**Component Type:** Task Lifecycle Management -**Responsibility:** Task list management, activation scheduling, state tracking +**Component Type:** Task Lifecycle Management +**Responsibility:** Task list management, activation scheduling, state tracking **Status:** ⏸️ Not Started in Rust --- @@ -33,22 +33,22 @@ struct time_trigger { ```c tt_error_t init_task_list(struct context *ctx) { int task_count = ctx->sinfo.task_count; - + ctx->runtime.tt_list = calloc(task_count, sizeof(struct time_trigger)); - + for (int i = 0; i < task_count; i++) { struct task_info *task = &ctx->sinfo.tasks[i]; struct time_trigger *tt = &ctx->runtime.tt_list[i]; - + tt->task = *task; tt->period.tv_sec = task->period_us / 1000000; tt->period.tv_nsec = (task->period_us % 1000000) * 1000; tt->ctx = ctx; - + // Add PID to BPF filter bpf_add_pid(task->pid); } - + return TT_SUCCESS; } ``` @@ -73,5 +73,5 @@ static void activate_task(struct time_trigger *tt) { --- -**Document Version:** 1.0 +**Document Version:** 1.0 **Status:** C βœ…, Rust ⏸️ diff --git a/doc/architecture/HLD/timpani-n/05-realtime-scheduling.md b/doc/architecture/LLD/timpani-n/05-realtime-scheduling.md similarity index 91% rename from doc/architecture/HLD/timpani-n/05-realtime-scheduling.md rename to doc/architecture/LLD/timpani-n/05-realtime-scheduling.md index c21cccd..69046a2 100644 --- a/doc/architecture/HLD/timpani-n/05-realtime-scheduling.md +++ b/doc/architecture/LLD/timpani-n/05-realtime-scheduling.md @@ -3,10 +3,10 @@ * SPDX-License-Identifier: MIT --> -# HLD: Real-Time Scheduling +# LLD: Real-Time Scheduling -**Component Type:** RT Scheduling Control -**Responsibility:** CPU affinity, RT priority, sched_setattr() syscalls +**Component Type:** RT Scheduling Control +**Responsibility:** CPU affinity, RT priority, sched_setattr() syscalls **Status:** ⏸️ Not Started in Rust --- @@ -22,7 +22,7 @@ ttsched_error_t set_affinity(pid_t pid, int cpu) { cpu_set_t cpuset; CPU_ZERO(&cpuset); CPU_SET(cpu, &cpuset); - + return sched_setaffinity(pid, sizeof(cpu_set_t), &cpuset) == 0 ? TTSCHED_SUCCESS : TTSCHED_ERROR_SYSTEM; } @@ -30,13 +30,13 @@ ttsched_error_t set_affinity(pid_t pid, int cpu) { ttsched_error_t set_affinity_cpumask(pid_t pid, uint64_t cpumask) { cpu_set_t cpuset; CPU_ZERO(&cpuset); - + for (int i = 0; i < 64; i++) { if (cpumask & (1ULL << i)) { CPU_SET(i, &cpuset); } } - + return sched_setaffinity(pid, sizeof(cpu_set_t), &cpuset) == 0 ? TTSCHED_SUCCESS : TTSCHED_ERROR_SYSTEM; } @@ -48,7 +48,7 @@ ttsched_error_t set_affinity_cpumask(pid_t pid, uint64_t cpumask) { ttsched_error_t set_schedattr(pid_t pid, unsigned int priority, unsigned int policy) { struct sched_param param; param.sched_priority = priority; - + return sched_setscheduler(pid, policy, ¶m) == 0 ? TTSCHED_SUCCESS : TTSCHED_ERROR_PERMISSION; } @@ -65,5 +65,5 @@ ttsched_error_t set_schedattr(pid_t pid, unsigned int priority, unsigned int pol --- -**Document Version:** 1.0 +**Document Version:** 1.0 **Status:** C βœ…, Rust ⏸️ diff --git a/doc/architecture/HLD/timpani-n/06-signal-handling.md b/doc/architecture/LLD/timpani-n/06-signal-handling.md similarity index 91% rename from doc/architecture/HLD/timpani-n/06-signal-handling.md rename to doc/architecture/LLD/timpani-n/06-signal-handling.md index 3b4bd8d..c1aaeac 100644 --- a/doc/architecture/HLD/timpani-n/06-signal-handling.md +++ b/doc/architecture/LLD/timpani-n/06-signal-handling.md @@ -3,10 +3,10 @@ * SPDX-License-Identifier: MIT --> -# HLD: Signal Handling +# LLD: Signal Handling -**Component Type:** Signal Management -**Responsibility:** SIGALRM handlers, task signal delivery, shutdown signals +**Component Type:** Signal Management +**Responsibility:** SIGALRM handlers, task signal delivery, shutdown signals **Status:** ⏸️ Not Started in Rust --- @@ -20,19 +20,19 @@ ```c tt_error_t setup_signal_handlers(struct context *ctx) { struct sigaction sa; - + // SIGINT/SIGTERM: Graceful shutdown sa.sa_handler = signal_handler_shutdown; sa.sa_flags = 0; sigemptyset(&sa.sa_mask); sigaction(SIGINT, &sa, NULL); sigaction(SIGTERM, &sa, NULL); - + // SIGALRM: Task activation timer sa.sa_handler = signal_handler_alarm; sa.sa_flags = SA_RESTART; sigaction(SIGALRM, &sa, NULL); - + return TT_SUCCESS; } @@ -52,7 +52,7 @@ tt_error_t send_signal_pidfd(int pidfd, int signal) { struct siginfo info = {0}; info.si_signo = signal; info.si_code = SI_QUEUE; - + return syscall(__NR_pidfd_send_signal, pidfd, signal, &info, 0) == 0 ? TT_SUCCESS : TT_ERROR_SIGNAL; } @@ -68,5 +68,5 @@ tt_error_t send_signal_pidfd(int pidfd, int signal) { --- -**Document Version:** 1.0 +**Document Version:** 1.0 **Status:** C βœ…, Rust ⏸️ diff --git a/doc/architecture/HLD/timpani-n/07-ebpf-monitoring.md b/doc/architecture/LLD/timpani-n/07-ebpf-monitoring.md similarity index 89% rename from doc/architecture/HLD/timpani-n/07-ebpf-monitoring.md rename to doc/architecture/LLD/timpani-n/07-ebpf-monitoring.md index 8756711..b1cd018 100644 --- a/doc/architecture/HLD/timpani-n/07-ebpf-monitoring.md +++ b/doc/architecture/LLD/timpani-n/07-ebpf-monitoring.md @@ -3,10 +3,10 @@ * SPDX-License-Identifier: MIT --> -# HLD: eBPF Monitoring System +# LLD: eBPF Monitoring System -**Component Type:** Kernel Monitoring -**Responsibility:** Deadline miss detection, scheduler statistics via eBPF +**Component Type:** Kernel Monitoring +**Responsibility:** Deadline miss detection, scheduler statistics via eBPF **Status:** ⏸️ Not Started in Rust --- @@ -21,11 +21,11 @@ SEC("tp/syscalls/sys_enter_rt_sigtimedwait") int handle_sigwait_enter(struct trace_event_raw_sys_enter *ctx) { pid_t pid = bpf_get_current_pid_tgid() >> 32; - + // Check if PID is in filter map int *filtered = bpf_map_lookup_elem(&pid_filter_map, &pid); if (!filtered) return 0; - + // Record entry timestamp u64 ts = bpf_ktime_get_ns(); struct sigwait_event event = { @@ -33,7 +33,7 @@ int handle_sigwait_enter(struct trace_event_raw_sys_enter *ctx) { .timestamp_ns = ts, .event_type = SIGWAIT_ENTER }; - + bpf_ringbuf_output(&events, &event, sizeof(event), 0); return 0; } @@ -47,35 +47,35 @@ int handle_sigwait_exit(struct trace_event_raw_sys_exit *ctx) { ### Ring Buffer Handling (Userspace) ```c -int bpf_on(ring_buffer_sample_fn sigwait_cb, - ring_buffer_sample_fn schedstat_cb, +int bpf_on(ring_buffer_sample_fn sigwait_cb, + ring_buffer_sample_fn schedstat_cb, void *ctx) { struct sigwait_bpf *skel = sigwait_bpf__open_and_load(); sigwait_bpf__attach(skel); - + struct ring_buffer *rb = ring_buffer__new( bpf_map__fd(skel->maps.events), sigwait_cb, ctx, NULL); - + return 0; } static int handle_sigwait_bpf_event(void *ctx, void *data, size_t size) { struct sigwait_event *event = data; struct context *timpani_ctx = ctx; - + // Find corresponding task struct time_trigger *tt = find_task_by_pid(timpani_ctx, event->pid); - + if (event->event_type == SIGWAIT_EXIT) { // Check if deadline was missed uint64_t elapsed_ns = event->timestamp_ns - tt->sigwait_ts; uint64_t deadline_ns = tt->deadline.tv_sec * 1000000000 + tt->deadline.tv_nsec; - + if (elapsed_ns > deadline_ns) { report_deadline_miss(timpani_ctx, tt->task.name); } } - + return 0; } ``` @@ -91,5 +91,5 @@ static int handle_sigwait_bpf_event(void *ctx, void *data, size_t size) { --- -**Document Version:** 1.0 +**Document Version:** 1.0 **Status:** C βœ…, Rust ⏸️ diff --git a/doc/architecture/HLD/timpani-n/08-communication-libtrpc.md b/doc/architecture/LLD/timpani-n/08-communication-libtrpc.md similarity index 96% rename from doc/architecture/HLD/timpani-n/08-communication-libtrpc.md rename to doc/architecture/LLD/timpani-n/08-communication-libtrpc.md index 274d4bd..242f2b5 100644 --- a/doc/architecture/HLD/timpani-n/08-communication-libtrpc.md +++ b/doc/architecture/LLD/timpani-n/08-communication-libtrpc.md @@ -3,10 +3,10 @@ * SPDX-License-Identifier: MIT --> -# HLD: Communication (libtrpc β†’ gRPC) +# LLD: Communication (libtrpc β†’ gRPC) **Component Type:** RPC Communication -**Responsibility:** Communication with Timpani-O, schedule retrieval, synchronization, deadline miss reporting +**Responsibility:** Communication with timpani-o, schedule retrieval, synchronization, deadline miss reporting **Status:** βœ… Complete in Rust (gRPC client implemented) --- @@ -23,7 +23,7 @@ tt_error_t init_trpc(struct context *ctx) { int ret = trpc_client_create(ctx->config.address, NULL, &ctx->runtime.dbus); if (ret != 0) return TT_ERROR_NETWORK; - // Fetch schedule from Timpani-O + // Fetch schedule from timpani-o serial_buf_t *sbuf = NULL; ret = trpc_client_schedinfo(ctx->runtime.dbus, ctx->config.node_id, &sbuf); if (ret != 0) return TT_ERROR_NETWORK; @@ -78,13 +78,13 @@ tt_error_t report_deadline_miss(struct context *ctx, const char *taskname) { ```protobuf service NodeService { - // Pull assigned schedule from Timpani-O + // Pull assigned schedule from timpani-o rpc GetSchedInfo (NodeSchedRequest) returns (NodeSchedResponse) {} // Barrier synchronization across all nodes rpc SyncTimer (SyncRequest) returns (SyncResponse) {} - // Report deadline miss to Timpani-O + // Report deadline miss to timpani-o rpc ReportDMiss (DeadlineMissInfo) returns (NodeResponse) {} } ``` @@ -279,8 +279,8 @@ pub fn report_dmiss(&self, node_id: String, task_name: String) { ``` ### 2. Server-Side Filtering -**C:** Timpani-O sends all tasks, each node filters by node_id -**Rust:** Timpani-O filters in `GetSchedInfo`, returns only relevant tasks +**C:** timpani-o sends all tasks, each node filters by node_id +**Rust:** timpani-o filters in `GetSchedInfo`, returns only relevant tasks ### 3. Barrier Synchronization **C:** 100ms polling loop waiting for ack diff --git a/doc/architecture/HLD/timpani-n/09-resource-management.md b/doc/architecture/LLD/timpani-n/09-resource-management.md similarity index 90% rename from doc/architecture/HLD/timpani-n/09-resource-management.md rename to doc/architecture/LLD/timpani-n/09-resource-management.md index 4d20cba..cec3d51 100644 --- a/doc/architecture/HLD/timpani-n/09-resource-management.md +++ b/doc/architecture/LLD/timpani-n/09-resource-management.md @@ -3,10 +3,10 @@ * SPDX-License-Identifier: MIT --> -# HLD: Resource Management +# LLD: Resource Management -**Component Type:** Cleanup & State Management -**Responsibility:** Resource cleanup, global state, graceful shutdown +**Component Type:** Cleanup & State Management +**Responsibility:** Resource cleanup, global state, graceful shutdown **Status:** ⏸️ Not Started in Rust --- @@ -21,22 +21,22 @@ void cleanup_context(struct context *ctx) { // Stop BPF monitoring bpf_off(); - + // Close timer file descriptors if (ctx->runtime.hyperperiod_timer_fd >= 0) { close(ctx->runtime.hyperperiod_timer_fd); } - + // Close D-Bus connection if (ctx->runtime.dbus) { sd_bus_unref(ctx->runtime.dbus); } - + // Free task list if (ctx->runtime.tt_list) { free(ctx->runtime.tt_list); } - + // Free schedule info destroy_task_info_list(ctx->sinfo.tasks); } @@ -63,5 +63,5 @@ void set_global_context(struct context *ctx) { --- -**Document Version:** 1.0 +**Document Version:** 1.0 **Status:** C βœ…, Rust ⏸️ diff --git a/doc/architecture/HLD/timpani-n/10-data-structures.md b/doc/architecture/LLD/timpani-n/10-data-structures.md similarity index 94% rename from doc/architecture/HLD/timpani-n/10-data-structures.md rename to doc/architecture/LLD/timpani-n/10-data-structures.md index 929d725..5a983e1 100644 --- a/doc/architecture/HLD/timpani-n/10-data-structures.md +++ b/doc/architecture/LLD/timpani-n/10-data-structures.md @@ -3,10 +3,10 @@ * SPDX-License-Identifier: MIT --> -# HLD: Data Structures +# LLD: Data Structures -**Component Type:** Core Data Models -**Responsibility:** Context, task info, runtime state structures +**Component Type:** Core Data Models +**Responsibility:** Context, task info, runtime state structures **Status:** πŸ”„ Partial (structures defined in Rust, not used yet) --- @@ -21,7 +21,7 @@ struct context { struct config config; // Configuration struct runtime runtime; // Runtime state - struct sched_info sinfo; // Schedule from Timpani-O + struct sched_info sinfo; // Schedule from timpani-o struct hyperperiod_manager hp_manager; // Hyperperiod info bool shutdown_requested; // Shutdown flag }; @@ -109,5 +109,5 @@ pub struct TaskInfo { --- -**Document Version:** 1.0 +**Document Version:** 1.0 **Status:** C βœ…, Rust πŸ”„ (structures only) diff --git a/doc/architecture/HLD/timpani-n/README.md b/doc/architecture/LLD/timpani-n/README.md similarity index 90% rename from doc/architecture/HLD/timpani-n/README.md rename to doc/architecture/LLD/timpani-n/README.md index 8228945..eeef026 100644 --- a/doc/architecture/HLD/timpani-n/README.md +++ b/doc/architecture/LLD/timpani-n/README.md @@ -3,10 +3,10 @@ * SPDX-License-Identifier: MIT --> -# Timpani-N High-Level Design (HLD) Documentation +# timpani-n Low-Level Design (LLD) Documentation **Project:** Eclipse Timpani - Real-Time Task Orchestration Framework -**Component:** Timpani-N (Node Executor) +**Component:** timpani-n (Node Executor) **Migration:** C β†’ Rust (In Progress - Initialization Phase Only) **Status:** πŸ”„ Milestone 2 In Progress **Document Set Version:** 1.0 @@ -16,7 +16,7 @@ ## Overview -This directory contains 10 High-Level Design (HLD) documents for Timpani-N (node executor) components. **Unlike Timpani-O**, these documents are primarily **AS-IS focused** because the Rust implementation is still in early development (only initialization/configuration complete). +This directory contains 10 Low-Level Design (LLD) documents for timpani-n (node executor) components. **Unlike timpani-o**, these documents are primarily **AS-IS focused** because the Rust implementation is still in early development (only initialization/configuration complete). ### Document Structure - **AS-IS (C Implementation):** Comprehensive documentation from `timpani-n/src/` (legacy C code) @@ -86,9 +86,9 @@ This directory contains 10 High-Level Design (HLD) documents for Timpani-N (node --- -## Key Differences from Timpani-O HLD +## Key Differences from timpani-o LLD -| Aspect | Timpani-O HLD | Timpani-N HLD | +| Aspect | timpani-o LLD | timpani-n LLD | |--------|---------------|---------------| | **Rust Status** | βœ… Complete (M1) | πŸ”„ Initialization only (M2 in progress) | | **Focus** | AS-IS vs WILL-BE comparison | Primarily AS-IS (C documentation) | @@ -98,29 +98,29 @@ This directory contains 10 High-Level Design (HLD) documents for Timpani-N (node --- -## Timpani-N Architecture +## timpani-n Architecture ### System Role -Timpani-N is the **node executor** in the distributed Timpani system: -- **Receives** scheduled tasks from Timpani-O (global orchestrator) +timpani-n is the **node executor** in the distributed Timpani system: +- **Receives** scheduled tasks from timpani-o (global orchestrator) - **Executes** time-triggered tasks with real-time guarantees - **Monitors** task execution via eBPF -- **Reports** deadline misses back to Timpani-O +- **Reports** deadline misses back to timpani-o ### High-Level Flow ``` -Timpani-O (Orchestrator) +timpani-o (Orchestrator) ↓ (gRPC: GetSchedInfo, SyncTimer, ReportDMiss) -Timpani-N (Node Executor) +timpani-n (Node Executor) ↓ (Load eBPF programs) Linux Kernel (eBPF hooks) ↓ (Signal tasks) Task Processes (exprocs) ↓ (Ring buffer events) -Timpani-N (Deadline monitoring) +timpani-n (Deadline monitoring) ↓ (Report deadline miss via gRPC) -Timpani-O β†’ Fault Manager +timpani-o β†’ Fault Manager ``` --- @@ -176,7 +176,7 @@ Timpani-O β†’ Fault Manager Start with these to understand the legacy system: 1. [03 - Time Trigger Core](03-time-trigger-core.md) - Main execution loop 2. [07 - eBPF Monitoring](07-ebpf-monitoring.md) - Deadline detection mechanism -3. [08 - Communication](08-communication-libtrpc.md) - Interaction with Timpani-O +3. [08 - Communication](08-communication-libtrpc.md) - Interaction with timpani-o ### For Rust Migration Status Check these to see what's been ported: @@ -235,8 +235,8 @@ Check these to see what's been ported: | Term | Definition | |------|------------| -| **Timpani-N** | Node executor - runs on each compute node | -| **Timpani-O** | Global orchestrator - distributes tasks to nodes | +| **timpani-n** | Node executor - runs on each compute node | +| **timpani-o** | Global orchestrator - distributes tasks to nodes | | **Time-Triggered** | Tasks activated by timer signals, not events | | **Hyperperiod** | LCM of all task periods (smallest repeating window) | | **eBPF** | Extended Berkeley Packet Filter (kernel monitoring) | @@ -252,27 +252,27 @@ Check these to see what's been ported: ## Migration Roadmap -### Phase 1: Foundation (Current - M2) +### Step 1: Foundation (Current - M2) - βœ… CLI and configuration parsing - πŸ”„ Basic initialization structure - ⏸️ Context management -### Phase 2: Core Runtime (Planned) +### Step 2: Core Runtime (Planned) - ⏸️ Time trigger execution loop - ⏸️ Hyperperiod calculation - ⏸️ Timer management -### Phase 3: Communication (Planned) -- ⏸️ gRPC client to Timpani-O +### Step 3: Communication (Planned) +- ⏸️ gRPC client to timpani-o - ⏸️ Task schedule retrieval - ⏸️ Synchronization protocol -### Phase 4: Execution (Planned) +### Step 4: Execution (Planned) - ⏸️ Real-time scheduling (CPU affinity, RT priority) - ⏸️ Signal handling - ⏸️ Task activation -### Phase 5: Monitoring (Planned) +### Step 5: Monitoring (Planned) - ⏸️ eBPF integration (aya or libbpf-rs) - ⏸️ Deadline miss detection - ⏸️ Performance statistics @@ -282,7 +282,7 @@ Check these to see what's been ported: ## Important Notes ### Documentation Purpose -These HLD documents serve as: +These LLD documents serve as: 1. **Reference** for the legacy C implementation 2. **Migration Guide** for Rust developers 3. **Comparison** showing C vs Rust approaches (when implemented) @@ -311,7 +311,7 @@ These HLD documents serve as: ## Feedback & Updates These documents will be updated as the Rust migration progresses: -- **After each component migration:** Update corresponding HLD with WILL-BE section +- **After each component migration:** Update corresponding LLD with WILL-BE section - **After major design decisions:** Add design decision rationale - **After testing:** Add test coverage notes - **After M2 completion:** Comprehensive review and update diff --git a/doc/architecture/HLD/timpani-o/01-schedinfo-service.md b/doc/architecture/LLD/timpani-o/01-schedinfo-service.md similarity index 99% rename from doc/architecture/HLD/timpani-o/01-schedinfo-service.md rename to doc/architecture/LLD/timpani-o/01-schedinfo-service.md index fb129d5..482d894 100644 --- a/doc/architecture/HLD/timpani-o/01-schedinfo-service.md +++ b/doc/architecture/LLD/timpani-o/01-schedinfo-service.md @@ -3,7 +3,7 @@ * SPDX-License-Identifier: MIT --> -# HLD: SchedInfoService Component +# LLD: SchedInfoService Component **Component Type:** gRPC Service **Responsibility:** Receive and process workload schedules from Pullpiri orchestrator diff --git a/doc/architecture/HLD/timpani-o/02-fault-service-client.md b/doc/architecture/LLD/timpani-o/02-fault-service-client.md similarity index 97% rename from doc/architecture/HLD/timpani-o/02-fault-service-client.md rename to doc/architecture/LLD/timpani-o/02-fault-service-client.md index 3c541a1..9c71dd8 100644 --- a/doc/architecture/HLD/timpani-o/02-fault-service-client.md +++ b/doc/architecture/LLD/timpani-o/02-fault-service-client.md @@ -3,7 +3,7 @@ * SPDX-License-Identifier: MIT --> -# HLD: FaultService Client Component +# LLD: FaultService Client Component **Component Type:** gRPC Client **Responsibility:** Report fault events (deadline misses) to Pullpiri orchestrator @@ -11,7 +11,7 @@ ## Component Overview -The FaultService Client component is responsible for forwarding fault notifications (primarily deadline misses) from Timpani-N nodes back to the Pullpiri orchestrator. It maintains a persistent gRPC connection and handles failures gracefully. +The FaultService Client component is responsible for forwarding fault notifications (primarily deadline misses) from timpani-n nodes back to the Pullpiri orchestrator. It maintains a persistent gRPC connection and handles failures gracefully. --- @@ -184,7 +184,7 @@ bool Initialize(const std::string& server_address) { // Connect immediately - fails if Pullpiri not running channel_ = grpc::CreateChannel(server_address, ...); if (!channel_->WaitForConnected(...)) { - return false; // Timpani-O won't start + return false; // timpani-o won't start } return true; } @@ -195,12 +195,12 @@ bool Initialize(const std::string& server_address) { pub fn connect_lazy(addr: String) -> anyhow::Result> { // Connection established on first RPC call let channel = Endpoint::from_shared(addr)?.connect_lazy(); - // Timpani-O can start even if Pullpiri is down + // timpani-o can start even if Pullpiri is down Ok(Arc::new(FaultClient { stub: ProtoFaultClient::new(channel) })) } ``` -**Rationale:** Lazy connection avoids hard startup ordering dependency. Timpani-O can start before Pullpiri is running. The first fault notification will trigger connection establishment. +**Rationale:** Lazy connection avoids hard startup ordering dependency. timpani-o can start before Pullpiri is running. The first fault notification will trigger connection establishment. --- diff --git a/doc/architecture/HLD/timpani-o/03-dbus-server-node-service.md b/doc/architecture/LLD/timpani-o/03-dbus-server-node-service.md similarity index 96% rename from doc/architecture/HLD/timpani-o/03-dbus-server-node-service.md rename to doc/architecture/LLD/timpani-o/03-dbus-server-node-service.md index 040615d..7d2452a 100644 --- a/doc/architecture/HLD/timpani-o/03-dbus-server-node-service.md +++ b/doc/architecture/LLD/timpani-o/03-dbus-server-node-service.md @@ -3,15 +3,15 @@ * SPDX-License-Identifier: MIT --> -# HLD: D-Bus Server / Node Service Component +# LLD: D-Bus Server / Node Service Component **Component Type:** Communication Server -**Responsibility:** Serve scheduling information and coordinate synchronization with Timpani-N nodes +**Responsibility:** Serve scheduling information and coordinate synchronization with timpani-n nodes **Status:** βœ… Migrated (C++ D-Bus β†’ Rust gRPC) ## Component Overview -This component provides the communication interface between Timpani-O (global orchestrator) and Timpani-N nodes (local schedulers). It handles three primary operations: serving schedules, coordinating synchronized starts, and receiving deadline miss reports. +This component provides the communication interface between timpani-o (global orchestrator) and timpani-n nodes (local schedulers). It handles three primary operations: serving schedules, coordinating synchronized starts, and receiving deadline miss reports. --- @@ -39,7 +39,7 @@ public: ### Responsibilities (C++) 1. **Listen** for incoming connections on TCP port 7777 -2. **Serve** scheduling information to Timpani-N nodes (via `trpc_client_schedinfo`) +2. **Serve** scheduling information to timpani-n nodes (via `trpc_client_schedinfo`) 3. **Coordinate** synchronization barrier for all nodes (via `trpc_client_sync`) 4. **Receive** deadline miss reports (via `trpc_client_dmiss`) 5. **Serialize** messages using custom binary format (libtrpc) @@ -54,13 +54,13 @@ public: ### Data Flow (C++) ``` -Timpani-N (libtrpc client) +timpani-n (libtrpc client) ↓ TCP connection to port 7777 DBusServer::GetSchedInfoCallback() β†’ sched_info_service_->GetSchedInfoMap() β†’ Serialize schedinfo_t struct ↓ -Return binary message to Timpani-N +Return binary message to timpani-n ``` ### Configuration (C++) @@ -92,7 +92,7 @@ pub struct NodeServiceImpl { ### Responsibilities (Rust) -1. **GetSchedInfo:** Timpani-N pulls its task list via gRPC +1. **GetSchedInfo:** timpani-n pulls its task list via gRPC 2. **SyncTimer:** Blocking barrier - all nodes synchronize start time 3. **ReportDMiss:** Deadline miss forwarded to Pullpiri 4. **Barrier Management:** Watch channel coordination for sync barrier @@ -458,20 +458,20 @@ tokio::select! { ### Breaking Changes -1. **Protocol Change:** D-Bus β†’ gRPC (Timpani-N must use gRPC client) +1. **Protocol Change:** D-Bus β†’ gRPC (timpani-n must use gRPC client) 2. **Port Change:** 7777 β†’ 50054 3. **Message Format:** Binary struct β†’ Protobuf ### Backwards Compatibility **None** - this is a breaking change. Requires: -- Timpani-N migration to gRPC client (Milestone 2) +- timpani-n migration to gRPC client (Milestone 2) - Both components must be upgraded together ### Migration Path -1. Implement Rust Timpani-O with gRPC NodeService -2. Migrate Timpani-N from libtrpc to Tonic gRPC client +1. Implement Rust timpani-o with gRPC NodeService +2. Migrate timpani-n from libtrpc to Tonic gRPC client 3. Deploy both simultaneously 4. Decommission D-Bus server and libtrpc diff --git a/doc/architecture/HLD/timpani-o/04-global-scheduler.md b/doc/architecture/LLD/timpani-o/04-global-scheduler.md similarity index 99% rename from doc/architecture/HLD/timpani-o/04-global-scheduler.md rename to doc/architecture/LLD/timpani-o/04-global-scheduler.md index 0b65a54..60e946d 100644 --- a/doc/architecture/HLD/timpani-o/04-global-scheduler.md +++ b/doc/architecture/LLD/timpani-o/04-global-scheduler.md @@ -3,7 +3,7 @@ * SPDX-License-Identifier: MIT --> -# HLD: Global Scheduler Component +# LLD: Global Scheduler Component **Component Type:** Core Scheduling Logic **Responsibility:** Allocate tasks to nodes and CPUs using real-time scheduling algorithms @@ -11,7 +11,7 @@ ## Component Overview -The Global Scheduler component implements the core task allocation logic for Timpani-O. It receives a set of real-time tasks and distributes them across available compute nodes and CPUs, ensuring schedulability constraints are met. +The Global Scheduler component implements the core task allocation logic for timpani-o. It receives a set of real-time tasks and distributes them across available compute nodes and CPUs, ensuring schedulability constraints are met. --- diff --git a/doc/architecture/HLD/timpani-o/05-hyperperiod-manager.md b/doc/architecture/LLD/timpani-o/05-hyperperiod-manager.md similarity index 99% rename from doc/architecture/HLD/timpani-o/05-hyperperiod-manager.md rename to doc/architecture/LLD/timpani-o/05-hyperperiod-manager.md index ce419c1..8f43a9d 100644 --- a/doc/architecture/HLD/timpani-o/05-hyperperiod-manager.md +++ b/doc/architecture/LLD/timpani-o/05-hyperperiod-manager.md @@ -3,7 +3,7 @@ * SPDX-License-Identifier: MIT --> -# HLD: Hyperperiod Manager Component +# LLD: Hyperperiod Manager Component **Component Type:** Mathematical Utility **Responsibility:** Calculate Least Common Multiple (LCM) of task periods for hyperperiod determination diff --git a/doc/architecture/HLD/timpani-o/06-node-configuration-manager.md b/doc/architecture/LLD/timpani-o/06-node-configuration-manager.md similarity index 99% rename from doc/architecture/HLD/timpani-o/06-node-configuration-manager.md rename to doc/architecture/LLD/timpani-o/06-node-configuration-manager.md index ce30085..4f6687a 100644 --- a/doc/architecture/HLD/timpani-o/06-node-configuration-manager.md +++ b/doc/architecture/LLD/timpani-o/06-node-configuration-manager.md @@ -3,7 +3,7 @@ * SPDX-License-Identifier: MIT --> -# HLD: Node Configuration Manager Component +# LLD: Node Configuration Manager Component **Component Type:** Configuration Loader **Responsibility:** Load and manage node hardware specifications from YAML configuration files diff --git a/doc/architecture/HLD/timpani-o/07-scheduler-utilities.md b/doc/architecture/LLD/timpani-o/07-scheduler-utilities.md similarity index 99% rename from doc/architecture/HLD/timpani-o/07-scheduler-utilities.md rename to doc/architecture/LLD/timpani-o/07-scheduler-utilities.md index 9af4996..57c5d68 100644 --- a/doc/architecture/HLD/timpani-o/07-scheduler-utilities.md +++ b/doc/architecture/LLD/timpani-o/07-scheduler-utilities.md @@ -3,7 +3,7 @@ * SPDX-License-Identifier: MIT --> -# HLD: Scheduler Utilities Component +# LLD: Scheduler Utilities Component **Component Type:** Helper Functions & Utilities **Responsibility:** Provide reusable scheduling utilities, feasibility checks, and mathematical functions diff --git a/doc/architecture/HLD/timpani-o/08-data-structures.md b/doc/architecture/LLD/timpani-o/08-data-structures.md similarity index 98% rename from doc/architecture/HLD/timpani-o/08-data-structures.md rename to doc/architecture/LLD/timpani-o/08-data-structures.md index 1614f0a..d4bbe30 100644 --- a/doc/architecture/HLD/timpani-o/08-data-structures.md +++ b/doc/architecture/LLD/timpani-o/08-data-structures.md @@ -3,7 +3,7 @@ * SPDX-License-Identifier: MIT --> -# HLD: Data Structures Component +# LLD: Data Structures Component **Component Type:** Core Data Models **Responsibility:** Define task representations, scheduling results, and type-safe enumerations @@ -11,7 +11,7 @@ ## Component Overview -Data Structures component defines the core types used throughout Timpani-O for representing tasks, scheduling policies, CPU affinity constraints, and final scheduling assignments. +Data Structures component defines the core types used throughout timpani-o for representing tasks, scheduling policies, CPU affinity constraints, and final scheduling assignments. --- @@ -191,7 +191,7 @@ impl Task { } } -/// Wire-ready task (sent to Timpani-N) +/// Wire-ready task (sent to timpani-n) #[derive(Debug, Clone)] pub struct SchedTask { pub name: String, // No length limit @@ -279,7 +279,7 @@ impl SchedTask { **Rationale:** - **Internal:** Use Β΅s (microseconds) everywhere -- **Wire Protocol:** Convert to ns (nanoseconds) only when sending to Timpani-N +- **Wire Protocol:** Convert to ns (nanoseconds) only when sending to timpani-n - **No Duplication:** Single field eliminates sync issues --- diff --git a/doc/architecture/HLD/timpani-o/09-communication-protocols.md b/doc/architecture/LLD/timpani-o/09-communication-protocols.md similarity index 93% rename from doc/architecture/HLD/timpani-o/09-communication-protocols.md rename to doc/architecture/LLD/timpani-o/09-communication-protocols.md index 052a181..a862069 100644 --- a/doc/architecture/HLD/timpani-o/09-communication-protocols.md +++ b/doc/architecture/LLD/timpani-o/09-communication-protocols.md @@ -3,7 +3,7 @@ * SPDX-License-Identifier: MIT --> -# HLD: Communication Protocols Component +# LLD: Communication Protocols Component **Component Type:** Protocol Definitions & Wire Format **Responsibility:** Define gRPC services, message formats, and protocol buffers for all communication @@ -12,8 +12,8 @@ ## Component Overview Communication Protocols component defines all inter-process communication between: -1. **Pullpiri ↔ Timpani-O** (gRPC): Workload submission and fault reporting -2. **Timpani-O ↔ Timpani-N** (C++: D-Bus | Rust: gRPC): Schedule distribution and synchronization +1. **Pullpiri ↔ timpani-o** (gRPC): Workload submission and fault reporting +2. **timpani-o ↔ timpani-n** (C++: D-Bus | Rust: gRPC): Schedule distribution and synchronization --- @@ -23,9 +23,9 @@ Communication Protocols component defines all inter-process communication betwee | Connection | Protocol | Port | Serialization | |------------|----------|------|---------------| -| Pullpiri β†’ Timpani-O (SchedInfo) | gRPC | 50052 | Protobuf | -| Timpani-O β†’ Pullpiri (Fault) | gRPC | 50053 | Protobuf | -| Timpani-N ↔ Timpani-O | **D-Bus over TCP** | **7777** | **Custom binary (libtrpc)** | +| Pullpiri β†’ timpani-o (SchedInfo) | gRPC | 50052 | Protobuf | +| timpani-o β†’ Pullpiri (Fault) | gRPC | 50053 | Protobuf | +| timpani-n ↔ timpani-o | **D-Bus over TCP** | **7777** | **Custom binary (libtrpc)** | ### D-Bus Protocol (C++ Only) @@ -85,9 +85,9 @@ message TaskInfo { | Connection | Protocol | Port | Serialization | |------------|----------|------|---------------| -| Pullpiri β†’ Timpani-O (SchedInfo) | gRPC | 50052 | Protobuf | -| Timpani-O β†’ Pullpiri (Fault) | gRPC | 50053 | Protobuf | -| Timpani-N ↔ Timpani-O | **gRPC/HTTP2** | **50054** | **Protobuf** | +| Pullpiri β†’ timpani-o (SchedInfo) | gRPC | 50052 | Protobuf | +| timpani-o β†’ Pullpiri (Fault) | gRPC | 50053 | Protobuf | +| timpani-n ↔ timpani-o | **gRPC/HTTP2** | **50054** | **Protobuf** | ### **BREAKING CHANGE: D-Bus β†’ gRPC** @@ -107,7 +107,7 @@ message TaskInfo { ## Service Definitions -### 1. SchedInfoService (Pullpiri β†’ Timpani-O) +### 1. SchedInfoService (Pullpiri β†’ timpani-o) **Proto Definition:** ```protobuf @@ -155,7 +155,7 @@ impl SchedInfoService for SchedInfoServiceImpl { --- -### 2. FaultService (Timpani-O β†’ Pullpiri) +### 2. FaultService (timpani-o β†’ Pullpiri) **Proto Definition:** ```protobuf @@ -202,7 +202,7 @@ impl FaultNotifier for FaultClient { --- -### 3. NodeService (Timpani-O ↔ Timpani-N) +### 3. NodeService (timpani-o ↔ timpani-n) **Proto Definition:** ```protobuf @@ -324,7 +324,7 @@ impl NodeService for NodeServiceImpl { 5. **Debugging:** Wireshark has gRPC dissectors (D-Bus was opaque binary) **Migration Cost:** -- ❌ **Breaking:** Timpani-N must migrate from libtrpc to gRPC client +- ❌ **Breaking:** timpani-n must migrate from libtrpc to gRPC client - βœ… **Benefit:** Removes ~2000 lines of custom serialization code - βœ… **Benefit:** libtrpc dependency eliminated @@ -521,14 +521,14 @@ tonic::transport::Server::builder() ### Breaking Changes -**Timpani-N Side:** +**timpani-n Side:** ```cpp // OLD (C++ libtrpc client) #include "peer_dbus.h" schedinfo_t* info = trpc_client_schedinfo(node_id); // NEW (Rust gRPC client) -// Timpani-N will need Tonic client or C++ gRPC client +// timpani-n will need Tonic client or C++ gRPC client auto channel = grpc::CreateChannel("localhost:50054", ...); auto stub = NodeService::NewStub(channel); NodeSchedRequest request; @@ -538,8 +538,8 @@ stub->GetSchedInfo(&context, request, &response); ``` **Must Migrate Together:** -- Rust Timpani-O (NodeService server) deployed with gRPC support -- Timpani-N updated to use gRPC client (libtrpc removed) +- Rust timpani-o (NodeService server) deployed with gRPC support +- timpani-n updated to use gRPC client (libtrpc removed) - Cannot mix old/new protocols --- diff --git a/doc/architecture/HLD/timpani-o/10-error-handling.md b/doc/architecture/LLD/timpani-o/10-error-handling.md similarity index 99% rename from doc/architecture/HLD/timpani-o/10-error-handling.md rename to doc/architecture/LLD/timpani-o/10-error-handling.md index 74db62d..7fd8549 100644 --- a/doc/architecture/HLD/timpani-o/10-error-handling.md +++ b/doc/architecture/LLD/timpani-o/10-error-handling.md @@ -3,7 +3,7 @@ * SPDX-License-Identifier: MIT --> -# HLD: Error Handling and Fault Tolerance Component +# LLD: Error Handling and Fault Tolerance Component **Component Type:** Error Management System **Responsibility:** Define error types, propagation strategies, and fault recovery mechanisms @@ -11,7 +11,7 @@ ## Component Overview -Error Handling component provides structured error types, propagation mechanisms, and recovery strategies for all failure scenarios in Timpani-O, including scheduling failures, resource exhaustion, RPC errors, and configuration problems. +Error Handling component provides structured error types, propagation mechanisms, and recovery strategies for all failure scenarios in timpani-o, including scheduling failures, resource exhaustion, RPC errors, and configuration problems. --- diff --git a/doc/architecture/HLD/timpani-o/README.md b/doc/architecture/LLD/timpani-o/README.md similarity index 90% rename from doc/architecture/HLD/timpani-o/README.md rename to doc/architecture/LLD/timpani-o/README.md index 4072ec4..6cf0a4b 100644 --- a/doc/architecture/HLD/timpani-o/README.md +++ b/doc/architecture/LLD/timpani-o/README.md @@ -3,10 +3,10 @@ * SPDX-License-Identifier: MIT --> -# Timpani-O High-Level Design (HLD) Documentation +# timpani-o Low-Level Design (LLD) Documentation **Project:** Eclipse Timpani - Real-Time Task Orchestration Framework -**Component:** Timpani-O (Global Orchestrator) +**Component:** timpani-o (Global Orchestrator) **Migration:** C++ β†’ Rust **Status:** βœ… Milestone 1 Complete (Rust Implementation) **Document Set Version:** 1.0 @@ -16,7 +16,7 @@ ## Overview -This directory contains 10 High-Level Design (HLD) documents that compare the **legacy C++ implementation** (As-Is) with the **completed Rust implementation** (Will-Be) of Timpani-O components. +This directory contains 10 Low-Level Design (LLD) documents that compare the **legacy C++ implementation** (As-Is) with the **completed Rust implementation** (Will-Be) of timpani-o components. Each document provides: - **Component Overview:** Purpose and responsibility @@ -36,7 +36,7 @@ Each document provides: |---|-----------|--------|-------------| | [01](01-schedinfo-service.md) | **SchedInfoService** | βœ… Complete | gRPC server receiving workload schedules from Pullpiri | | [02](02-fault-service-client.md) | **FaultService Client** | βœ… Complete | gRPC client reporting faults (deadline misses) to Pullpiri | -| [03](03-dbus-server-node-service.md) | **D-Bus Server / NodeService** | βœ… Complete | Communication with Timpani-N nodes (D-Bus β†’ gRPC migration) | +| [03](03-dbus-server-node-service.md) | **D-Bus Server / NodeService** | βœ… Complete | Communication with timpani-n nodes (D-Bus β†’ gRPC migration) | ### Scheduling Logic @@ -71,7 +71,7 @@ Each document provides: **Change Summary:** - **Legacy (C++):** D-Bus peer-to-peer over TCP (port 7777) with custom binary serialization (`libtrpc`) - **Migrated (Rust):** gRPC/HTTP2 (port 50054) with Protocol Buffers -- **Impact:** Breaking change - requires Timpani-N migration to gRPC client +- **Impact:** Breaking change - requires timpani-n migration to gRPC client **Benefits:** - βœ… Industry-standard protocol (better tooling: grpcurl, Wireshark) @@ -209,7 +209,7 @@ pub fn check_liu_layland(tasks_on_node: &[&Task]) -> Option { ## Verification Status -All 10 HLD documents have been **verified against actual source code**: +All 10 LLD documents have been **verified against actual source code**: | Source | Files Verified | |--------|----------------| @@ -234,8 +234,8 @@ All 10 HLD documents have been **verified against actual source code**: 3. Review [10 - Error Handling](10-error-handling.md) (cross-cutting pattern) **Focus on Communication:** -1. [01 - SchedInfoService](01-schedinfo-service.md) (Pullpiri β†’ Timpani-O) -2. [03 - NodeService](03-dbus-server-node-service.md) (Timpani-O ↔ Timpani-N) +1. [01 - SchedInfoService](01-schedinfo-service.md) (Pullpiri β†’ timpani-o) +2. [03 - NodeService](03-dbus-server-node-service.md) (timpani-o ↔ timpani-n) 3. [09 - Communication Protocols](09-communication-protocols.md) (gRPC overview) **Focus on Algorithms:** @@ -261,7 +261,7 @@ All 10 HLD documents have been **verified against actual source code**: ## Reference Architecture Documents -These HLDs are based on the following authenticated source documents: +These LLDs are based on the following authenticated source documents: ### Legacy C++ Documentation @@ -290,9 +290,9 @@ These HLDs are based on the following authenticated source documents: |------|------------| | **As-Is** | Legacy C++ implementation (before migration) | | **Will-Be** | Completed Rust implementation (after migration) | -| **Timpani-O** | Global orchestrator component (this codebase) | -| **Timpani-N** | Node-local scheduler (separate component) | -| **Pullpiri** | Higher-level orchestrator that sends workloads to Timpani-O | +| **timpani-o** | Global orchestrator component (this codebase) | +| **timpani-n** | Node-local scheduler (separate component) | +| **Pullpiri** | Higher-level orchestrator that sends workloads to timpani-o | | **Hyperperiod** | LCM of all task periods (smallest repeating window) | | **Liu & Layland** | Theoretical schedulability bound for Rate Monotonic scheduling | | **WCET** | Worst-Case Execution Time (`runtime_us` field) | @@ -328,18 +328,7 @@ All documents follow this structure: --- -## Migration Status Summary -| Milestone | Status | Components | -|-----------|--------|------------| -| **M1: Timpani-O Rust** | βœ… Complete | All 10 components documented | -| **M2: Timpani-N Rust** | πŸ”„ In Progress | Not covered by these HLDs | -| **M3: gRPC Integration** | ⏸️ Not Started | Requires M2 completion | - -**Completion Date (M1):** Q4 2025 -**Documentation Date:** May 2026 - ---- ## Feedback & Updates diff --git a/doc/architecture/timpani_architecture.md b/doc/architecture/timpani_architecture.md index cf45970..c9eccab 100644 --- a/doc/architecture/timpani_architecture.md +++ b/doc/architecture/timpani_architecture.md @@ -3,7 +3,7 @@ * SPDX-License-Identifier: MIT --> -# TIMPANI System Architecture +# timpani System Architecture **Document Version:** 1.0 **Last Updated:** May 12, 2026 @@ -13,10 +13,10 @@ ## System Overview -TIMPANI is a **distributed real-time task orchestration framework** designed for time-triggered systems. It consists of two primary components: +timpani is a **distributed real-time task orchestration framework** designed for time-triggered systems. It consists of two primary components: -- **Timpani-O (Orchestrator):** Global scheduler that manages workloads across multiple nodes -- **Timpani-N (Node):** Local executor that runs time-triggered tasks with real-time guarantees +- **timpani-o (Orchestrator):** Global scheduler that manages workloads across multiple nodes +- **timpani-n (Node):** Local executor that runs time-triggered tasks with real-time guarantees --- @@ -24,7 +24,7 @@ TIMPANI is a **distributed real-time task orchestration framework** designed for ```mermaid graph TB - subgraph "Timpani-O (Global Orchestrator)" + subgraph "timpani-o (Global Orchestrator)" O1[Global Scheduler] O2[Hyperperiod Manager] O3[Node Configuration Manager] @@ -33,7 +33,7 @@ graph TB O6[gRPC Server] end - subgraph "Timpani-N (Node Executor)" + subgraph "timpani-n (Node Executor)" N1[Time Trigger Core] N2[Task Management] N3[Real-Time Scheduler] @@ -70,7 +70,7 @@ graph TB --- -## Timpani-O Components +## timpani-o Components | Component | Responsibility | Implementation | |-----------|---------------|----------------| @@ -81,11 +81,11 @@ graph TB | **Fault Service Client** | Deadline miss reporting | C++ β†’ Rust βœ… | | **gRPC Server** | Node communication (port 50054) | D-Bus β†’ gRPC βœ… | -**Detailed Documentation:** [HLD/timpani-o/](HLD/timpani-o/) +**Detailed Documentation:** [LLD/timpani-o/](LLD/timpani-o/) --- -## Timpani-N Components +## timpani-n Components | Component | Responsibility | Implementation | |-----------|---------------|----------------| @@ -95,9 +95,9 @@ graph TB | **eBPF Monitoring** | Deadline miss detection (kernel) | C β†’ Rust ⏸️ | | **Signal Handlers** | SIGALRM, task activation signals | C β†’ Rust ⏸️ | | **Configuration** | CLI parsing, validation | C β†’ Rust βœ… | -| **gRPC Client** | Communication with Timpani-O | libtrpc β†’ gRPC πŸ”„ | +| **gRPC Client** | Communication with timpani-o | libtrpc β†’ gRPC πŸ”„ | -**Detailed Documentation:** [HLD/timpani-n/](HLD/timpani-n/) +**Detailed Documentation:** [LLD/timpani-n/](LLD/timpani-n/) **Legend:** βœ… Complete | πŸ”„ In Progress | ⏸️ Not Started @@ -108,8 +108,8 @@ graph TB ```mermaid sequenceDiagram participant App as Sample Apps - participant TN as Timpani-N - participant TO as Timpani-O + participant TN as timpani-n + participant TO as timpani-o participant FM as Fault Manager Note over TO: Startup Phase @@ -165,19 +165,19 @@ sequenceDiagram ```mermaid graph LR subgraph "Node 1" - N1[Timpani-N] + N1[timpani-n] A1[App Tasks] N1 -.->|monitors| A1 end subgraph "Node 2" - N2[Timpani-N] + N2[timpani-n] A2[App Tasks] N2 -.->|monitors| A2 end subgraph "Orchestration Node" - TO[Timpani-O] + TO[timpani-o] FM[Fault Manager] end @@ -200,8 +200,8 @@ graph LR - **Deadline Monitoring:** eBPF tracks rt_sigtimedwait syscalls ### 2. Distributed Coordination -- **Centralized Scheduling:** Timpani-O computes global schedule -- **Decentralized Execution:** Timpani-N executes local schedule +- **Centralized Scheduling:** timpani-o computes global schedule +- **Decentralized Execution:** timpani-n executes local schedule - **Synchronization:** Coordinated start time across nodes ### 3. Fault Tolerance @@ -211,19 +211,11 @@ graph LR --- -## Migration Status -| Milestone | Component | Status | Documentation | -|-----------|-----------|--------|---------------| -| **M1** | Timpani-O | βœ… Complete | [HLD/timpani-o/](HLD/timpani-o/) | -| **M2** | Timpani-N | πŸ”„ Partial | [HLD/timpani-n/](HLD/timpani-n/) | -| **M3** | gRPC Integration | πŸ”„ In Progress | [grpc_architecture.md](grpc_architecture.md) | - ---- ## References -- **Component HLD:** [HLD/timpani-o/](HLD/timpani-o/), [HLD/timpani-n/](HLD/timpani-n/) +- **Component LLD:** [LLD/timpani-o/](LLD/timpani-o/), [LLD/timpani-n/](LLD/timpani-n/) - **gRPC Architecture:** [grpc_architecture.md](grpc_architecture.md) - **API Documentation:** [../docs/api.md](../docs/api.md) - **Getting Started:** [../docs/getting-started.md](../docs/getting-started.md) @@ -231,5 +223,5 @@ graph LR --- **Document Version:** 1.0 -**Verified Against:** Component HLD documents, source code (timpani_rust/, timpani-n/, timpani-o/) +**Verified Against:** Component LLD documents, source code (timpani_rust/, timpani-n/, timpani-o/) diff --git a/doc/architecture/grpc_architecture.md b/doc/architecture/timpani_rust_grpc_architecture.md similarity index 84% rename from doc/architecture/grpc_architecture.md rename to doc/architecture/timpani_rust_grpc_architecture.md index aa208f8..83ad145 100644 --- a/doc/architecture/grpc_architecture.md +++ b/doc/architecture/timpani_rust_grpc_architecture.md @@ -3,7 +3,7 @@ * SPDX-License-Identifier: MIT --> -# TIMPANI gRPC Integration Architecture +# timpani gRPC Integration Architecture **Document Version:** 1.0 **Last Updated:** May 2026 @@ -27,7 +27,7 @@ ## Overview -TIMPANI's Rust migration replaces the legacy D-Bus communication layer with **gRPC/Protobuf**, introducing: +timpani's Rust migration replaces the legacy D-Bus communication layer with **gRPC/Protobuf**, introducing: - **Type-safe** service contracts via Protobuf schemas - **Async/non-blocking** RPC calls with Tokio runtime @@ -37,11 +37,11 @@ TIMPANI's Rust migration replaces the legacy D-Bus communication layer with **gR ### Motivation for gRPC -The Rust migration replaces D-Bus + libtrpc with gRPC/Protobuf while maintaining functional equivalence with Timpani 25. Key improvements focus on **performance**, **type safety**, and **future extensibility**. +The Rust migration replaces D-Bus + libtrpc with gRPC/Protobuf while maintaining functional equivalence with timpani 25. Key improvements focus on **performance**, **type safety**, and **future extensibility**. #### D-Bus (libtrpc) Limitations -TIMPANI's legacy C/C++ implementation used **libtrpc** (custom serialization over D-Bus): +timpani's legacy C/C++ implementation used **libtrpc** (custom serialization over D-Bus): - Manual serialization prone to type mismatches - D-Bus broker adds IPC overhead (~500ΞΌs latency) - No compile-time schema validation @@ -64,10 +64,6 @@ TIMPANI's legacy C/C++ implementation used **libtrpc** (custom serialization ove - Equivalent service methods: `AddSchedInfo`, `GetSchedInfo`, `SyncTimer`, `ReportDMiss` - No behavioral changes to scheduling logic or fault reporting -**Future Extensions (Post-Milestone 2):** -- Bidirectional streaming for runtime workload updates (planned) -- Health checks and node status telemetry (under design) -- gPTP time synchronization support (Milestone 3) **Decision:** gRPC chosen for automotive/cloud hybrid deployments, with performance gains and extensibility for future features (OSS roadmap). @@ -84,13 +80,13 @@ graph TB end subgraph GlobalScheduler["Global Scheduler"] - TimpaniO["Timpani-O
(Global Scheduler)"] + TimpaniO["timpani-o
(Global Scheduler)"] end subgraph Nodes["Execution Nodes"] - Node1["Node 1
Timpani-N"] - Node2["Node 2
Timpani-N"] - NodeN["Node N
Timpani-N"] + Node1["Node 1
timpani-n"] + Node2["Node 2
timpani-n"] + NodeN["Node N
timpani-n"] end Pullpiri <-->|"D-Bus
com.lge.timpani"| TimpaniO @@ -122,13 +118,13 @@ graph TB end subgraph GlobalScheduler["Global Scheduler"] - TimpaniO["Timpani-O
(Global Scheduler)
Rust"] + TimpaniO["timpani-o
(Global Scheduler)
Rust"] end subgraph Nodes["Execution Nodes"] - Node1["Node 1
Timpani-N
(gRPC Client)"] - Node2["Node 2
Timpani-N
(gRPC Client)"] - NodeN["Node N
Timpani-N
(gRPC Client)"] + Node1["Node 1
timpani-n
(gRPC Client)"] + Node2["Node 2
timpani-n
(gRPC Client)"] + NodeN["Node N
timpani-n
(gRPC Client)"] end Pullpiri <-->|"gRPC
SchedInfoService
FaultService"| TimpaniO @@ -162,7 +158,7 @@ graph TB FaultServer["Fault Service
(gRPC Server)
:50052"] end - subgraph TimpaniO["Timpani-O (Global Scheduler)"] + subgraph TimpaniO["timpani-o (Global Scheduler)"] SchedInfoSvc["SchedInfo Service
(gRPC Server)
:50051"] GlobalSched["Global Scheduler
β€’ node_priority
β€’ task_priority
β€’ best_fit"] NodeSvc["Node Service
(gRPC Server)
:50051
β€’ GetSchedInfo
β€’ SyncTimer
β€’ ReportDMiss"] @@ -171,7 +167,7 @@ graph TB GlobalSched --> NodeSvc end - subgraph Node1["Timpani-N (Node 1)"] + subgraph Node1["timpani-n (Node 1)"] NodeClient1["Node Client
(gRPC Client)"] SchedLoop1["Scheduler Loop"] BPF1["eBPF Monitor"] @@ -180,7 +176,7 @@ graph TB SchedLoop1 --> BPF1 end - subgraph Node2["Timpani-N (Node 2)"] + subgraph Node2["timpani-n (Node 2)"] NodeClient2["Node Client"] SchedLoop2["Scheduler Loop"] BPF2["eBPF Monitor"] @@ -189,7 +185,7 @@ graph TB SchedLoop2 --> BPF2 end - subgraph NodeN["Timpani-N (Node N)"] + subgraph NodeN["timpani-n (Node N)"] NodeClientN["Node Client"] SchedLoopN["Scheduler Loop"] BPFN["eBPF Monitor"] @@ -218,7 +214,7 @@ graph TB graph TD subgraph AppLayer["Application Layer"] Pullpiri["Pullpiri Orchestrator"] - WorkloadApps["Workload Apps
(scheduled by Timpani-N)"] + WorkloadApps["Workload Apps
(scheduled by timpani-n)"] end subgraph gRPCLayer["gRPC Service Layer"] @@ -230,8 +226,8 @@ graph TD end subgraph BusinessLayer["Business Logic Layer"] - TimpaniO["Timpani-O
β€’ GlobalScheduler
β€’ HyperperiodCalc
β€’ NodeConfigMgr
β€’ FaultClient"] - TimpaniN["Timpani-N
β€’ Task Executor
β€’ Linux Scheduler API
β€’ Signal Handling
β€’ eBPF Integration"] + TimpaniO["timpani-o
β€’ GlobalScheduler
β€’ HyperperiodCalc
β€’ NodeConfigMgr
β€’ FaultClient"] + TimpaniN["timpani-n
β€’ Task Executor
β€’ Linux Scheduler API
β€’ Signal Handling
β€’ eBPF Integration"] end subgraph OSLayer["Operating System Layer"] @@ -257,12 +253,12 @@ graph TD ### 1. Workload Submission & Scheduling -**Scenario:** Pullpiri submits a new workload to Timpani-O +**Scenario:** Pullpiri submits a new workload to timpani-o ```mermaid sequenceDiagram participant Pullpiri - participant TimpaniO as Timpani-O + participant TimpaniO as timpani-o participant WorkloadDB as WorkloadDB
(In-mem) Pullpiri->>TimpaniO: AddSchedInfo(tasks) @@ -283,7 +279,7 @@ sequenceDiagram **Key Steps:** 1. Pullpiri calls `AddSchedInfo` RPC with task list -2. Timpani-O validates Protobuf message +2. timpani-o validates Protobuf message 3. Converts `TaskInfo` β†’ internal `Task` structs 4. Runs global scheduler (selects algorithm) 5. Calculates hyperperiod (LCM of periods) @@ -295,12 +291,12 @@ sequenceDiagram ### 2. Node Startup & Schedule Retrieval -**Scenario:** Timpani-N starts up and fetches its schedule +**Scenario:** timpani-n starts up and fetches its schedule ```mermaid sequenceDiagram - participant TimpaniN as Timpani-N
(node1) - participant TimpaniO as Timpani-O + participant TimpaniN as timpani-n
(node1) + participant TimpaniO as timpani-o participant WorkloadDB TimpaniN->>TimpaniO: GetSchedInfo(node_id="node1") @@ -318,7 +314,7 @@ sequenceDiagram Note over TimpaniN: Store Schedule Locally ``` -**Optimization:** Timpani-O filters tasks by `node_id` before sending (reduces bandwidth). +**Optimization:** timpani-o filters tasks by `node_id` before sending (reduces bandwidth). --- @@ -328,10 +324,10 @@ sequenceDiagram ```mermaid sequenceDiagram - participant Node1 as Timpani-N
(node1) - participant Node2 as Timpani-N
(node2) - participant Node3 as Timpani-N
(node3) - participant TimpaniO as Timpani-O + participant Node1 as timpani-n
(node1) + participant Node2 as timpani-n
(node2) + participant Node3 as timpani-n
(node3) + participant TimpaniO as timpani-o Node1->>TimpaniO: SyncTimer(node1) activate TimpaniO @@ -374,14 +370,14 @@ sequenceDiagram ### 4. Deadline Miss Reporting -**Scenario:** Timpani-N detects deadline miss, reports to Pullpiri via Timpani-O +**Scenario:** timpani-n detects deadline miss, reports to Pullpiri via timpani-o ```mermaid sequenceDiagram participant Task as Task
(RT loop) - participant TimpaniN as Timpani-N
(gRPC Client) + participant TimpaniN as timpani-n
(gRPC Client) participant Worker as Background
Worker Thread - participant TimpaniO as Timpani-O
(gRPC Server) + participant TimpaniO as timpani-o
(gRPC Server) participant Pullpiri Task->>TimpaniN: Deadline Miss Detected! @@ -410,7 +406,7 @@ sequenceDiagram **Non-Blocking Design:** 1. RT loop detects miss β†’ queues task name to MPSC channel (~10 ns) 2. Background worker thread dequeues and calls gRPC -3. Timpani-O forwards to Pullpiri via `FaultService` +3. timpani-o forwards to Pullpiri via `FaultService` 4. RT loop never blocks on network I/O **Queue Backpressure:** @@ -426,8 +422,8 @@ sequenceDiagram ```mermaid sequenceDiagram participant Pullpiri - participant TimpaniO as Timpani-O - participant TimpaniN as Timpani-N
(node1) + participant TimpaniO as timpani-o + participant TimpaniN as timpani-n
(node1) participant Tasks as Workload
Tasks Pullpiri->>TimpaniO: 1. AddSchedInfo(tasks) @@ -463,23 +459,23 @@ sequenceDiagram | Service | Method | Endpoint | Caller | Handler | |---------|--------|----------|--------|---------| -| **SchedInfoService** | AddSchedInfo | `timpani-o:50051` | Pullpiri | Timpani-O | -| **FaultService** | NotifyFault | `pullpiri:50052` | Timpani-O | Pullpiri | -| **NodeService** | GetSchedInfo | `timpani-o:50051` | Timpani-N | Timpani-O | -| **NodeService** | SyncTimer | `timpani-o:50051` | Timpani-N | Timpani-O | -| **NodeService** | ReportDMiss | `timpani-o:50051` | Timpani-N | Timpani-O | +| **SchedInfoService** | AddSchedInfo | `timpani-o:50051` | Pullpiri | timpani-o | +| **FaultService** | NotifyFault | `pullpiri:50052` | timpani-o | Pullpiri | +| **NodeService** | GetSchedInfo | `timpani-o:50051` | timpani-n | timpani-o | +| **NodeService** | SyncTimer | `timpani-o:50051` | timpani-n | timpani-o | +| **NodeService** | ReportDMiss | `timpani-o:50051` | timpani-n | timpani-o | ### Message Flow Summary ``` Pullpiri: - β†’ SchedInfoService.AddSchedInfo β†’ Timpani-O - ← FaultService.NotifyFault ← Timpani-O + β†’ SchedInfoService.AddSchedInfo β†’ timpani-o + ← FaultService.NotifyFault ← timpani-o -Timpani-N: - β†’ NodeService.GetSchedInfo β†’ Timpani-O - β†’ NodeService.SyncTimer β†’ Timpani-O (blocks until barrier) - β†’ NodeService.ReportDMiss β†’ Timpani-O (non-blocking) +timpani-n: + β†’ NodeService.GetSchedInfo β†’ timpani-o + β†’ NodeService.SyncTimer β†’ timpani-o (blocks until barrier) + β†’ NodeService.ReportDMiss β†’ timpani-o (non-blocking) ``` --- @@ -570,7 +566,7 @@ rx.changed().await?; // Block until barrier fires ### Bandwidth Optimization -**D-Bus (libtrpc):** Sends all nodes' tasks to every Timpani-N (broadcast) +**D-Bus (libtrpc):** Sends all nodes' tasks to every timpani-n (broadcast) **Example:** - 3 nodes, 30 tasks total @@ -581,7 +577,7 @@ rx.changed().await?; // Block until barrier fires **Example:** - 3 nodes, 30 tasks total -- Each node receives ~10 tasks (filtered by Timpani-O) +- Each node receives ~10 tasks (filtered by timpani-o) - Bandwidth per node: ~1.7 KB **Savings:** ~66% bandwidth reduction. diff --git a/doc/docs/api.md b/doc/docs/api.md index 5564968..f7fa674 100644 --- a/doc/docs/api.md +++ b/doc/docs/api.md @@ -3,15 +3,15 @@ * SPDX-License-Identifier: MIT --> -# TIMPANI Rust API Documentation +# timpani Rust API Documentation -This document describes the gRPC API and Rust module interfaces for TIMPANI's Rust implementation. +This document describes the gRPC API and Rust module interfaces for timpani's Rust implementation. ## Table of Contents 1. [Overview](#overview) 2. [gRPC Services](#grpc-services) -3. [Timpani-O Public API](#timpani-o-public-api) -4. [Timpani-N Public API](#timpani-n-public-api) +3. [timpani-o Public API](#timpani-o-public-api) +4. [timpani-n Public API](#timpani-n-public-api) 5. [Common Types](#common-types) 6. [Error Handling](#error-handling) @@ -19,12 +19,12 @@ This document describes the gRPC API and Rust module interfaces for TIMPANI's Ru ## Overview -TIMPANI Rust replaces the D-Bus communication layer from the C/C++ implementation with gRPC/Protobuf for inter-component communication. +timpani Rust replaces the D-Bus communication layer from the C/C++ implementation with gRPC/Protobuf for inter-component communication. **Architecture:** ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” -β”‚ Pullpiri │◄──gRPC/SchedInfo─►│ Timpani-O β”‚ +β”‚ Pullpiri │◄──gRPC/SchedInfo─►│ timpani-o β”‚ β”‚ Orchestratorβ”‚ β”‚ (Global) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ gRPC/NodeService @@ -40,12 +40,12 @@ TIMPANI Rust replaces the D-Bus communication layer from the C/C++ implementatio ## gRPC Services -### 1. SchedInfoService (Pullpiri ↔ Timpani-O) +### 1. SchedInfoService (Pullpiri ↔ timpani-o) Defined in: `timpani_rust/timpani-o/proto/schedinfo.proto` #### SchedInfoService -Allows orchestrators to submit workloads to Timpani-O. +Allows orchestrators to submit workloads to timpani-o. **Methods:** ```protobuf @@ -84,7 +84,7 @@ message Response { ``` #### FaultService -Allows Timpani-O to report faults back to the orchestrator. +Allows timpani-o to report faults back to the orchestrator. **Methods:** ```protobuf @@ -111,7 +111,7 @@ enum FaultType { --- -### 2. NodeService (Timpani-O ↔ Timpani-N) +### 2. NodeService (timpani-o ↔ timpani-n) Defined in: `timpani_rust/timpani-n/proto/node_service.proto` @@ -130,7 +130,7 @@ service NodeService { ``` #### GetSchedInfo -Timpani-N calls this at startup to retrieve its task schedule. +timpani-n calls this at startup to retrieve its task schedule. **Request: NodeSchedRequest** ```protobuf @@ -186,7 +186,7 @@ message SyncResponse { - **Workload change:** Returns `ABORTED` if workload replaced while waiting #### ReportDMiss -Timpani-N reports deadline misses via this non-blocking call. +timpani-n reports deadline misses via this non-blocking call. **Request: DeadlineMissInfo** ```protobuf @@ -205,7 +205,7 @@ message NodeResponse { --- -## Timpani-O Public API +## timpani-o Public API ### GlobalScheduler @@ -292,19 +292,19 @@ println!("Node has {} CPUs", node_info.cpus); --- -## Timpani-N Public API +## timpani-n Public API ### NodeClient (gRPC Client) **Module:** `timpani_rust/timpani-n/src/grpc/` -**Purpose:** gRPC client for communicating with Timpani-O. +**Purpose:** gRPC client for communicating with timpani-o. #### Methods ```rust impl NodeClient { - // Connect to Timpani-O (with retry) + // Connect to timpani-o (with retry) pub async fn connect(uri: &str, node_id: &str) -> TimpaniResult; // Fetch schedule at startup @@ -351,7 +351,7 @@ impl NodeClient { - Still type-safe via internal `SchedPolicy` enum and priority validation (0-99) - **D-N-007:** Single client instance for process lifetime - - Timpani-N is pure client (never hosts gRPC server) + - timpani-n is pure client (never hosts gRPC server) - Avoids connection overhead and resource leaks - **D-N-008:** Auto-retry with 1s interval on connection failure @@ -422,7 +422,7 @@ cargo build --features plot ### Task Representation -**Timpani-O:** +**timpani-o:** ```rust pub struct Task { pub name: String, @@ -438,7 +438,7 @@ pub struct Task { } ``` -**Timpani-N:** +**timpani-n:** ```rust pub struct TaskConfig { pub name: String, @@ -476,7 +476,7 @@ pub enum CpuAffinity { ## Error Handling -### Timpani-O Error Types +### timpani-o Error Types ```rust // Scheduler errors @@ -495,7 +495,7 @@ pub enum ConfigError { } ``` -### Timpani-N Error Types +### timpani-n Error Types ```rust pub enum TimpaniError { @@ -511,7 +511,7 @@ pub type TimpaniResult = Result; ### Error Propagation -Both Timpani-O and Timpani-N use `anyhow::Result` for application-level errors and `thiserror` for library error types: +Both timpani-o and timpani-n use `anyhow::Result` for application-level errors and `thiserror` for library error types: ```rust use anyhow::{Context, Result}; @@ -562,12 +562,12 @@ cargo test -p timpani-o scheduler::tests::test_node_priority ### Running ```bash -# Timpani-O +# timpani-o ./target/release/timpani-o \ --config examples/node_configurations.yaml \ --listen 0.0.0.0:50051 -# Timpani-N +# timpani-n ./target/release/timpani-n \ --node-id node1 \ --timpani-o-uri http://192.168.1.100:50051 diff --git a/doc/docs/developments.md b/doc/docs/developments.md index a2311e8..0874752 100644 --- a/doc/docs/developments.md +++ b/doc/docs/developments.md @@ -4,9 +4,9 @@ * SPDX-License-Identifier: MIT --> -# TIMPANI Development Guide +# timpani Development Guide -This document describes the development workflow, testing, static analysis, and best practices for contributing to the TIMPANI project. +This document describes the development workflow, testing, static analysis, and best practices for contributing to the timpani project. --- diff --git a/doc/docs/getting-started.md b/doc/docs/getting-started.md index 5996523..f1228a9 100644 --- a/doc/docs/getting-started.md +++ b/doc/docs/getting-started.md @@ -4,9 +4,9 @@ * SPDX-License-Identifier: MIT --> -# Getting Started with TIMPANI +# Getting Started with timpani -Welcome to the TIMPANI project! This guide will help you get up and running with the main components, sample applications, and documentation structure. +Welcome to the timpani project! This guide will help you get up and running with the main components, sample applications, and documentation structure. --- @@ -21,7 +21,7 @@ sudo apt install -y libelf-dev zlib1g-dev clang linux-tools-$(uname -r) sudo apt install -y pkg-config libsystemd-dev libyaml-dev ``` -### For gRPC & Protobuf (TIMPANI-O) +### For gRPC & Protobuf (timpani-o) ```bash sudo apt install -y libgrpc++-dev libprotobuf-dev protobuf-compiler-grpc @@ -38,8 +38,8 @@ See the detailed instructions in: ## 2. Cloning the Repository ```bash -git clone --recurse-submodules https://github.com/MCO-PICCOLO/TIMPANI.git -cd TIMPANI +git clone --recurse-submodules https://github.com/eclipse-timpani/timpani.git +cd timpani ``` --- @@ -47,7 +47,7 @@ cd TIMPANI ## 3. Building the Components -### Timpani-N +### timpani-n ```bash cd timpani-n @@ -56,7 +56,7 @@ cmake .. make ``` -### Timpani-O +### timpani-o ```bash cd timpani-o @@ -65,7 +65,7 @@ cmake .. make ``` -#### Cross-compilation for ARM64 (Timpani-O) +#### Cross-compilation for ARM64 (timpani-o) ```bash cd build cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchain-aarch64-gcc.cmake .. @@ -85,7 +85,7 @@ cmake --build . ## 4. Running the System -### Example: Running Timpani-N +### Example: Running timpani-n 1. Start the main system: ```bash diff --git a/doc/docs/release.md b/doc/docs/release.md index 5590a06..a306180 100644 --- a/doc/docs/release.md +++ b/doc/docs/release.md @@ -3,7 +3,7 @@ #* SPDX-License-Identifier: MIT #--> -# TIMPANI +# timpani ## Release Management @@ -36,8 +36,8 @@ Milestone 1: Milestone 2: Milestone 3: ─────────────────────────────────────────────────────────────────────────────── Key Features to Port (across milestones): -- Timpani-O: Global scheduling (Rust, gRPC) -- Timpani-N: Local execution, microsecond precision (POSIX timers) +- timpani-o: Global scheduling (Rust, gRPC) +- timpani-n: Local execution, microsecond precision (POSIX timers) - Linux RT policies: SCHED_DEADLINE, SCHED_FIFO, SCHED_RR - Hyperperiod synchronization - Deadline miss detection @@ -50,9 +50,9 @@ Key Features to Port (across milestones): ## Overview -This release plan covers the migration and feature development for all major TIMPANI components: -- **Timpani-O** (Orchestrator) -- **Timpani-N** (Time Trigger Node) +This release plan covers the migration and feature development for all major timpani components: +- **timpani-o** (Orchestrator) +- **timpani-n** (Time Trigger Node) - **Sample Apps** (Real-time Workload Demos) - **libbpf** (eBPF Integration) diff --git a/doc/docs/structure.md b/doc/docs/structure.md index afb5f4c..cec564d 100644 --- a/doc/docs/structure.md +++ b/doc/docs/structure.md @@ -6,7 +6,7 @@ # Project Structure -This document describes the current structure of the TIMPANI repository. All files and folders listed here are considered stable and will remain untouched in the future, except for the `timpani_rust` folder, which will be the sole focus of ongoing development. +This document describes the current structure of the timpani repository. All files and folders listed here are considered stable and will remain untouched in the future, except for the `timpani_rust` folder, which will be the sole focus of ongoing development. --- @@ -17,7 +17,7 @@ This document describes the current structure of the TIMPANI repository. All fil ## Current Repository Layout ```bash -TIMPANI/ +timpani/ β”œβ”€β”€ LICENSE β”œβ”€β”€ README.md β”œβ”€β”€ doc/ @@ -25,9 +25,9 @@ TIMPANI/ β”‚ β”œβ”€β”€ architecture/ β”‚ β”‚ β”œβ”€β”€ timpani_architecture.md # System architecture β”‚ β”‚ β”œβ”€β”€ grpc_architecture.md # gRPC design -β”‚ β”‚ └── HLD/ # High-Level Design documents -β”‚ β”‚ β”œβ”€β”€ timpani-o/ # Timpani-O component HLDs (10 docs) -β”‚ β”‚ └── timpani-n/ # Timpani-N component HLDs (10 docs) +β”‚ β”‚ └── LLD/ # Low-Level Design documents +β”‚ β”‚ β”œβ”€β”€ timpani-o/ # timpani-o component LLDs (10 docs) +β”‚ β”‚ └── timpani-n/ # timpani-n component LLDs (10 docs) β”‚ β”œβ”€β”€ contribution/ β”‚ β”‚ β”œβ”€β”€ coding-rule.md β”‚ β”‚ └── guidelines-en.md @@ -155,11 +155,11 @@ timpani_rust/ The `doc/` directory contains all project documentation: -- **architecture/**: System architecture and HLD component documents +- **architecture/**: System architecture and LLD component documents - `timpani_architecture.md`: Overall system design - `grpc_architecture.md`: Communication layer design - - `HLD/timpani-o/`: 10 component HLD documents (AS-IS vs WILL-BE) - - `HLD/timpani-n/`: 10 component HLD documents (AS-IS vs WILL-BE) + - `LLD/timpani-o/`: 10 component LLD documents (AS-IS vs WILL-BE) + - `LLD/timpani-n/`: 10 component LLD documents (AS-IS vs WILL-BE) - **docs/**: Implementation and developer guides - `api.md`: gRPC services and Rust APIs @@ -178,9 +178,9 @@ The `doc/` directory contains all project documentation: | Component | Legacy | Rust | Status | Documentation | |-----------|--------|------|--------|---------------| -| **Timpani-O** | C++ | Rust | βœ… Complete | [HLD/timpani-o/](../architecture/HLD/timpani-o/) | -| **Timpani-N** | C | Rust | πŸ”„ Partial | [HLD/timpani-n/](../architecture/HLD/timpani-n/) | -| **Communication** | D-Bus | gRPC | βœ… Timpani-O, ⏸️ Timpani-N | [grpc_architecture.md](../architecture/grpc_architecture.md) | +| **timpani-o** | C++ | Rust | βœ… Complete | [LLD/timpani-o/](../architecture/LLD/timpani-o/) | +| **timpani-n** | C | Rust | πŸ”„ Partial | [LLD/timpani-n/](../architecture/LLD/timpani-n/) | +| **Communication** | D-Bus | gRPC | βœ… timpani-o, ⏸️ timpani-n | [grpc_architecture.md](../architecture/grpc_architecture.md) | --- @@ -188,6 +188,6 @@ The `doc/` directory contains all project documentation: - **Legacy code** (timpani-n/, timpani-o/, libtrpc/) remains for reference and backward compatibility - **Active development** occurs exclusively in `timpani_rust/` -- **Documentation** follows architecture β†’ HLD β†’ implementation flow +- **Documentation** follows architecture β†’ LLD β†’ implementation flow - **Build system** uses Cargo workspace for Rust components, CMake for legacy C/C++ - **Testing** includes both unit tests (Rust) and integration tests (test-tools/) diff --git a/sample-apps/README.md b/sample-apps/README.md index da572f2..9d23243 100644 --- a/sample-apps/README.md +++ b/sample-apps/README.md @@ -27,7 +27,7 @@ This project provides sample applications for real-time system analysis. It offe ## Build Instructions ```bash -git clone https://github.com/MCO-PICCOLO/TIMPANI.git +git clone https://github.com/eclipse-timpani/timpani.git cd sample-apps mkdir build cd build diff --git a/timpani-n/README.md b/timpani-n/README.md index 4d9b526..2055994 100644 --- a/timpani-n/README.md +++ b/timpani-n/README.md @@ -3,7 +3,7 @@ * SPDX-License-Identifier: MIT --> -# Timpani-N +# timpani-n ## Getting started @@ -42,7 +42,7 @@ sudo apt install -y libyaml-dev ## Build ``` -git clone https://github.com/MCO-PICCOLO/TIMPANI.git +git clone https://github.com/eclipse-timpani/timpani.git cd TIMPANI git submodule add https://github.com/libbpf/libbpf.git libbpf git submodule update --init --recursive diff --git a/timpani-o/.github/copilot-instructions.md b/timpani-o/.github/copilot-instructions.md index f5ad6de..b8f546f 100644 --- a/timpani-o/.github/copilot-instructions.md +++ b/timpani-o/.github/copilot-instructions.md @@ -5,17 +5,17 @@ # Project Overview -This `Timpani-O` project is a C++ application that interacts with a time-triggered scheduling system for real-time tasks. +This `timpani-o` project is a C++ application that interacts with a time-triggered scheduling system for real-time tasks. It includes a gRPC server that allows `Pullpiri`, a workload orchestrator, to add new scheduling tables, and a gRPC client to notify `Pullpiri` of deadline miss faults. -Additionally, it provides a D-Bus peer-to-peer server that offers the following time-triggered scheduling features for `Timpani-N` (also known as the Timpani node manager): +Additionally, it provides a D-Bus peer-to-peer server that offers the following time-triggered scheduling features for `timpani-n` (also known as the Timpani node manager): - - Send scheduling tables to `Timpani-N` - - Receive deadline miss faults from `Timpani-N` + - Send scheduling tables to `timpani-n` + - Receive deadline miss faults from `timpani-n` - Multi-node synchronization for starting time-triggered tasks ## Folder Structure -- `src/`: Contains the main source code files for the `Timpani-O` program. +- `src/`: Contains the main source code files for the `timpani-o` program. - `proto/`: Contains Protocol Buffers definitions for gRPC communication with the workload orchestrator. - `cmake/`: Contains CMake modules for building the project. - `tests/`: Contains unit tests for testing the project. @@ -23,7 +23,7 @@ Additionally, it provides a D-Bus peer-to-peer server that offers the following ## Libraries and Dependencies - CMake: For building the project. -- gRPC: For communication between `Timpani-O` and `Pullpiri`. +- gRPC: For communication between `timpani-o` and `Pullpiri`. - Protocol Buffers: For serializing structured data. ## Coding Style diff --git a/timpani-o/README.md b/timpani-o/README.md index 8444ab0..9e40b33 100644 --- a/timpani-o/README.md +++ b/timpani-o/README.md @@ -37,7 +37,7 @@ Refer to [TIMPANI-N's README.md](https://github.com/MCO-PICCOLO/TIMPANI/blob/mai ## How to build ``` -git clone --recurse-submodules https://github.com/MCO-PICCOLO/TIMPANI.git +git clone --recurse-submodules https://github.com/eclipse-timpani/timpani.git cd timpani-o mkdir build cd build @@ -77,11 +77,11 @@ cpack -G TGZ ## How to run -- To run Timpani-O with default options: +- To run timpani-o with default options: ``` timpani-o ``` -- To run Timpani-O with specific options, refer to the help message: +- To run timpani-o with specific options, refer to the help message: ``` timpani-o -h ``` diff --git a/timpani_rust/timpani-n/README.md b/timpani_rust/timpani-n/README.md index 20911a1..3767e6e 100644 --- a/timpani_rust/timpani-n/README.md +++ b/timpani_rust/timpani-n/README.md @@ -1,14 +1,14 @@ -# Timpani-N Node Executor +# timpani-n Node Executor > **⚠️ Development Status**: This is a **work-in-progress** Rust port of the C implementation. Core configuration and CLI are complete, but runtime features are still being developed. See [Current Implementation Status](#current-implementation-status) for details. -Timpani-N is a Rust implementation of the Timpani node executor, providing time-triggered scheduling capabilities for distributed real-time systems. This is a complete port from the original C implementation with enhanced type safety, memory safety, and modern Rust features. +timpani-n is a Rust implementation of the Timpani node executor, providing time-triggered scheduling capabilities for distributed real-time systems. This is a complete port from the original C implementation with enhanced type safety, memory safety, and modern Rust features. ## Overview -Timpani-N acts as a **node executor** in the Timpani distributed real-time system architecture: -- **Timpani-N (Node Executor)**: Executes scheduled tasks on individual nodes -- **Timpani-O (Node Scheduler)**: Orchestrates and schedules tasks across the distributed system +timpani-n acts as a **node executor** in the Timpani distributed real-time system architecture: +- **timpani-n (Node Executor)**: Executes scheduled tasks on individual nodes +- **timpani-o (Node Scheduler)**: Orchestrates and schedules tasks across the distributed system ## Features @@ -340,7 +340,7 @@ docker run --rm timpani-n --node-id docker-node --log-level 3 scheduler.local ```ini # /etc/systemd/system/timpani-n.service [Unit] -Description=Timpani-N Node Executor +Description=timpani-n Node Executor After=network.target [Service]