From: Arjan v. de V. <ar...@in...> - 2006-02-27 08:37:23
|
On Mon, 2006-02-27 at 03:34 -0500, Shailabh Nagar wrote: > Arjan van de Ven wrote: > > >>+/* > >>+ * timespec_diff_ns - Return difference of two timestamps in nanoseconds > >>+ * In the rare case of @end being earlier than @start, return zero > >>+ */ > >>+static inline nsec_t timespec_diff_ns(struct timespec *start, struct timespec *end) > >>+{ > >>+ nsec_t ret; > >>+ > >>+ ret = (nsec_t)(end->tv_sec - start->tv_sec)*NSEC_PER_SEC; > >>+ ret += (nsec_t)(end->tv_nsec - start->tv_nsec); > >>+ if (ret < 0) > >>+ return 0; > >>+ return ret; > >>+} > >> #endif /* __KERNEL__ */ > >> > >> > >> > > > >wouldn't it be more useful to have this return a timespec as well, and > >then it'd be generically useful (and it also probably should then be > >uninlined ;) > > > > > Return another timespec to store the difference of two input timespecs ? > Would that be useful ? > Didn't quite get it. the API is a bit crooked right now; you have 2 timespecs as a measure of time, and you return a long as diff, rather than another timespec. How do you know the nsec_t doesn't overflow ??? I suspect the answer is "you don't". timespec's are a way to deal with that nicely. And it makes the API more symmetric as well |