* init.cc: Cleanup slightly and remove obsolete code.

This commit is contained in:
Christopher Faylor 2002-09-16 16:09:54 +00:00
parent 4e78617321
commit d04cf16c52
5 changed files with 21 additions and 30 deletions

View file

@ -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.

View file

@ -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;

View file

@ -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>

View file

@ -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;
}

View file

@ -318,7 +318,7 @@ private:
class pthreadNull : public pthread
{
public:
public:
static pthread *getNullpthread();
~pthreadNull();