* pinfo.h (_pinfo::getthread2signal): Remove obsolete function.

* cygtls.h (_threadinfo): Define tid more precisely.
(_threadinfo::operator HANDLE): Define.
* exceptions.cc (_threadinfo::interupt_now): Use _threadinfo HANDLE operator to
derive thread handle.
(setup_handler): Ditto.
* sigproc.cc: Reorganize includes.
This commit is contained in:
Christopher Faylor 2003-11-29 00:26:40 +00:00
parent 13584f077b
commit 62e070d72e
6 changed files with 22 additions and 22 deletions

View File

@ -1,3 +1,13 @@
2003-11-28 Christopher Faylor <cgf@redhat.com>
* pinfo.h (_pinfo::getthread2signal): Remove obsolete function.
* cygtls.h (_threadinfo): Define tid more precisely.
(_threadinfo::operator HANDLE): Define.
* exceptions.cc (_threadinfo::interupt_now): Use _threadinfo HANDLE
operator to derive thread handle.
(setup_handler): Ditto.
* sigproc.cc: Reorganize includes.
2003-11-28 Christopher Faylor <cgf@redhat.com>
* pinfo.h (_pinfo::getsig): Remove obsolete function, here and

View File

@ -34,7 +34,7 @@ struct _threadinfo
sigset_t sigwait_mask;
siginfo_t *sigwait_info;
siginfo_t infodata;
void *tid;
struct pthread *tid;
struct _threadinfo *prev, *next;
__stack_t stack[8];
int sig;
@ -51,6 +51,7 @@ struct _threadinfo
__attribute__((regparm(3)));
void __stdcall interrupt_setup (int sig, void *handler, struct sigaction& siga, __stack_t retaddr)
__attribute__((regparm(3)));
operator HANDLE () const {return tid->win32_obj_id;}
};
#pragma pack(pop)

View File

@ -745,7 +745,7 @@ _threadinfo::interrupt_now (CONTEXT *ctx, int sig, void *handler,
push (0);
interrupt_setup (sig, handler, siga, (__stack_t) ctx->Eip);
ctx->Eip = (DWORD) sigdelayed;
SetThreadContext (myself->getthread2signal (), ctx); /* Restart the thread in a new location */
SetThreadContext (*this, ctx); /* Restart the thread in a new location */
return 1;
}
@ -801,7 +801,7 @@ setup_handler (int sig, void *handler, struct sigaction& siga, _threadinfo *tls)
}
DWORD res;
HANDLE hth = myself->getthread2signal ();
HANDLE hth = (HANDLE) *tls;
/* Suspend the thread which will receive the signal. But first ensure that
this thread doesn't have any mutos. (FIXME: Someday we should just grab

View File

@ -6,17 +6,11 @@ On process startup, cygwin starts a secondary thread that deals with signals.
This thread contains a loop which blocks waiting for information to show up
on a pipe whose handle (sendsig) is currently stored in _pinfo (this may change).
If one of these is activated, then the the signal handler inspects an
array of integers looking for a non-zero value. The array corresponds
to the normal UNIX signals + two extra locations for internal usage.
This array is located in the 'sigtodo' array in the procinfo class.
The signal thread uses the InterlockedDecrement function to atomically
inspect elements of the array. If one one of the elements of the array
is non-zero, then cygwin checks to see if the user has blocked the
signal by inspecting the process signal mask. If the signal is blocked,
then the current array element is reincremented and the next element is
checked.
Communication on the sendsig pipe is via the 'sigelem' structure. This
structure is filled out by the sig_send function with information about the
signal being sent, such as (as of this writing) the signal number, the
originating pid, the originating thread, and the address of the mask to
use (this may change).
If the signal is not blocked, then the function "sig_handle" is called
with the signal number as an argument. This is a fairly straightforward

View File

@ -114,11 +114,6 @@ public:
sig_mask = mask;
}
inline HANDLE getthread2signal ()
{
return hMainThread;
}
void commune_recv ();
commune_result commune_send (DWORD, ...);
bool alive ();

View File

@ -20,8 +20,6 @@ details. */
#include <sys/signal.h>
#include "cygerrno.h"
#include "sync.h"
#include "cygtls.h"
#include "sigproc.h"
#include "pinfo.h"
#include "security.h"
#include "path.h"
@ -29,9 +27,11 @@ details. */
#include "dtable.h"
#include "cygheap.h"
#include "child_info_magic.h"
#include "perthread.h"
#include "shared_info.h"
#include "cygthread.h"
#include "cygtls.h"
#include "sigproc.h"
#include "perthread.h"
/*
* Convenience defines