zerodds-corba-rt

CORBA stack. OMG Real-Time CORBA 1.0 (formal/2005-01-04), plus the CORBA types TypeCode, any, object reference and ValueBase that the CORBA crates share.

zerodds-corba-rt provides priority handling for CORBA code: the CORBA Priority (0..=32767) and its mapping to native OS priorities (PriorityMapping, LinearPriorityMapping), the priority models SERVER_DECLARED and CLIENT_PROPAGATED (PriorityModelPolicy), threadpools with lanes, priority bands for connections, and the RTCorbaPriority service context (id 10) that carries the client priority over GIOP. RtCurrent reads and writes the priority of the current context. PriorityInheritance computes the inherited priority of a lock owner; RtMutex (feature std) is a blocking mutex on std::sync::Mutex and Condvar that grants the lock in priority order. ThreadpoolRuntime (feature std) runs the lanes on OS threads: static threads at start-up, additional dynamic threads under load, removed again after an idle timeout. The OS scheduler priority is set through an injected NativePrioritySetter, so platform-specific unsafe code stays with the caller. TaskSet performs static schedulability analysis for fixed-priority preemptive scheduling (Liu & Layland bound, exact response-time analysis).

The crate also carries the CORBA types used across the CORBA crates: TypeCode with its CDR form (indirections are resolved on decode, a recursive type becomes TypeCode::Recursive, decode nesting is limited by MAX_TYPECODE_DEPTH = 64), CorbaAny/AnyValue, WString (the order of its code units comes from the zerodds-wire Writer/Reader, not from a process-wide setting), ObjectReference (IOR) and ValueBase.

Spec anchors

  • OMG Real-Time CORBA 1.0 §5.3 (Priority), §5.4 (PriorityMapping), §5.4.1 (PriorityModel), §5.4.2 (RTCorbaPriority service context), §5.5 (RTCORBA::Current), §5.6 (RTCORBA::Mutex, priority inheritance), §5.7 (threadpools, lanes), §5.8 (priority-banded connections); scheduling profile (TaskSet, no section number in the source).
  • OMG CORBA 3.3 Part 2 §15.3.5 (TypeCode; §15.3.5.1 indirection), §15.3.7 (any), §15.3.2.7 (wstring), §13.6.2 (IOR), §13.6.3 (TAG_INTERNET_IOP), §15.3.3 (IOR in CDR).
  • OMG IDL 4.2 §7.4.7, rule (131) (ValueBase).
  • Coverage: zerodds-corba-rt-1.0.

Consumers

  • zerodds-corba-cos-notify (any values of structured events).
  • zerodds-corba-cos-transactions (TCKind).
  • zerodds-corba-rust (the generated code names CorbaAny, WString, TypeCode, ObjectReference, ValueBase).
  • zerodds-corba-interop (not published; cross-ORB test harness).
  • Dev-dependency of zerodds-corba-giop (RTCorbaPriority service context in its end-to-end test).

Features

  • std (default) — enables alloc; compiles RtMutex/RtMutexGuard and ThreadpoolRuntime/DispatchError/NativePrioritySetter.
  • alloc — no further effect; the crate uses alloc in every configuration.

Status

  • #![no_std] with alloc; RtMutex and ThreadpoolRuntime require std.
  • forbid(unsafe_code).
  • Library only, no binaries. One dependency: zerodds-wire.
  • 59 test functions in the source (src/).

zerodds-corba-rt

CORBA-Stack. OMG Real-Time CORBA 1.0 (formal/2005-01-04) sowie die CORBA-Typen TypeCode, any, Objektreferenz und ValueBase, die sich die CORBA-Crates teilen.

