[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

sem_timedwait error



Aitor.Viana.Sanchez at esa.int wrote:
>
> Hi,
>
> i am working with rtems 4.6 over LEON2 architecture. I got a problem 
> with the sem_timedwait POSIX function. This function has the next 
> declaration:
>
> int sem_timedwait(sem_t *restrict /sem/, const struct timespec 
> *restrict /abs_timeout/);
>
> the problem is that the abs_timeout must have the field tv_nsec 
> cleared (set to 0x0) otherwise the function is not executed correctly. 
> I think this is a bug in the POSIX API and I guess it would also 
> affect other platforms.
> Moreover, the problem is considerable for real-time systems because of 
> the lost of precision.
>
It looks like a bad edit in the error checking code.  It is the remains 
of code that
was trying to see if tv_sec or tv_nsec is < 0.  Try the attached patch.

This was probably introduced as part of fixing PR841.

FWIW the same code is in an "#if 0" block on the 4.7 branch and on the 
CVS head,
the error checking is done by a helper routine so it is the same 
everywhere.  I
saw this type of code in a lot of places and moved it to a common and 
hopefully
more correct routine.

Let me know if this works.

--joel


> Any idea ?
>
>
> Cheers,
>  
> Aitor
> ------------------------------------------------------------------------
>
> _______________________________________________
> rtems-users mailing list
> rtems-users at rtems.com
> http://rtems.rtems.org/mailman/listinfo/rtems-users
>   

-------------- next part --------------
A non-text attachment was scrubbed...
Name: semtimedwait.c.diff
Type: text/x-patch
Size: 874 bytes
Desc: not available
Url : http://rtems.rtems.org/pipermail/rtems-users/attachments/20070515/e15fc79b/attachment.bin