Nem értem. Kiolvasod a két gettimeofday() hívással az időpontokat.
Levonod a későbbi tv_sec-jéből a korábbiét. Összehasonlítod a tv_usec komponenseket, ha a későbbi >= , akkor levonod belőle a korábbit, és készen is vagy, ha nem, akkor hozzáadsz 1 milliót, és úgy vonod le, a tv_sec-et pedig pedig csökkented eggyel.
t2->tv_sec -= t1->tv_sec;
if (t2->tv_usec < t1->tv_usec) { t2->tv_usec += 1000000; t2->tv_sec--; }
t2->tv_usec -= t1->tv_usec;
Az eredmény egy struct timeval lesz, és nem kell floating pontokkal baszakodni.