[Tech] Domanda

Simone Piccardi piccardi@truelite.it
Lun 1 Dic 2003 19:29:34 CET


On Mon, 2003-12-01 at 15:16, Valerio Montagnani wrote:
> Con "l'orologio di sistema perde colpi" intendo che non è affidabile,
> perchè quando la scheda non è alimentata da rete, ci pensa la pila al
> litio ad alimentare bios e clock. La continua variazione di livelli di
> tensione dovuta ai due tipi di alimentazione, possono creare problemi
> al clock; infatti, l'orologio che compare sul desktop di qualsiasi
> distro, se non viene continuamente aggiornato via internet, rimane
> indietro.
No, guarda che l'orologio di sistema lo mantiene il kernel, e 
l'aggiornamento dipende dal carico della macchina, e` solo un calcolo
approssimato, a me ad esempio spesso va avanti.  

Se vuoi conti esatti devi usare il real time clock della macchina
(quello del bios) ed un sistema real time. Quello pure puo` derivare, ma
e` molto piu` preciso, e se ne puo` calcolare la deriva in maniera
precisa.

> Il problema è che il driver girerà su un centinaio di computer
> diversi, per hardware, locazione, ecc.
E devono essere sincronizzate fra di loro? Non hai ancora specificato
che precisione ti serve, se ti serve la sincronia esatta delle macchine,
se gli intervalli devono essere assoluti o relativi ... francamente e`
un po' difficile risponderti. 

> credo che l'unico sistema sia quello proposto da claudio: usare
> time().
Scusa ma cosa credi che usi time? Lo stesso orologio di sistema di cui
affermi di non fidarti. 

Se hai esigenze di real-time ti occorre un sistema real-time (e Linux
non lo e`, senza i patch di RT-linux o RTAI). Se invece ti basta una
precisione limitata puoi tranquillamente usare sleep e alarm e dare
priorita` real-time al processo (che nonostante il nome sono solo una
approssimazione di un real-time effettivo). 

La maniera piu` precisa che hai a disposizione (come ti aveva
consigliato carlo) e` interrogare il real-time-clock della macchina,
guardati rtc.txt sotto Documentation nei sorgenti del kernel, c'e` pure
un esempio di come fare (devi usare read e select).

Ciao
Simone




Maggiori informazioni sulla lista flug-tech