Inhibit support for gthread condvars on VxWorks < 6

The condition variables support relies on kernel entry points
to enforce critical aspects of it's expected behavior.

Some of these entry points are not available prior to VxWorks 6,
so we just expose absence of support for condition variables on
such systems.

2020-10-15  Rasmus Villemoes  <rv@rasmusvillemoes.dk>

libgcc/
	* config/gthr-vxworks.h: Condition the __GTHREAD_HAS_COND
	section on VxWorks >= 6.
	* config/gthr-vxworks-cond.c: Condition the entire
	implementation on __GTHREAD_HAS_COND.
This commit is contained in:
Rasmus Villemoes 2020-10-02 15:26:26 +00:00 committed by Olivier Hainque
parent 0aeeda8fc2
commit e94d5836e5
2 changed files with 12 additions and 0 deletions

View File

@ -26,6 +26,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
This file implements the GTHREAD_HAS_COND part of the interface
exposed by gthr-vxworks.h. */
#if __GTHREAD_HAS_COND
#include "gthr.h"
#include <taskLib.h>
@ -79,3 +81,5 @@ __gthread_cond_wait_recursive (__gthread_cond_t *cond,
{
return __gthread_cond_wait (cond, mutex);
}
#endif

View File

@ -234,6 +234,12 @@ extern int __gthread_setspecific (__gthread_key_t __key, void *__ptr);
/* ------------------ Base condition variables support ------------------- */
/* VxWorks prio to 6 misses a few services key to a correct
implementation of condition variables with reasonable complexity.
semExchange in particular. */
#if _VXWORKS_MAJOR_GE(6)
#define __GTHREAD_HAS_COND 1
typedef SEM_ID __gthread_cond_t;
@ -254,6 +260,8 @@ extern int __gthread_cond_wait (__gthread_cond_t *cond,
extern int __gthread_cond_wait_recursive (__gthread_cond_t *cond,
__gthread_recursive_mutex_t *mutex);
#endif
/* ----------------------- C++0x thread support ------------------------- */
/* We do not support C++0x threads on that VxWorks 653, which we can