On Mon, Feb 25, 2002 at 09:31:41PM -0500, Andrew T. Schnable wrote: >I was doing some pthreads/semaphore work and I tracked down a problem >in my code to a bug in sem_trywait. Posix sem_trywait is defined as >returning -1 and setting errno to EAGAIN if the semaphore would have >blocked. The cygwin implementation returns EAGAIN an leaves errno >unchanged. > >Has anyone else encountered this problem and provided a fix?
Hmm. Unless I am missing something, it looks like this problem is prevalent in the pthreads code. It makes me think that maybe the author meant to catch these kinds of things in the interface between the __pthread/pthread calls. Robert, can you explain what's going on here? cgf >Andy >[EMAIL PROTECTED] > >PS. The problem seems to be in thread.cc (semaphore::TryWait) - I don't see >much >stderr setting anywhere in this file - is this verboten - or just >overlooked? > > >int >semaphore::TryWait () >{ > /*FIXME: signals should be able to interrupt semaphores... > *We probably need WaitForMultipleObjects here. > */ > if (WaitForSingleObject (win32_obj_id, 0) == WAIT_TIMEOUT) > return EAGAIN; > currentvalue--; > return 0; >} -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/