* select.cc (thread_pipe): Add paranoid check to ensure thread termination.
* external.cc: Eliminate obsolete include. * getopt.c (getopt_long): Fix compiler warning. * shared.h: Moved PID_ definitions to include/sys/cygwin so that they can be used by external programs. * include/sys/cygwin.h: Move external definitions here. Include sys/resource.h to avoid having to do this everywhere.
This commit is contained in:
parent
6c7395bfce
commit
2a6a56c227
|
@ -1,3 +1,14 @@
|
|||
Thu May 18 01:28:02 2000 Christopher Faylor <cgf@cygnus.com>
|
||||
|
||||
* select.cc (thread_pipe): Add paranoid check to ensure thread
|
||||
termination.
|
||||
* external.cc: Eliminate obsolete include.
|
||||
* getopt.c (getopt_long): Fix compiler warning.
|
||||
* shared.h: Moved PID_ definitions to include/sys/cygwin so that they
|
||||
can be used by external programs.
|
||||
* include/sys/cygwin.h: Move external definitions here. Include
|
||||
sys/resource.h to avoid having to do this everywhere.
|
||||
|
||||
Thu May 18 01:04:02 2000 Christopher Faylor <cgf@cygnus.com>
|
||||
|
||||
* sigproc.h (sigframe): Don't set frame info unless tid matches this
|
||||
|
|
|
@ -11,7 +11,6 @@ Cygwin license. Please consult the file "CYGWIN_LICENSE" for
|
|||
details. */
|
||||
|
||||
#include "winsup.h"
|
||||
#include "external.h"
|
||||
|
||||
static external_pinfo *
|
||||
fillout_pinfo (DWORD pid)
|
||||
|
|
|
@ -37,6 +37,75 @@ extern int cygwin32_attach_handle_to_fd (char *, int, HANDLE, int, int);
|
|||
extern int cygwin_attach_handle_to_fd (char *, int, HANDLE, mode_t, unsigned);
|
||||
#endif
|
||||
|
||||
#include <sys/resource.h>
|
||||
|
||||
/* External interface stuff */
|
||||
|
||||
typedef enum
|
||||
{
|
||||
CW_LOCK_PINFO,
|
||||
CW_UNLOCK_PINFO,
|
||||
CW_GETTHREADNAME,
|
||||
CW_GETPINFO,
|
||||
CW_SETPINFO,
|
||||
CW_SETTHREADNAME,
|
||||
CW_GETVERSIONINFO,
|
||||
CW_READ_V1_MOUNT_TABLES
|
||||
} cygwin_getinfo_types;
|
||||
|
||||
struct external_pinfo
|
||||
{
|
||||
pid_t pid;
|
||||
pid_t ppid;
|
||||
HANDLE hProcess;
|
||||
DWORD dwProcessId, dwSpawnedProcessId;
|
||||
uid_t uid;
|
||||
gid_t gid;
|
||||
pid_t pgid;
|
||||
pid_t sid;
|
||||
int ctty;
|
||||
mode_t umask;
|
||||
|
||||
long start_time;
|
||||
struct rusage rusage_self;
|
||||
struct rusage rusage_children;
|
||||
|
||||
char progname[MAX_PATH];
|
||||
|
||||
DWORD strace_mask;
|
||||
HANDLE strace_file;
|
||||
|
||||
DWORD process_state;
|
||||
};
|
||||
|
||||
DWORD cygwin_internal (cygwin_getinfo_types, ...);
|
||||
|
||||
#define CW_NEXTPID 0x80000000 // or with pid to get next one
|
||||
|
||||
/* Flags associated with process_state */
|
||||
enum
|
||||
{
|
||||
PID_NOT_IN_USE = 0x0000, // Free entry.
|
||||
PID_IN_USE = 0x0001, // Entry in use.
|
||||
PID_ZOMBIE = 0x0002, // Child exited: no parent wait.
|
||||
PID_STOPPED = 0x0004, // Waiting for SIGCONT.
|
||||
PID_TTYIN = 0x0008, // Waiting for terminal input.
|
||||
PID_TTYOU = 0x0010, // Waiting for terminal output.
|
||||
PID_ORPHANED = 0x0020, // Member of an orphaned process group.
|
||||
PID_ACTIVE = 0x0040, // Pid accepts signals.
|
||||
PID_CYGPARENT = 0x0080, // Set if parent was a cygwin app.
|
||||
PID_SPLIT_HEAP = 0x0100, // Set if the heap has been split,
|
||||
// which means we can't fork again.
|
||||
PID_CLEAR = 0x0200, // Flag that pid should be cleared from parent's
|
||||
// wait list
|
||||
PID_SOCKETS_USED = 0x0400, // Set if process uses Winsock.
|
||||
PID_INITIALIZING = 0x0800, // Set until ready to receive signals.
|
||||
PID_USETTY = 0x1000, // Setting this enables or disables cygwin's
|
||||
// tty support. This is inherited by
|
||||
// all execed or forked processes.
|
||||
PID_REPARENT = 0x2000 // child has execed
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
|
|
@ -154,7 +154,8 @@ getopt_long(nargc, nargv, options, long_options, index)
|
|||
|
||||
if ((retval = getopt_internal(nargc, nargv, options)) == -2) {
|
||||
char *current_argv = nargv[optind++] + 2, *has_equal;
|
||||
int i, current_argv_len, match = -1;
|
||||
int i, match = -1;
|
||||
size_t current_argv_len;
|
||||
|
||||
if (*current_argv == '\0') {
|
||||
return(-1);
|
||||
|
|
|
@ -505,6 +505,12 @@ thread_pipe (void *arg)
|
|||
goto out;
|
||||
}
|
||||
}
|
||||
/* Paranoid check */
|
||||
if (pi->stop_thread_pipe)
|
||||
{
|
||||
select_printf ("stopping from outer loop");
|
||||
break;
|
||||
}
|
||||
if (gotone)
|
||||
break;
|
||||
Sleep (10);
|
||||
|
|
|
@ -144,30 +144,6 @@ public:
|
|||
#define ISSTATE(p, f) (!!((p)->process_state & f))
|
||||
#define NOTSTATE(p, f) (!((p)->process_state & f))
|
||||
|
||||
/* Flags associated with process_state */
|
||||
enum
|
||||
{
|
||||
PID_NOT_IN_USE = 0x0000, // Free entry.
|
||||
PID_IN_USE = 0x0001, // Entry in use.
|
||||
PID_ZOMBIE = 0x0002, // Child exited: no parent wait.
|
||||
PID_STOPPED = 0x0004, // Waiting for SIGCONT.
|
||||
PID_TTYIN = 0x0008, // Waiting for terminal input.
|
||||
PID_TTYOU = 0x0010, // Waiting for terminal output.
|
||||
PID_ORPHANED = 0x0020, // Member of an orphaned process group.
|
||||
PID_ACTIVE = 0x0040, // Pid accepts signals.
|
||||
PID_CYGPARENT = 0x0080, // Set if parent was a cygwin app.
|
||||
PID_SPLIT_HEAP = 0x0100, // Set if the heap has been split,
|
||||
// which means we can't fork again.
|
||||
PID_CLEAR = 0x0200, // Flag that pid should be cleared from parent's
|
||||
// wait list
|
||||
PID_SOCKETS_USED = 0x0400, // Set if process uses Winsock.
|
||||
PID_INITIALIZING = 0x0800, // Set until ready to receive signals.
|
||||
PID_USETTY = 0x1000, // Setting this enables or disables cygwin's
|
||||
// tty support. This is inherited by
|
||||
// all execed or forked processes.
|
||||
PID_REPARENT = 0x2000 // child has execed
|
||||
};
|
||||
|
||||
#define PSIZE 128
|
||||
|
||||
class pinfo_list
|
||||
|
|
Loading…
Reference in New Issue