Subject: Re: [PATCH 2/4] Add new timeval_to_sec function

From: Oliver Hartkopp <[email-masked]>
Date: Tue, 24 Jul 2007 08:22:39 +0200

Varun Chandramohan wrote:
> Patrick McHardy wrote:
>   
>> Varun Chandramohan wrote:
>>   
>>     
>>>  /**
>>> + * timeval_to_sec - Convert timeval to seconds
>>> + * @tv:         pointer to the timeval variable to be converted
>>> + *
>>> + * Returns the seconds representation of timeval parameter.
>>> + */
>>> +static inline time_t timeval_to_sec(const struct timeval *tv)
>>> +{
>>> +	return (tv->tv_sec + (tv->tv_usec + 500000)/1000000);
>>> +}
>>>     
>>>       
>> I don't think you should round down timeout values.
>>   
>>     
> Can you elaborate on that? As per the RFC of MIB ,we need only seconds
> granularity. Taking that as the case i dont understand why round down
> should not be done?
>   

When you like to create any timeout based on your calculated value, you
might run into the problem that your calculated value is set to _zero_
even if there was "some time" before the conversion. This might probably
not what you indented to get.

So what about rounding up with

return (tv->tv_sec + (tv->tv_usec + 999999)/1000000);

???

Btw. isn't here already any solution based on ktime conversions?

Regards,
Oliver