Zeitverhalten
Jan-Benedict Glaw
jbglaw at lug-owl.de
Tue Oct 26 11:31:08 CEST 2004
On Tue, 2004-10-26 11:06:06 +0200, Joerg Haverkamp <jhv at mac.com>
wrote in message <451A3437-272E-11D9-A2B5-000393755A9A at mac.com>:
> Am 26.10.2004 um 10:28 schrieb Jan-Benedict Glaw:
> >On Tue, 2004-10-26 10:07:30 +0200, Joerg Haverkamp <jhv at mac.com>
> >wrote in message <157FBE67-2726-11D9-A2B5-000393755A9A at mac.com>:
> >Bekommst Du während des Boot-Ups (dmesg) angezeigt, welche Timer
> >benutzt werden? ICh vermute, daß während des gettimeofday() noch
> >Updates
> >von irgendeinem Timer kommen, die dann dazu führen, daß Deine Zeit
> >nicht
> >mehr paßt...
> nicht mehr passt wär ja was: ich stelle die Uhr per ntpdate, aber sie
> bleibt bei der Zeit und geht einfach nicht weiter. Interessant ist aber
> auch die Ausgabe von date, mal eine Stunde weiter, mal nicht.
Geht die Zeit garnicht weiter?
Die Stunde mehr oder weniger kann ein Verrechnungs-Problem von schnellen
Timern sein. Wird denn nun ausgegeben, welche Timer der Kernel benutzt?
Die Antwort darauf bleibst Du leider schuldig...
> >Die Uhr geht also kräftig nach; Du könntest entweder forcieren, daß
> >andere Timer benutzt, und zudem mal an den ACPI-Parametern drehen
> >(könnten auch Interrupt-Probleme sein).
> Da erkenne ich nichts, aber Modul rtc kann nicht geladen werden, beim
> Start habe ich kurz eine Fehlermeldung huschen sehen, es war bei
> lsmod aber zu sehen. Nach rmmod kann ich dieses Modul erst dann wieder
> laden, wenn ich es direkt mit Pfad und Endung angebe, sonst nicht.
Der RTC ist vermutlich für Dein Problem am wenigsten verantwortlich. Das
mit der Zeit läuft so:
- Im frühen, architektur-spezifischem Code wird wie auch immer
versucht, an eine halbwegs passende Uhrzeit zu kommen. Meist
wird dafür irgendein RTC benutzt.
- Später wird der allgemeine RTC-Treiber an'n Start gebracht. Er
wird aber kaum mehr gebraucht: im wesentlichen dazu, alle 11
(?) Minuten den RTC zu updaten, wenn ein ntpd läuft...
- Außerdem wird der RTC programmiert (meistens) einmal pro msec
einen Interrupt auszulösen. Damit wird im Groben dann die Uhr
implementiert.
Wenn eine Applikation die aktuelle Zeit (mittels gettimeofday()) haben
will, ist die 1msec-Auflösung des RTC natürlich unbrauchbar:-) Daher
kann gettimeofday() auf viel präzisere Timer zurückgreifen (Auflösung im
µsec-Bereich und darunter). Das wird mit der Zeit, die mittels der
Timer-Interrupts aktualisiert wird (und nie wieder auf der RTC
ausgelesen wird) verrechnet.
Ich vermute, daß bei Dir die Verrechnung mit (einem) der
High-Performance Timer schiefgeht. Also wäre es mal interessant, welche
Timer (wenn überhaupt) denn neben dem Timer-(RTC-)Interrupt bei Dir noch
benutzt werden.
> Könnte es helfen, ich einen eigenen Kernel baue?
Ja. Dort kannst Du dann mal der Reihe nach ausprobieren, welche Timer
mit Deinem Mobo funktionieren und welche nicht...
MfG, JBG
--
Jan-Benedict Glaw jbglaw at lug-owl.de . +49-172-7608481 _ O _
"Eine Freie Meinung in einem Freien Kopf | Gegen Zensur | Gegen Krieg _ _ O
fuer einen Freien Staat voll Freier Bürger" | im Internet! | im Irak! O O O
ret = do_actions((curr | FREE_SPEECH) & ~(NEW_COPYRIGHT_LAW | DRM | TCPA));
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lug-owl.de/pipermail/linux/attachments/20041026/2217bc32/attachment.sig>
More information about the Linux
mailing list