Apply patch included in bin/8872. This fixes a bug that occurs when

pthread_cond_timedwait() times out.

PR:		bin/8872
Submitted by:	Jason Evans <jasone@canonware.com>
Reviewed by:	David Schwartz <davids@webmaster.com>
This commit is contained in:
jasone 1999-05-07 07:59:44 +00:00
parent 0d0773d84f
commit 1780bb2806
3 changed files with 33 additions and 6 deletions

View File

@ -29,7 +29,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: uthread_kern.c,v 1.14 1998/10/09 19:01:30 dt Exp $
* $Id: uthread_kern.c,v 1.16 1999/03/23 05:07:56 jb Exp $
*
*/
#include <errno.h>
@ -212,7 +212,16 @@ __asm__("fnsave %0": :"m"(*fdata));
FD_ZERO(&pthread->data.select_data->writefds);
FD_ZERO(&pthread->data.select_data->exceptfds);
pthread->data.select_data->nfds = 0;
}
} else if (pthread->state == PS_COND_WAIT) {
/*
* The pthread_cond_timedwait()
* has timed out, so remove the
* thread from the condition's
* queue.
*/
_thread_queue_remove(pthread->queue,
pthread);
}
/*
* Return an error as an interrupted
* wait:

View File

@ -29,7 +29,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: uthread_kern.c,v 1.14 1998/10/09 19:01:30 dt Exp $
* $Id: uthread_kern.c,v 1.16 1999/03/23 05:07:56 jb Exp $
*
*/
#include <errno.h>
@ -212,7 +212,16 @@ __asm__("fnsave %0": :"m"(*fdata));
FD_ZERO(&pthread->data.select_data->writefds);
FD_ZERO(&pthread->data.select_data->exceptfds);
pthread->data.select_data->nfds = 0;
}
} else if (pthread->state == PS_COND_WAIT) {
/*
* The pthread_cond_timedwait()
* has timed out, so remove the
* thread from the condition's
* queue.
*/
_thread_queue_remove(pthread->queue,
pthread);
}
/*
* Return an error as an interrupted
* wait:

View File

@ -29,7 +29,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: uthread_kern.c,v 1.14 1998/10/09 19:01:30 dt Exp $
* $Id: uthread_kern.c,v 1.16 1999/03/23 05:07:56 jb Exp $
*
*/
#include <errno.h>
@ -212,7 +212,16 @@ __asm__("fnsave %0": :"m"(*fdata));
FD_ZERO(&pthread->data.select_data->writefds);
FD_ZERO(&pthread->data.select_data->exceptfds);
pthread->data.select_data->nfds = 0;
}
} else if (pthread->state == PS_COND_WAIT) {
/*
* The pthread_cond_timedwait()
* has timed out, so remove the
* thread from the condition's
* queue.
*/
_thread_queue_remove(pthread->queue,
pthread);
}
/*
* Return an error as an interrupted
* wait: