Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2000-05-18 22:32:05 +0400
committerChristopher Faylor <me@cgf.cx>2000-05-18 22:32:05 +0400
commit2a6a56c227b8649b3f3f3f6cd1648305e82d3aab (patch)
tree5b83bf7ef5d58eac8652019f02f7deb545e7c054
parent6c7395bfce9491415d6672bc97a7f6e70fd07fd9 (diff)
* 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.
-rw-r--r--winsup/cygwin/ChangeLog11
-rw-r--r--winsup/cygwin/external.cc1
-rw-r--r--winsup/cygwin/include/sys/cygwin.h69
-rw-r--r--winsup/cygwin/libc/getopt.c3
-rw-r--r--winsup/cygwin/select.cc6
-rw-r--r--winsup/cygwin/shared.h24
6 files changed, 88 insertions, 26 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 33cef2ecf..e0b2dfd6a 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -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
diff --git a/winsup/cygwin/external.cc b/winsup/cygwin/external.cc
index ccbcb7782..11448fd2f 100644
--- a/winsup/cygwin/external.cc
+++ b/winsup/cygwin/external.cc
@@ -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)
diff --git a/winsup/cygwin/include/sys/cygwin.h b/winsup/cygwin/include/sys/cygwin.h
index 3a3dd6e9b..ff891cc10 100644
--- a/winsup/cygwin/include/sys/cygwin.h
+++ b/winsup/cygwin/include/sys/cygwin.h
@@ -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
diff --git a/winsup/cygwin/libc/getopt.c b/winsup/cygwin/libc/getopt.c
index a5883f07c..b09e133a6 100644
--- a/winsup/cygwin/libc/getopt.c
+++ b/winsup/cygwin/libc/getopt.c
@@ -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);
diff --git a/winsup/cygwin/select.cc b/winsup/cygwin/select.cc
index 8d4b34c94..08fba1256 100644
--- a/winsup/cygwin/select.cc
+++ b/winsup/cygwin/select.cc
@@ -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);
diff --git a/winsup/cygwin/shared.h b/winsup/cygwin/shared.h
index d4f9c5bfb..ee0aef46b 100644
--- a/winsup/cygwin/shared.h
+++ b/winsup/cygwin/shared.h
@@ -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