Atari Logo
Atari Computer

Hauptseite -
Welches System? -
Hardware -
Software -
Emulatoren -
Internet
MausNet
Programmieren
Verweise
Über

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.

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:


Die Funktion 'TIMER_now'
    int32  cdecl  TIMER_now (void);
Gibt die Anzahl der Millisekunden zurück, die seit Mitternacht vergangen ist.

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.
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.

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.


Best viewed with any browser English version not yet available.

Änderungen und Irrtümer vorbehalten. Letzte Änderung:
14 September 2001.
Home - Mail an den Webmaster - Impressum