* 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>
|
2002-09-11 Robert Collins <rbtcollins@hotmail.com>
|
||||||
|
|
||||||
* init.cc (dll_entry): On thread detach, if the thread hasn't
|
* init.cc (dll_entry): On thread detach, if the thread hasn't
|
||||||
exit()ed, do so.
|
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.
|
__pthread_getsequence_np wrapper. This requires errno.h.
|
||||||
* thread.cc (pthread::self): Instantiate a new pthread object
|
* thread.cc (pthread::self): Instantiate a new pthread object
|
||||||
when called and none exists. return a NULL object if instantiation
|
when called and none exists. return a NULL object if instantiation
|
||||||
fails.
|
fails.
|
||||||
(pthread::precreate): Factor out common code.
|
(pthread::precreate): Factor out common code.
|
||||||
(pthread::postcreate): Ditto.
|
(pthread::postcreate): Ditto.
|
||||||
|
@ -38,7 +42,7 @@
|
||||||
(__pthread_getsequence_np): Remove.
|
(__pthread_getsequence_np): Remove.
|
||||||
(__pthread_setschedparam): Apply Extract Method to the object
|
(__pthread_setschedparam): Apply Extract Method to the object
|
||||||
validation.
|
validation.
|
||||||
(pthreadNull::getNullpthread): New method, return the pthreadNull
|
(pthreadNull::getNullpthread): New method, return the pthreadNull
|
||||||
object.
|
object.
|
||||||
(pthreadNull::pthreadNull): Private constructor to prevent accidental
|
(pthreadNull::pthreadNull): Private constructor to prevent accidental
|
||||||
use.
|
use.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* init.cc
|
/* 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.
|
This file is part of Cygwin.
|
||||||
|
|
||||||
|
@ -38,23 +38,10 @@ WINAPI dll_entry (HANDLE h, DWORD reason, void *static_load)
|
||||||
pthread *thisthread = (pthread *) TlsGetValue (
|
pthread *thisthread = (pthread *) TlsGetValue (
|
||||||
user_data->threadinterface->thread_self_dwTlsIndex);
|
user_data->threadinterface->thread_self_dwTlsIndex);
|
||||||
if (thisthread) {
|
if (thisthread) {
|
||||||
/* Some non-pthread call created this thread,
|
/* Some non-pthread call created this thread,
|
||||||
* but we need to clean it up */
|
* but we need to clean it up */
|
||||||
thisthread->exit(0);
|
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;
|
break;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* pthread.cc: posix pthread interface for Cygwin
|
/* 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>
|
Originally written by Marco Fuykschot <marco@ddi.nl>
|
||||||
|
|
||||||
|
|
|
@ -377,8 +377,8 @@ pthread::setTlsSelfPointer(pthread *thisThread)
|
||||||
|
|
||||||
/* member methods */
|
/* member methods */
|
||||||
pthread::pthread ():verifyable_object (PTHREAD_MAGIC), win32_obj_id (0),
|
pthread::pthread ():verifyable_object (PTHREAD_MAGIC), win32_obj_id (0),
|
||||||
cancelstate (0), canceltype (0), cancel_event(0),
|
cancelstate (0), canceltype (0), cancel_event(0),
|
||||||
joiner (NULL), cleanup_stack(NULL)
|
joiner (NULL), cleanup_stack(NULL)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -434,7 +434,7 @@ pthread::precreate (pthread_attr *newattr)
|
||||||
void
|
void
|
||||||
pthread::create (void *(*func) (void *), pthread_attr *newattr,
|
pthread::create (void *(*func) (void *), pthread_attr *newattr,
|
||||||
void *threadarg)
|
void *threadarg)
|
||||||
{
|
{
|
||||||
precreate (newattr);
|
precreate (newattr);
|
||||||
if (!magic)
|
if (!magic)
|
||||||
return;
|
return;
|
||||||
|
@ -483,7 +483,7 @@ pthread::exit (void *value_ptr)
|
||||||
if( __pthread_equal(&joiner, &thread ) )
|
if( __pthread_equal(&joiner, &thread ) )
|
||||||
delete this;
|
delete this;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return_ptr = value_ptr;
|
return_ptr = value_ptr;
|
||||||
mutex.UnLock ();
|
mutex.UnLock ();
|
||||||
}
|
}
|
||||||
|
@ -739,7 +739,7 @@ pthread::setcancelstate (int state, int *oldstate)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (oldstate)
|
if (oldstate)
|
||||||
*oldstate = cancelstate;
|
*oldstate = cancelstate;
|
||||||
cancelstate = state;
|
cancelstate = state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -760,7 +760,7 @@ pthread::setcanceltype (int type, int *oldtype)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (oldtype)
|
if (oldtype)
|
||||||
*oldtype = canceltype;
|
*oldtype = canceltype;
|
||||||
canceltype = type;
|
canceltype = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -774,7 +774,7 @@ pthread::push_cleanup_handler (__pthread_cleanup_handler *handler)
|
||||||
{
|
{
|
||||||
if (this != self ())
|
if (this != self ())
|
||||||
// TODO: do it?
|
// 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;
|
handler->next = cleanup_stack;
|
||||||
InterlockedExchangePointer( &cleanup_stack, handler );
|
InterlockedExchangePointer( &cleanup_stack, handler );
|
||||||
}
|
}
|
||||||
|
@ -785,7 +785,7 @@ pthread::pop_cleanup_handler (int const execute)
|
||||||
if (this != self ())
|
if (this != self ())
|
||||||
// TODO: send a signal or something to the thread ?
|
// TODO: send a signal or something to the thread ?
|
||||||
api_fatal ("Attempt to execute a cleanup handler across threads");
|
api_fatal ("Attempt to execute a cleanup handler across threads");
|
||||||
|
|
||||||
mutex.Lock ();
|
mutex.Lock ();
|
||||||
|
|
||||||
if (cleanup_stack != NULL)
|
if (cleanup_stack != NULL)
|
||||||
|
@ -793,7 +793,7 @@ pthread::pop_cleanup_handler (int const execute)
|
||||||
__pthread_cleanup_handler *handler = cleanup_stack;
|
__pthread_cleanup_handler *handler = cleanup_stack;
|
||||||
|
|
||||||
if (execute)
|
if (execute)
|
||||||
(*handler->function) (handler->arg);
|
(*handler->function) (handler->arg);
|
||||||
cleanup_stack = handler->next;
|
cleanup_stack = handler->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -318,7 +318,7 @@ private:
|
||||||
|
|
||||||
class pthreadNull : public pthread
|
class pthreadNull : public pthread
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static pthread *getNullpthread();
|
static pthread *getNullpthread();
|
||||||
~pthreadNull();
|
~pthreadNull();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue