zerodds-corba-rt 1.0 — Spec Coverage

Source: docs/specs/zerodds-corba-rt-1.0.md (ZeroDDS vendor spec)

Implementation:

§1 Priority + mapping

§1.1 Priority

Spec: §1.1 — CORBA priority 0..=32767; new rejects out-of-range, clamped clamps.

Repo: crates/corba-rt/src/priority.rs::Priority (new, clamped, value).

Tests: crates/corba-rt/src/priority.rs::tests::priority_range.

Status: done

§1.2 PriorityMapping

Spec: §1.2 — trait to_native/to_corba; LinearPriorityMapping linear onto the native window; native out-of-window → None.

Repo: crates/corba-rt/src/priority.rs::PriorityMapping, LinearPriorityMapping.

Tests: priority.rs::tests::linear_mapping_endpoints, native_out_of_window_unmapped.

Status: done

§2 Priority model

§2.1 PriorityModelPolicy

Spec: §2.1 — PriorityModel ServerDeclared/ClientPropagated; effective_priority (propagated vs server-declared).

Repo: crates/corba-rt/src/policy.rs::PriorityModel, PriorityModelPolicy::effective_priority.

Tests: policy.rs::tests::client_propagated_uses_propagated_priority, server_declared_ignores_propagated.

Status: done

§2.2 RTCorbaPriority ServiceContext + byte conformance

Spec: §2.2 — client priority as ServiceContext id = 10, CDR encapsulation; BE golden 00 000539 (priority 1337).

Repo: crates/corba-rt/src/propagation.rs::RT_CORBA_PRIORITY_SC_ID, encode_priority_context / decode_priority_context.

Tests: propagation.rs::tests::sc_id_is_ten, priority_context_roundtrip, byte_exact_big_endian.

Status: done

§3 Threadpools + bands

§3.1 Threadpool/lane

Spec: §3.1 — Lane/Threadpool; lane_for(priority) = highest priority ≤ priority (otherwise lowest).

Repo: crates/corba-rt/src/policy.rs::Lane, Threadpool::lane_for + static_capacity.

Tests: policy.rs::tests::lane_selection_picks_highest_covering.

Status: done

§3.2 PriorityBand

Spec: §3.2 — PriorityBand/PriorityBandedConnectionPolicy; band_for(priority) = index of the covering band.

Repo: crates/corba-rt/src/policy.rs::PriorityBand, PriorityBandedConnectionPolicy::band_for.

Tests: policy.rs::tests::priority_band_selection.

Status: done

§4 RTCORBA::Current

§4.1 RtCurrent

Spec: §4 — RtCurrent::get_priority/set_priority for the current context.

Repo: crates/corba-rt/src/current.rs::RtCurrent.

Tests: current.rs::tests::get_set_priority, default_is_zero.

Status: done

§5 Threadpool runtime + mutex + scheduling

§5.7 Threadpool runtime (lanes on OS threads)

Spec: §5.7 — the threadpool-with-lanes as a runnable runtime: OS threads per lane (static + dynamic), job routing by priority, native scheduler priority per lane.

Repo: crates/corba-rt/src/threadpool.rs::ThreadpoolRuntime (start/dispatch/select_lane), NativePrioritySetter hook (platform unsafe at the caller; the crate stays forbid(unsafe_code)).

Tests: threadpool.rs::tests: dispatches_and_runs_all_jobs, routes_to_lane_by_priority, native_priority_hook_invoked_per_worker, rejects_when_buffering_off_and_no_worker, dynamic_worker_spawns_under_saturation.

Status: done

§5.6 RTCORBA::Mutex with priority inheritance

Spec: §5.6 — mutex with priority inheritance against priority inversion; the owner inherits the priority of the highest waiter.

Repo: crates/corba-rt/src/mutex.rs::PriorityInheritance (protocol core, no_std) + RtMutex (std, priority-ordered granting, event-driven via Condvar).

Tests: mutex.rs::tests: owner_inherits_highest_waiter, priority_reverts_on_unblock, rt_mutex_basic_lock_unlock, rt_mutex_try_lock_contended, rt_mutex_grants_highest_priority_waiter_first.

Status: done

§Scheduling profile — static schedulability analysis

Spec: RT-CORBA scheduling profile — a-priori schedulability for fixed-priority preemptive scheduling (Rate-Monotonic + Response-Time Analysis).

Repo: crates/corba-rt/src/scheduling.rs::TaskSet (assign_rate_monotonic, liu_layland_bound, response_time/is_schedulable_rta).

Tests: scheduling.rs::tests: response_time_analysis_exact_values, rta_stronger_than_liu_layland, overloaded_set_is_unschedulable, liu_layland_bound_known_points, constrained_deadline_tightens_test, rate_monotonic_assigns_shortest_period_highest.

Status: done


Audit status

10 done / 0 partial / 0 open / 0 n/a (informative) / 0 n/a (rejected).

Test run: cargo test -p zerodds-corba-rt — 30 tests green, 0 failed.

zerodds-corba-rt 1.0 — Spec-Coverage

Quelle: docs/specs/zerodds-corba-rt-1.0.md (ZeroDDS Vendor-Spec)

Implementation:

