|
Hauptseite - Welches System? - Hardware - Software - Emulatoren - |
Internet MausNet Programmieren Verweise Über |
High-Level-Protokolle benötigen oft Funktionen, die regelmäßig
aufgerufen werden. Da dies auch beim STinG-Kern der Fall ist, kann dieser auch
damit beauftragt werden, eine vom User bestimmte Funktion auszuführen.
Dieser Aufruf wird dazu benutzt, solche Funktionen zu installieren oder
deinstallieren, die dann wie Timerinterrupt-Handler aufgerufen werden. Sie
werden jedesmal aufgerufen, wenn STinG die Ports pollt, um Daten zu senden
und zu empfangen.
Die installierte Funktion wird aus den Hauptinterrupt aufgerufen und darf
daher nur wenig CPU-Zeit verbrauchen. Daher ist es nicht erlaubt, hier auf
ein Event zu warten. Der Aufruf wird asynchron im Supervisor-Modus
getätigt, seien Sie also vorsichtig mit der Benutzung irgendwelcher
Betriebssystemaufrufe innerhalb der Handler-Funktion.
Der 'install_code' kann folgendes sein:
Für Timing-Prozesse wird eine Basis benötigt. Diese Funktion stellt eine
Basis in Millisekunden zur Verfügung, mit einer Auflösung von 5
Millisekunden. Dies bedeutet, daß der Rückgabewert ein Vielfaches von
fünf ist.
Für Timing-Prozesse müssen Zeitintervalle gemessen werden. Die
Vorgehensweise ist: Erfragen der Zeit über TIMER_call, wenn der Prozess
gestartet ist und Weitergeben des Resultats an TIMER_elapsed, wenn der Prozess
beendet ist. Der TIMER_elapsed-Aufruf liefert das Zeitintervall in Millisekunden,
wiederum mit einer Auflösung von 5 Millisekunden.
Beachten Sie, daß der Rückgabewert sich immer auf die vergangenen
24 Stunden bezieht. Wird also ein Wert in TIMER_elapsed eingesetzt, der in
der Zukunft liegt, wird er so behandelt werden, als läge derselbe Zeitpunkt
in den vergangenen 24 Stunden. Dasselbe passiert, wenn Zeitpunkte übergeben
werden, die mehr als 24 Stunden zurückliegen.
Der Timing Manager
Der Timing Manager stellt Funktionen für regelmäßige Aufrufe und zu
Timingzwecken bereit, z.B. Timeoutzähler o.ä. Für das Timing gibt es
Funktionen zum Abfragen der Zeit oder verstrichener Zeit seit einem
bestimmten Zeitpunkt.
Die Aufrufe:
Die Funktion 'TIMER_call'
int16 cdecl TIMER_call (void cdecl (* handler) (void),
int16 install_code);
Installiert und deinstalliert Handler für Timerinterruptereignisse.
Die Funktion 'TIMER_now'
int32 cdecl TIMER_now (void);
Gibt die Anzahl der Millisekunden zurück, die seit Mitternacht vergangen
ist.
Der Wert liegt zwischen 0 und 86.399.999.
Die Funktion 'TIMER_elapsed'
int32 cdecl TIMER_elapsed (int32 moment);
Berechnet die seit einem gegebenen Moment verstrichene Zeit in Millise-
kunden.
English version not yet available. |