gthr.h: Document __GTHREAD_MUTEX_INIT_FUNCTION.
* gthr.h: Document __GTHREAD_MUTEX_INIT_FUNCTION. * frame.c (init_object_mutex): New function. (init_object_mutex_once): Likewise. (find_fde): Call it. (__register_frame_info): Likewise. (__register_frame_info_table): Likewise. (__deregister_frame_info): Likewise. From-SVN: r22023
This commit is contained in:
parent
54c3cf4bb9
commit
3e2a2957a0
|
@ -1,3 +1,13 @@
|
||||||
|
Wed Aug 26 17:13:37 1998 Tom Tromey <tromey@cygnus.com>
|
||||||
|
|
||||||
|
* gthr.h: Document __GTHREAD_MUTEX_INIT_FUNCTION.
|
||||||
|
* frame.c (init_object_mutex): New function.
|
||||||
|
(init_object_mutex_once): Likewise.
|
||||||
|
(find_fde): Call it.
|
||||||
|
(__register_frame_info): Likewise.
|
||||||
|
(__register_frame_info_table): Likewise.
|
||||||
|
(__deregister_frame_info): Likewise.
|
||||||
|
|
||||||
Thu Aug 27 15:14:18 1998 Jeffrey A Law (law@cygnus.com)
|
Thu Aug 27 15:14:18 1998 Jeffrey A Law (law@cygnus.com)
|
||||||
|
|
||||||
* haifa-sched.c (sched_analyze_insn): Fix thinko in last change.
|
* haifa-sched.c (sched_analyze_insn): Fix thinko in last change.
|
||||||
|
|
33
gcc/frame.c
33
gcc/frame.c
|
@ -1,6 +1,6 @@
|
||||||
/* Subroutines needed for unwinding stack frames for exception handling. */
|
/* Subroutines needed for unwinding stack frames for exception handling. */
|
||||||
/* Compile this one with gcc. */
|
/* Compile this one with gcc. */
|
||||||
/* Copyright (C) 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
|
||||||
Contributed by Jason Merrill <jason@cygnus.com>.
|
Contributed by Jason Merrill <jason@cygnus.com>.
|
||||||
|
|
||||||
This file is part of GNU CC.
|
This file is part of GNU CC.
|
||||||
|
@ -115,6 +115,33 @@ struct frame_state_internal
|
||||||
struct frame_state_internal *saved_state;
|
struct frame_state_internal *saved_state;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* This is undefined below if we need it to be an actual function. */
|
||||||
|
#define init_object_mutex_once()
|
||||||
|
|
||||||
|
#if __GTHREADS
|
||||||
|
#ifdef __GTHREAD_MUTEX_INIT_FUNCTION
|
||||||
|
|
||||||
|
/* Helper for init_object_mutex_once. */
|
||||||
|
|
||||||
|
static void
|
||||||
|
init_object_mutex (void)
|
||||||
|
{
|
||||||
|
__GTHREAD_MUTEX_INIT_FUNCTION (&object_mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Call this to arrange to initialize the object mutex. */
|
||||||
|
|
||||||
|
#undef init_object_mutex_once
|
||||||
|
static void
|
||||||
|
init_object_mutex_once (void)
|
||||||
|
{
|
||||||
|
static __gthread_once_t once = __GTHREAD_ONCE_INIT;
|
||||||
|
__gthread_once (&once, init_object_mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* __GTHREAD_MUTEX_INIT_FUNCTION */
|
||||||
|
#endif /* __GTHREADS */
|
||||||
|
|
||||||
/* Decode the unsigned LEB128 constant at BUF into the variable pointed to
|
/* Decode the unsigned LEB128 constant at BUF into the variable pointed to
|
||||||
by R, and return the new value of BUF. */
|
by R, and return the new value of BUF. */
|
||||||
|
|
||||||
|
@ -468,6 +495,7 @@ find_fde (void *pc)
|
||||||
struct object *ob;
|
struct object *ob;
|
||||||
size_t lo, hi;
|
size_t lo, hi;
|
||||||
|
|
||||||
|
init_object_mutex_once ();
|
||||||
__gthread_mutex_lock (&object_mutex);
|
__gthread_mutex_lock (&object_mutex);
|
||||||
|
|
||||||
for (ob = objects; ob; ob = ob->next)
|
for (ob = objects; ob; ob = ob->next)
|
||||||
|
@ -685,6 +713,7 @@ __register_frame_info (void *begin, struct object *ob)
|
||||||
ob->fde_array = 0;
|
ob->fde_array = 0;
|
||||||
ob->count = 0;
|
ob->count = 0;
|
||||||
|
|
||||||
|
init_object_mutex_once ();
|
||||||
__gthread_mutex_lock (&object_mutex);
|
__gthread_mutex_lock (&object_mutex);
|
||||||
|
|
||||||
ob->next = objects;
|
ob->next = objects;
|
||||||
|
@ -713,6 +742,7 @@ __register_frame_info_table (void *begin, struct object *ob)
|
||||||
ob->pc_begin = ob->pc_end = 0;
|
ob->pc_begin = ob->pc_end = 0;
|
||||||
ob->count = 0;
|
ob->count = 0;
|
||||||
|
|
||||||
|
init_object_mutex_once ();
|
||||||
__gthread_mutex_lock (&object_mutex);
|
__gthread_mutex_lock (&object_mutex);
|
||||||
|
|
||||||
ob->next = objects;
|
ob->next = objects;
|
||||||
|
@ -735,6 +765,7 @@ __deregister_frame_info (void *begin)
|
||||||
{
|
{
|
||||||
struct object **p;
|
struct object **p;
|
||||||
|
|
||||||
|
init_object_mutex_once ();
|
||||||
__gthread_mutex_lock (&object_mutex);
|
__gthread_mutex_lock (&object_mutex);
|
||||||
|
|
||||||
p = &objects;
|
p = &objects;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* Threads compatibily routines for libgcc2. */
|
/* Threads compatibily routines for libgcc2. */
|
||||||
/* Compile this one with gcc. */
|
/* Compile this one with gcc. */
|
||||||
/* Copyright (C) 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GNU CC.
|
This file is part of GNU CC.
|
||||||
|
|
||||||
|
@ -48,6 +48,12 @@ Boston, MA 02111-1307, USA. */
|
||||||
__GTHREAD_MUTEX_INIT
|
__GTHREAD_MUTEX_INIT
|
||||||
to initialize __gthread_mutex_t to get a fast
|
to initialize __gthread_mutex_t to get a fast
|
||||||
non-recursive mutex.
|
non-recursive mutex.
|
||||||
|
__GTHREAD_MUTEX_INIT_FUNCTION
|
||||||
|
some systems can't initalize a mutex without a
|
||||||
|
function call. On such systems, define this to a
|
||||||
|
function which looks like this:
|
||||||
|
void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *)
|
||||||
|
Don't define __GTHREAD_MUTEX_INIT in this case
|
||||||
|
|
||||||
The threads interface must define the following static functions:
|
The threads interface must define the following static functions:
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue