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-09-02 00:54:22 +0400
committerChristopher Faylor <me@cgf.cx>2000-09-02 00:54:22 +0400
commit488c7683e311fe19bb0c2d03e3a260ac9f95e86b (patch)
treeaf99406e50c4c9b97de29ca58ea00b150acaf9e9 /winsup/cygwin/child_info.h
parentb13be6f6fb07be0120e0e3e8593ad2f9453a4764 (diff)
* sigproc.cc (proc_info): Rename proc_exists which takes a pid to "pid_exists".
* shared.h: Split out "child_info" stuff into a new header file and use where necessary. Declare pid_exists. * child_info.h: New file.
Diffstat (limited to 'winsup/cygwin/child_info.h')
-rw-r--r--winsup/cygwin/child_info.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/winsup/cygwin/child_info.h b/winsup/cygwin/child_info.h
new file mode 100644
index 000000000..7e47b591a
--- /dev/null
+++ b/winsup/cygwin/child_info.h
@@ -0,0 +1,63 @@
+/* childinfo.h: shared child info for cygwin
+
+ Copyright 2000 Red Hat, Inc.
+
+This file is part of Cygwin.
+
+This software is a copyrighted work licensed under the terms of the
+Cygwin license. Please consult the file "CYGWIN_LICENSE" for
+details. */
+
+enum
+{
+ PROC_MAGIC = 0xaf08f000,
+ PROC_FORK = PROC_MAGIC + 1,
+ PROC_EXEC = PROC_MAGIC + 2,
+ PROC_SPAWN = PROC_MAGIC + 3,
+ PROC_FORK1 = PROC_MAGIC + 4 // Newer versions provide stack
+ // location information
+};
+
+#define PROC_MAGIC_MASK 0xff00f000
+#define PROC_MAGIC_GENERIC 0xaf00f000
+#define PROC_MAGIC_VER_MASK 0x0ff0000
+
+#define EXEC_MAGIC_SIZE sizeof(child_info)
+class child_info
+{
+public:
+ DWORD zero[1]; // must be zeroed
+ DWORD cb; // size of this record
+ DWORD type; // type of record
+ int cygpid; // cygwin pid of child process
+ HANDLE subproc_ready; // used for synchronization with parent
+ HANDLE shared_h;
+ HANDLE console_h;
+ HANDLE parent_alive; // handle of thread used to track children
+ HANDLE myself_pinfo;
+ ~child_info ()
+ {
+ if (myself_pinfo)
+ CloseHandle (myself_pinfo);
+ }
+};
+
+class child_info_fork: public child_info
+{
+public:
+ HANDLE forker_finished;// for synchronization with child
+ DWORD stacksize; // size of parent stack
+ void *heaptop;
+ void *heapbase;
+ void *heapptr;
+ jmp_buf jmp; // where child will jump to
+ void *stacktop; // location of top of parent stack
+ void *stackbottom; // location of bottom of parent stack
+};
+
+void __stdcall init_child_info (DWORD, child_info *, int, HANDLE);
+
+extern child_info_fork *child_proc_info;
+
+/* non-NULL if this process is a child of a cygwin process */
+extern HANDLE parent_alive;