[ofa-general] Re: [PATCH v2] opensm/complib: account for nsec overflow in timeout values

Sasha Khapyorsky sashak at voltaire.com
Sun Aug 23 08:01:27 PDT 2009


On 09:06 Thu 13 Aug     , Ira Weiny wrote:
> > > @@ -148,9 +148,11 @@ cl_event_wait_on(IN cl_event_t * const p_event,
> > >  	} else {
> > >  		/* Get the current time */
> > >  		if (gettimeofday(&curtime, NULL) == 0) {
> > > -			timeout.tv_sec = curtime.tv_sec + (wait_us / 1000000);
> > > -			timeout.tv_nsec =
> > > -			    (curtime.tv_usec + (wait_us % 1000000)) * 1000;
> > > +			uint32_t n_sec = (curtime.tv_usec + (wait_us % 1000000))
> > 
> > Do you really need fixed size (uint32_t) variable here?
> 
> Well I need at least int32_t.  I chose unsigned because we are not trying to go back in time.  I don't like leaving this as "int".  As rare as it might be, a compiler could chose 16bits for an int and that is not big enough, right?

Right, but tv_nsec field of struct timespec has 'long' type, not 'int'.

Actually my question was more about using *fixed* size type - I think
that we should avoid using fixed size types in cases when it is not
really needed (such as protocol structures, etc.).

So I'm changing this uint32_t to unsigned long which should be fine.

> From: Ira Weiny <weiny2 at llnl.gov>
> Date: Thu, 6 Aug 2009 18:31:46 -0700
> Subject: [PATCH] opensm/complib: account for nsec overflow in timeout values
> 
> 
> Signed-off-by: Ira Weiny <weiny2 at llnl.gov>

Applied. Thanks.

Sasha



More information about the general mailing list