* init.cc: Cleanup slightly and remove obsolete code.
This commit is contained in:
parent
4e78617321
commit
d04cf16c52
|
@ -1,11 +1,15 @@
|
|||
2002-09-16 Christopher Faylor <cgf@redhat.com>
|
||||
|
||||
* init.cc: Cleanup slightly and remove obsolete code.
|
||||
|
||||
2002-09-11 Robert Collins <rbtcollins@hotmail.com>
|
||||
|
||||
* init.cc (dll_entry): On thread detach, if the thread hasn't
|
||||
exit()ed, do so.
|
||||
* pthread.cc (pthread_getsequence_np): Remove the
|
||||
* pthread.cc (pthread_getsequence_np): Remove the
|
||||
__pthread_getsequence_np wrapper. This requires errno.h.
|
||||
* thread.cc (pthread::self): Instantiate a new pthread object
|
||||
when called and none exists. return a NULL object if instantiation
|
||||
* thread.cc (pthread::self): Instantiate a new pthread object
|
||||
when called and none exists. return a NULL object if instantiation
|
||||
fails.
|
||||
(pthread::precreate): Factor out common code.
|
||||
(pthread::postcreate): Ditto.
|
||||
|
@ -38,7 +42,7 @@
|
|||
(__pthread_getsequence_np): Remove.
|
||||
(__pthread_setschedparam): Apply Extract Method to the object
|
||||
validation.
|
||||
(pthreadNull::getNullpthread): New method, return the pthreadNull
|
||||
(pthreadNull::getNullpthread): New method, return the pthreadNull
|
||||
object.
|
||||
(pthreadNull::pthreadNull): Private constructor to prevent accidental
|
||||
use.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* init.cc
|
||||
|
||||
Copyright 1996, 1997, 1998, 1999, 2000, 2001 Red Hat, Inc.
|
||||
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
|
||||
|
||||
This file is part of Cygwin.
|
||||
|
||||
|
@ -38,23 +38,10 @@ WINAPI dll_entry (HANDLE h, DWORD reason, void *static_load)
|
|||
pthread *thisthread = (pthread *) TlsGetValue (
|
||||
user_data->threadinterface->thread_self_dwTlsIndex);
|
||||
if (thisthread) {
|
||||
/* Some non-pthread call created this thread,
|
||||
/* Some non-pthread call created this thread,
|
||||
* but we need to clean it up */
|
||||
thisthread->exit(0);
|
||||
}
|
||||
#if 0 // FIXME: REINSTATE SOON
|
||||
waitq *w;
|
||||
if ((w = waitq_storage.get ()) != NULL)
|
||||
{
|
||||
if (w->thread_ev != NULL)
|
||||
{
|
||||
system_printf ("closing %p", w->thread_ev);
|
||||
(void) CloseHandle (w->thread_ev);
|
||||
}
|
||||
memset (w, 0, sizeof(*w)); // FIXME: memory leak
|
||||
}
|
||||
// FIXME: Need to add other per_thread stuff here
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
return 1;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* pthread.cc: posix pthread interface for Cygwin
|
||||
|
||||
Copyright 1998, 1999, 2000, 2001 Red Hat, Inc.
|
||||
Copyright 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
|
||||
|
||||
Originally written by Marco Fuykschot <marco@ddi.nl>
|
||||
|
||||
|
|
|
@ -377,8 +377,8 @@ pthread::setTlsSelfPointer(pthread *thisThread)
|
|||
|
||||
/* member methods */
|
||||
pthread::pthread ():verifyable_object (PTHREAD_MAGIC), win32_obj_id (0),
|
||||
cancelstate (0), canceltype (0), cancel_event(0),
|
||||
joiner (NULL), cleanup_stack(NULL)
|
||||
cancelstate (0), canceltype (0), cancel_event(0),
|
||||
joiner (NULL), cleanup_stack(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -434,7 +434,7 @@ pthread::precreate (pthread_attr *newattr)
|
|||
void
|
||||
pthread::create (void *(*func) (void *), pthread_attr *newattr,
|
||||
void *threadarg)
|
||||
{
|
||||
{
|
||||
precreate (newattr);
|
||||
if (!magic)
|
||||
return;
|
||||
|
@ -483,7 +483,7 @@ pthread::exit (void *value_ptr)
|
|||
if( __pthread_equal(&joiner, &thread ) )
|
||||
delete this;
|
||||
else
|
||||
{
|
||||
{
|
||||
return_ptr = value_ptr;
|
||||
mutex.UnLock ();
|
||||
}
|
||||
|
@ -739,7 +739,7 @@ pthread::setcancelstate (int state, int *oldstate)
|
|||
else
|
||||
{
|
||||
if (oldstate)
|
||||
*oldstate = cancelstate;
|
||||
*oldstate = cancelstate;
|
||||
cancelstate = state;
|
||||
}
|
||||
|
||||
|
@ -760,7 +760,7 @@ pthread::setcanceltype (int type, int *oldtype)
|
|||
else
|
||||
{
|
||||
if (oldtype)
|
||||
*oldtype = canceltype;
|
||||
*oldtype = canceltype;
|
||||
canceltype = type;
|
||||
}
|
||||
|
||||
|
@ -774,7 +774,7 @@ pthread::push_cleanup_handler (__pthread_cleanup_handler *handler)
|
|||
{
|
||||
if (this != self ())
|
||||
// TODO: do it?
|
||||
api_fatal ("Attempt to push a cleanup handler across threads");
|
||||
api_fatal ("Attempt to push a cleanup handler across threads");
|
||||
handler->next = cleanup_stack;
|
||||
InterlockedExchangePointer( &cleanup_stack, handler );
|
||||
}
|
||||
|
@ -785,7 +785,7 @@ pthread::pop_cleanup_handler (int const execute)
|
|||
if (this != self ())
|
||||
// TODO: send a signal or something to the thread ?
|
||||
api_fatal ("Attempt to execute a cleanup handler across threads");
|
||||
|
||||
|
||||
mutex.Lock ();
|
||||
|
||||
if (cleanup_stack != NULL)
|
||||
|
@ -793,7 +793,7 @@ pthread::pop_cleanup_handler (int const execute)
|
|||
__pthread_cleanup_handler *handler = cleanup_stack;
|
||||
|
||||
if (execute)
|
||||
(*handler->function) (handler->arg);
|
||||
(*handler->function) (handler->arg);
|
||||
cleanup_stack = handler->next;
|
||||
}
|
||||
|
||||
|
|
|
@ -318,7 +318,7 @@ private:
|
|||
|
||||
class pthreadNull : public pthread
|
||||
{
|
||||
public:
|
||||
public:
|
||||
static pthread *getNullpthread();
|
||||
~pthreadNull();
|
||||
|
||||
|
|
Loading…
Reference in New Issue