Steffen Dettmer wrote:
[...]
Dann läuft Deine Uptime also Montag oder Dienstag über? Kannst Du dann hier mal ne Mail schreiben?
Bei Kernel 2.4 auf 32-bit Systemen, ja. Ein "unsigned long" auf einem 64-bit System hat aber z.B. einen Wertebereich nicht von 0 bis 4294967295, sondern von 0 bis 18446744073709551615. Da tritt dann der Overflow ein wenig spaeter auf ;-)
Und der Überlauf passiert in /proc/uptime, sprich, der kernel macht es definitiv falsch? Man glaubt's ja kaum und hofft auf ein Bug in der uptime Zeit-Konvertierung...
Was heisst der Kernel macht es falsch? Variablen haben einen gewissen Wertebereich, und wenn dieser nicht mehr ausreicht, kommt es zu einem Overflow - Du kannst natuerlich entsprechende Massnahmen ergreifen, um das zu erkennen und entsprechend zu handeln, aber nur mit gewissem Overhead. Man haette natuerlich statt eines "unsigned long int" den Counter als "unsigned long long int" definieren koennen, aber das gibt es IIRC erst seit C99... CU, Th.