§1 Priorität + Mapping

§1.1 Priority

Spec: §1.1 — CORBA-Priorität 0..=32767; new lehnt außerhalb ab, clamped klemmt.

Repo: crates/corba-rt/src/priority.rs::Priority (new, clamped, value).

Tests: crates/corba-rt/src/priority.rs::tests::priority_range.

Status: done

§1.2 PriorityMapping

Spec: §1.2 — Trait to_native/to_corba; LinearPriorityMapping linear auf natives Fenster; native außerhalb → None.

Repo: crates/corba-rt/src/priority.rs::PriorityMapping, LinearPriorityMapping.

Tests: priority.rs::tests::linear_mapping_endpoints, native_out_of_window_unmapped.

Status: done

§2 Priority-Model

§2.1 PriorityModelPolicy

Spec: §2.1 — PriorityModel ServerDeclared/ClientPropagated; effective_priority (propagiert vs server-deklariert).

Repo: crates/corba-rt/src/policy.rs::PriorityModel, PriorityModelPolicy::effective_priority.

Tests: policy.rs::tests::client_propagated_uses_propagated_priority, server_declared_ignores_propagated.

Status: done

§2.2 RTCorbaPriority-ServiceContext + Byte-Konformität

Spec: §2.2 — Client-Priorität als ServiceContext id = 10, CDR-Encapsulation; BE-Golden 00 000539 (Priorität 1337).

Repo: crates/corba-rt/src/propagation.rs::RT_CORBA_PRIORITY_SC_ID, encode_priority_context / decode_priority_context.

Tests: propagation.rs::tests::sc_id_is_ten, priority_context_roundtrip, byte_exact_big_endian.

Status: done

§3 Threadpools + Bänder

§3.1 Threadpool/Lane

Spec: §3.1 — Lane/Threadpool; lane_for(priority) = höchste Priorität ≤ priority (sonst niedrigste).

Repo: crates/corba-rt/src/policy.rs::Lane, Threadpool::lane_for + static_capacity.

Tests: policy.rs::tests::lane_selection_picks_highest_covering.

Status: done

§3.2 PriorityBand

Spec: §3.2 — PriorityBand/PriorityBandedConnectionPolicy; band_for(priority) = Index des abdeckenden Bandes.

Repo: crates/corba-rt/src/policy.rs::PriorityBand, PriorityBandedConnectionPolicy::band_for.

Tests: policy.rs::tests::priority_band_selection.

Status: done

§4 RTCORBA::Current

§4.1 RtCurrent

Spec: §4 — RtCurrent::get_priority/set_priority für den aktuellen Kontext.

Repo: crates/corba-rt/src/current.rs::RtCurrent.

Tests: current.rs::tests::get_set_priority, default_is_zero.

Status: done

§5 Threadpool-Runtime + Mutex + Scheduling

§5.7 Threadpool-Runtime (Lanes auf OS-Threads)

Spec: §5.7 — der Threadpool-mit-Lanes als lauffähige Laufzeit: pro Lane OS-Threads (statisch + dynamisch), Job-Routing nach Priorität, native Scheduler-Priorität pro Lane.

Repo: crates/corba-rt/src/threadpool.rs::ThreadpoolRuntime (start/dispatch/select_lane), NativePrioritySetter-Hook (plattform-unsafe beim Aufrufer, Crate bleibt forbid(unsafe_code)).

Tests: threadpool.rs::tests: dispatches_and_runs_all_jobs, routes_to_lane_by_priority, native_priority_hook_invoked_per_worker, rejects_when_buffering_off_and_no_worker, dynamic_worker_spawns_under_saturation.

Status: done

§5.6 RTCORBA::Mutex mit Priority-Inheritance

Spec: §5.6 — Mutex mit Priority-Inheritance gegen Priority-Inversion; Owner erbt die Priorität des höchsten Waiters.

Repo: crates/corba-rt/src/mutex.rs::PriorityInheritance (Protokollkern, no_std) + RtMutex (std, prioritäts-geordnete Vergabe, event-driven via Condvar).

Tests: mutex.rs::tests: owner_inherits_highest_waiter, priority_reverts_on_unblock, rt_mutex_basic_lock_unlock, rt_mutex_try_lock_contended, rt_mutex_grants_highest_priority_waiter_first.

Status: done

§Scheduling-Profil — Statische Schedulability-Analyse

Spec: RT-CORBA-Scheduling-Profil — a-priori-Schedulability für fixed-priority preemptives Scheduling (Rate-Monotonic + Response-Time-Analyse).

Repo: crates/corba-rt/src/scheduling.rs::TaskSet (assign_rate_monotonic, liu_layland_bound, response_time/is_schedulable_rta).

Tests: scheduling.rs::tests: response_time_analysis_exact_values, rta_stronger_than_liu_layland, overloaded_set_is_unschedulable, liu_layland_bound_known_points, constrained_deadline_tightens_test, rate_monotonic_assigns_shortest_period_highest.

Status: done


Audit-Status

10 done / 0 partial / 0 open / 0 n/a (informative) / 0 n/a (rejected).

Test-Lauf: cargo test -p zerodds-corba-rt — 30 Tests grün, 0 failed.