mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-01-18 20:39:33 +08:00
* external.cc (cygwin_internal): Add CW_INIT_EXCEPTIONS to allow cygwin
exception handling on threads not created by cygwin. * sigproc.cc (proc_terminate): Don't release pinfo structs since we are exiting. * include/sys/cygwin.h: Add CW_INIT_EXCEPTIONS.
This commit is contained in:
parent
4bb85e7f67
commit
239b06b864
@ -1,6 +1,10 @@
|
||||
Thu Aug 24 18:02:35 2000 Christopher Faylor <cgf@cygnus.com>
|
||||
Thu Aug 24 22:17:19 2000 Christopher Faylor <cgf@cygnus.com>
|
||||
|
||||
* ps.cc (main): Always print a cygwin process using cygwin paths.
|
||||
* external.cc (cygwin_internal): Add CW_INIT_EXCEPTIONS to allow cygwin
|
||||
exception handling on threads not created by cygwin.
|
||||
* sigproc.cc (proc_terminate): Don't release pinfo structs since we are
|
||||
exiting.
|
||||
* include/sys/cygwin.h: Add CW_INIT_EXCEPTIONS.
|
||||
|
||||
Thu Aug 24 17:16:14 2000 Christopher Faylor <cgf@cygnus.com>
|
||||
|
||||
|
@ -1042,7 +1042,7 @@ do_exit (int status)
|
||||
}
|
||||
|
||||
if (cleanup_pinfo)
|
||||
myself->record_death (); // Locks pinfo mutex
|
||||
myself->record_death ();
|
||||
else
|
||||
sigproc_printf ("not cleanup_pinfo");
|
||||
|
||||
|
@ -15,6 +15,7 @@ details. */
|
||||
#include "sync.h"
|
||||
#include "sigproc.h"
|
||||
#include "pinfo.h"
|
||||
#include <exceptions.h>
|
||||
|
||||
static external_pinfo *
|
||||
fillout_pinfo (pid_t pid, int winpid)
|
||||
@ -154,6 +155,10 @@ cygwin_internal (cygwin_getinfo_types t, ...)
|
||||
case CW_GETPINFO_FULL:
|
||||
return (DWORD) fillout_pinfo (va_arg (arg, pid_t), 1);
|
||||
|
||||
case CW_INIT_EXCEPTIONS:
|
||||
init_exceptions ((exception_list *) arg);
|
||||
return 0;
|
||||
|
||||
default:
|
||||
return (DWORD) -1;
|
||||
}
|
||||
|
@ -61,7 +61,8 @@ typedef enum
|
||||
CW_USER_DATA,
|
||||
CW_PERFILE,
|
||||
CW_GET_CYGDRIVE_PREFIXES,
|
||||
CW_GETPINFO_FULL
|
||||
CW_GETPINFO_FULL,
|
||||
CW_INIT_EXCEPTIONS
|
||||
} cygwin_getinfo_types;
|
||||
|
||||
#define CW_NEXTPID 0x80000000 // or with pid to get next one
|
||||
|
@ -499,7 +499,7 @@ proc_terminate (void)
|
||||
zombies[i]->hProcess = NULL;
|
||||
}
|
||||
zombies[i]->process_state = PID_NOT_IN_USE; /* CGF FIXME - still needed? */
|
||||
zombies[i].release();
|
||||
// zombies[i].release(); // FIXME: this breaks older gccs for some reason
|
||||
}
|
||||
|
||||
/* Disassociate my subprocesses */
|
||||
@ -530,10 +530,15 @@ proc_terminate (void)
|
||||
pchildren[i]->process_state |= PID_ORPHANED;
|
||||
}
|
||||
}
|
||||
pchildren[i].release ();
|
||||
// pchildren[i].release (); // FIXME: this breaks older gccs for some reason
|
||||
}
|
||||
nchildren = nzombies = 0;
|
||||
|
||||
/* Just zero sync_proc_subproc as the delete below seems to cause
|
||||
problems for older gccs. */
|
||||
#if 1
|
||||
sync_proc_subproc = NULL;
|
||||
#else
|
||||
/* Attempt to close and release sync_proc_subproc in a
|
||||
* non-raceable manner.
|
||||
*/
|
||||
@ -541,8 +546,9 @@ proc_terminate (void)
|
||||
if (m)
|
||||
{
|
||||
sync_proc_subproc = NULL;
|
||||
delete m;
|
||||
// delete m;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
sigproc_printf ("leaving");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user