mirror of git://gcc.gnu.org/git/gcc.git
Tidy bits of libgcc/config/gthr-vxworks
This addresses a variety of warnings about missing prototypes or suspicious ptr-to-function conversions. libgcc/ * config/gthr-vxworks-thread.c (__init_gthread_tcb): Make static. (__delete_gthread_tcb): Likewise. (__task_wrapper): Likewise. (__gthread_create): Convert __task_wrapper to (void *) before going to (FUNCPTR). * config/gthr-vxworks-tls.c (tls_delete_hook): Accommodate prototype variations between kernel and rtp. Return STATUS.
This commit is contained in:
parent
6924c00c87
commit
4514439dac
|
|
@ -29,6 +29,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|||
|
||||
#include "gthr.h"
|
||||
|
||||
typedef STATUS (* ENTRYPTR) (int);
|
||||
|
||||
#if __GTHREADS_CXX0X
|
||||
|
||||
#include <taskLib.h>
|
||||
|
|
@ -189,7 +191,7 @@ __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *mutex,
|
|||
|
||||
/* Task control block initialization and destruction functions. */
|
||||
|
||||
int
|
||||
static int
|
||||
__init_gthread_tcb (__gthread_t __tcb)
|
||||
{
|
||||
if (!__tcb)
|
||||
|
|
@ -222,7 +224,7 @@ return_sem_delete:
|
|||
|
||||
/* Here, we pass a pointer to a tcb to allow calls from
|
||||
cleanup attributes. */
|
||||
void
|
||||
static void
|
||||
__delete_gthread_tcb (__gthread_t* __tcb)
|
||||
{
|
||||
semDelete ((*__tcb)->return_value_available);
|
||||
|
|
@ -256,8 +258,8 @@ __gthread_self (void)
|
|||
return __local_tcb;
|
||||
}
|
||||
|
||||
int
|
||||
__task_wrapper (__gthread_t tcb, FUNCPTR __func, _Vx_usr_arg_t __args)
|
||||
static int
|
||||
__task_wrapper (__gthread_t tcb, ENTRYPTR __func, _Vx_usr_arg_t __args)
|
||||
{
|
||||
if (!tcb)
|
||||
return ERROR;
|
||||
|
|
@ -322,7 +324,7 @@ __gthread_create (__gthread_t * __threadid, void *(*__func) (void *),
|
|||
|
||||
TASK_ID task_id = taskCreate (NULL,
|
||||
priority, options, stacksize,
|
||||
(FUNCPTR) & __task_wrapper,
|
||||
(FUNCPTR) (void *) __task_wrapper,
|
||||
(_Vx_usr_arg_t) tcb,
|
||||
(_Vx_usr_arg_t) __func,
|
||||
(_Vx_usr_arg_t) __args,
|
||||
|
|
|
|||
|
|
@ -168,7 +168,22 @@ static __gthread_once_t tls_init_guard = __GTHREAD_ONCE_INIT;
|
|||
|
||||
/* Internal routines. */
|
||||
|
||||
/* The task TCB has just been deleted. Call the destructor
|
||||
/* The task deletion hooks for TLS handling have different prototypes
|
||||
for kernel or rtp modes. The RTP variant expects a TCB argument, which,
|
||||
fortunately, we don't need to use. */
|
||||
|
||||
#ifdef __RTP__
|
||||
#define TLS_DELETE_HOOK_ARG_DECL TASK_ID tcb ATTRIBUTE_UNUSED
|
||||
#define TLS_DELETE_HOOK_ARG NULL
|
||||
#else
|
||||
#define TLS_DELETE_HOOK_ARG_DECL void
|
||||
#define TLS_DELETE_HOOK_ARG
|
||||
#endif
|
||||
|
||||
STATUS tls_delete_hook (TLS_DELETE_HOOK_ARG_DECL);
|
||||
|
||||
|
||||
/* A task has just been deleted. Call the destructor
|
||||
function for each TLS key that has both a destructor and
|
||||
a non-NULL specific value in this thread.
|
||||
|
||||
|
|
@ -176,8 +191,8 @@ static __gthread_once_t tls_init_guard = __GTHREAD_ONCE_INIT;
|
|||
count protects us from calling a stale destructor. It does
|
||||
need to read tls_keys.dtor[key] atomically. */
|
||||
|
||||
void
|
||||
tls_delete_hook (void *tcb ATTRIBUTE_UNUSED)
|
||||
STATUS
|
||||
tls_delete_hook (TLS_DELETE_HOOK_ARG_DECL)
|
||||
{
|
||||
struct tls_data *data;
|
||||
__gthread_key_t key;
|
||||
|
|
@ -202,6 +217,8 @@ tls_delete_hook (void *tcb ATTRIBUTE_UNUSED)
|
|||
VX_LEAVE_TLS_DTOR();
|
||||
VX_SET_TLS_DATA(NULL);
|
||||
}
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
/* Initialize global data used by the TLS system. */
|
||||
|
|
@ -217,11 +234,11 @@ tls_destructor (void)
|
|||
{
|
||||
#ifdef __RTP__
|
||||
/* All threads but this one should have exited by now. */
|
||||
tls_delete_hook (NULL);
|
||||
tls_delete_hook (TLS_DELETE_HOOK_ARG);
|
||||
#endif
|
||||
/* Unregister the hook. */
|
||||
if (delete_hook_installed)
|
||||
taskDeleteHookDelete ((FUNCPTR)tls_delete_hook);
|
||||
taskDeleteHookDelete (tls_delete_hook);
|
||||
|
||||
if (tls_init_guard.done && __gthread_mutex_lock (&tls_lock) != ERROR)
|
||||
semDelete (tls_lock);
|
||||
|
|
@ -343,7 +360,7 @@ __gthread_setspecific (__gthread_key_t key, void *value)
|
|||
return ENOMEM;
|
||||
if (!delete_hook_installed)
|
||||
{
|
||||
taskDeleteHookAdd ((FUNCPTR)tls_delete_hook);
|
||||
taskDeleteHookAdd (tls_delete_hook);
|
||||
delete_hook_installed = 1;
|
||||
}
|
||||
__gthread_mutex_unlock (&tls_lock);
|
||||
|
|
|
|||
Loading…
Reference in New Issue