zerodds-corba-rt
CORBA stack. OMG Real-Time CORBA 1.0 (
formal/2005-01-04), plus the CORBA typesTypeCode,any, object reference andValueBasethat the CORBA crates share.
- Source: crates/corba-rt
- API docs: docs.rs/zerodds-corba-rt
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 (RTCorbaPriorityservice 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(anyvalues of structured events).zerodds-corba-cos-transactions(TCKind).zerodds-corba-rust(the generated code namesCorbaAny,WString,TypeCode,ObjectReference,ValueBase).zerodds-corba-interop(not published; cross-ORB test harness).- Dev-dependency of
zerodds-corba-giop(RTCorbaPriorityservice context in its end-to-end test).
Features
std(default) — enablesalloc; compilesRtMutex/RtMutexGuardandThreadpoolRuntime/DispatchError/NativePrioritySetter.alloc— no further effect; the crate usesallocin every configuration.
Status
#![no_std]withalloc;RtMutexandThreadpoolRuntimerequirestd.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-TypenTypeCode,any, Objektreferenz undValueBase, die sich die CORBA-Crates teilen.
- Quelle: crates/corba-rt
- API-Docs: docs.rs/zerodds-corba-rt
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-ContextRTCorbaPriority), §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 nenntCorbaAny,WString,TypeCode,ObjectReference,ValueBase).zerodds-corba-interop(nicht veröffentlicht; Testumgebung für ORB-übergreifende Interoperabilität).- Entwicklungsabhängigkeit von
zerodds-corba-giop(Service-ContextRTCorbaPriorityim Ende-zu-Ende-Test).
Features
std(Standard) — aktiviertalloc; kompiliertRtMutex/RtMutexGuardundThreadpoolRuntime/DispatchError/NativePrioritySetter.alloc— keine weitere Wirkung; das Crate nutztallocin jeder Konfiguration.
Status
#![no_std]mitalloc;RtMutexundThreadpoolRuntimesetzenstdvoraus.forbid(unsafe_code).- Nur Bibliothek, keine Binaries. Eine Abhängigkeit:
zerodds-wire. - 59 Testfunktionen im Quelltext (
src/).