On Thu, 30 May 2002 14:49 +0300, Mihai RUSU wrote:
> Salut
>
> struct timeval {
> long tv_sec; /* seconds */
> long tv_usec; /* microseconds */
> };
>
> Am un timeval citit cu gettimeofday si alt timeval ce reprezinta un
> interval (de ex. pentru select()). Cum adun cele 2 timeval-uri ?
Daca a si b sint structuri timeval, atunci a + b se calculeaza
astfel, conform macro-ului timeradd din /usr/include/sys/time.h:
# define timeradd(a, b, result) \
do { \
(result)->tv_sec = (a)->tv_sec + (b)->tv_sec; \
(result)->tv_usec = (a)->tv_usec + (b)->tv_usec; \
if ((result)->tv_usec >= 1000000) \
{ \
++(result)->tv_sec; \
(result)->tv_usec -= 1000000; \
} \
} while (0)
> Am facut un programel de test sa afisez la infinit gettimeofday sa vad
> daca tv_usec pur si simplu numara microsecundele dintr-o secunda dar se
> pare ca nu e chiar asa. Creste cu inaintarea in timp dar cand gettimeofday
> imi intoarce deja secunda urmatoare, tv_usec scade brusc (dar nu o ia de
> la 0, sau ma rog, aproximativ 0).
Da, acuma vrei si tu sa reusesti sa apelezi un system call de un
milion de ori pe secunda, unde te crezi? :-)
> Nestiind exact ce reprezinta tv_usec nu pot sa imi fac un #define sau o
> rutina de adunare 2 timeval...
Le ai deja in /usr/include/sys/time.h. Vezi ca man gettimeofday
pomeneste despre conditiile in care se vede timeradd si altele.
--
Radu Greab
---
Pentru dezabonare, trimiteti mail la
[EMAIL PROTECTED] cu subiectul 'unsubscribe rlug'.
REGULI, arhive si alte informatii: http://www.lug.ro/mlist/