zerodds-corba-rt liefert die Prioritätsbehandlung für CORBA-Code: die CORBA-Priority (0..=32767) und ihre Abbildung auf native Betriebssystem-Prioritäten (PriorityMapping, LinearPriorityMapping), die Prioritätsmodelle SERVER_DECLARED und CLIENT_PROPAGATED (PriorityModelPolicy), Threadpools mit Lanes, Prioritätsbänder für Verbindungen und den Service-Context RTCorbaPriority (id 10), der die Priorität des Clients über GIOP überträgt. RtCurrent liest und schreibt die Priorität des aktuellen Kontexts. PriorityInheritance berechnet die geerbte Priorität eines Sperrinhabers; RtMutex (Feature std) ist ein blockierender Mutex auf std::sync::Mutex und Condvar, der die Sperre in Prioritätsreihenfolge vergibt. ThreadpoolRuntime (Feature std) betreibt die Lanes auf Betriebssystem-Threads: statische Threads beim Start, zusätzliche dynamische Threads unter Last, die nach einer Leerlaufzeit wieder enden. Die Priorität im Scheduler des Betriebssystems wird über einen injizierten NativePrioritySetter gesetzt, sodass plattformspezifischer unsafe-Code beim Aufrufer bleibt. TaskSet führt eine statische Einplanbarkeitsanalyse für präemptives Scheduling mit festen Prioritäten durch (Schranke nach Liu & Layland, exakte Antwortzeitanalyse).

Das Crate trägt außerdem die CORBA-Typen, die die CORBA-Crates gemeinsam nutzen: TypeCode mit seiner CDR-Form (Indirektionen werden beim Dekodieren aufgelöst, ein rekursiver Typ wird zu TypeCode::Recursive, die Schachtelungstiefe beim Dekodieren ist durch MAX_TYPECODE_DEPTH = 64 begrenzt), CorbaAny/AnyValue, WString (die Reihenfolge der Code-Units kommt aus Writer/Reader von zerodds-wire, nicht aus einer prozessweiten Einstellung), ObjectReference (IOR) und ValueBase.

Spec-Anker

  • OMG Real-Time CORBA 1.0 §5.3 (Priority), §5.4 (PriorityMapping), §5.4.1 (PriorityModel), §5.4.2 (Service-Context RTCorbaPriority), §5.5 (RTCORBA::Current), §5.6 (RTCORBA::Mutex, Prioritätsvererbung), §5.7 (Threadpools, Lanes), §5.8 (Verbindungen mit Prioritätsbändern); Profil für statische Einplanung (TaskSet, im Quelltext ohne Abschnittsnummer).
  • OMG CORBA 3.3 Part 2 §15.3.5 (TypeCode; §15.3.5.1 Indirektion), §15.3.7 (any), §15.3.2.7 (wstring), §13.6.2 (IOR), §13.6.3 (TAG_INTERNET_IOP), §15.3.3 (IOR in CDR).
  • OMG IDL 4.2 §7.4.7, Regel (131) (ValueBase).
  • Abdeckung: zerodds-corba-rt-1.0.

Konsumenten

  • zerodds-corba-cos-notify (any-Werte strukturierter Ereignisse).
  • zerodds-corba-cos-transactions (TCKind).
  • zerodds-corba-rust (der erzeugte Code nennt CorbaAny, WString, TypeCode, ObjectReference, ValueBase).
  • zerodds-corba-interop (nicht veröffentlicht; Testumgebung für ORB-übergreifende Interoperabilität).
  • Entwicklungsabhängigkeit von zerodds-corba-giop (Service-Context RTCorbaPriority im Ende-zu-Ende-Test).

Features

  • std (Standard) — aktiviert alloc; kompiliert RtMutex/RtMutexGuard und ThreadpoolRuntime/DispatchError/NativePrioritySetter.
  • alloc — keine weitere Wirkung; das Crate nutzt alloc in jeder Konfiguration.

Status

  • #![no_std] mit alloc; RtMutex und ThreadpoolRuntime setzen std voraus.
  • forbid(unsafe_code).
  • Nur Bibliothek, keine Binaries. Eine Abhängigkeit: zerodds-wire.
  • 59 Testfunktionen im Quelltext (src/).