diff options
author | Christopher Faylor <me@cgf.cx> | 2004-12-24 18:31:23 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2004-12-24 18:31:23 +0000 |
commit | e1736c2f135a31a8882199169c2dfc5a99f7ce1b (patch) | |
tree | d8aa6f3b12f911e2ed8d2727ea205a8973e47a69 /winsup/cygwin/pinfo.h | |
parent | 4697fbcd517791570ecc77c32dd9ebf044c4fa03 (diff) | |
download | cygnal-e1736c2f135a31a8882199169c2dfc5a99f7ce1b.tar.gz cygnal-e1736c2f135a31a8882199169c2dfc5a99f7ce1b.tar.bz2 cygnal-e1736c2f135a31a8882199169c2dfc5a99f7ce1b.zip |
* child_info.h (CURR_CHILD_INFO_MAGIC): Update.
(child_info::parent_wr_proc_pipe): Eliminate.
* pinfo.h (_pinfo::alert_parent): Move here from pinfo class.
(_pinfo::dup_proc_pipe): New method.
(_pinfo::sync_proc_pipe): Ditto.
* exceptions.cc (sig_handle_tty_stop): Reflect move of alert_parent.
* init.cc (dll_entry): Exit with status one if main process called ExitProcess.
* pinfo.cc (set_myself): Remove handling of parent_wr_proc_pipe.
(_pinfo::exit): Reflect move of alert_parent. Set procinfo to NULL to flag
that we are exiting normally. Always use exitcode when exiting
(although this could be a little racy).
(pinfo::init): Set default exit to SIGTERM. This will be the exit code
reported if process is terminated.
(_pinfo::dup_proc_pipe): New function.
(pinfo::wait): Duplicate wr_proc_pipe to the right place. Use dup_proc_pipe to
move the pipe to the child.
(_pinfo::sync_proc_pipe): New function.
(_pinfo::alert_parent): Move to _pinfo. Make sure that wr_proc_pipe is ours
before using it.
* sigproc.cc (child_info::child_info): Remove handling of parent_wr_proc_pipe.
* spawn.cc (spawn_guts): Pass our wr_proc_pipe to the child when execing.
Ensure that exit code of cygwin process started from windows is correctly set.
Diffstat (limited to 'winsup/cygwin/pinfo.h')
-rw-r--r-- | winsup/cygwin/pinfo.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/winsup/cygwin/pinfo.h b/winsup/cygwin/pinfo.h index 65168329c..dd998a649 100644 --- a/winsup/cygwin/pinfo.h +++ b/winsup/cygwin/pinfo.h @@ -106,6 +106,9 @@ public: bool alive (); char *cmdline (size_t &); void set_ctty (class tty_min *, int, class fhandler_tty_slave *); + bool dup_proc_pipe (HANDLE) __attribute__ ((regparm(2))); + void sync_proc_pipe (); + bool alert_parent (char); friend void __stdcall set_myself (HANDLE); @@ -117,6 +120,7 @@ private: sigset_t sig_mask; public: HANDLE wr_proc_pipe; + DWORD wr_proc_pipe_owner; friend class pinfo; }; @@ -163,8 +167,6 @@ public: operator _pinfo * () const {return procinfo;} // operator bool () const {return (int) h;} void preserve () { destroy = false; } - bool alert_parent (char); - bool parent_alive () { return alert_parent (__ALERT_ALIVE); } #ifndef _SIGPROC_H int remember () {system_printf ("remember is not here"); return 0;} #else @@ -178,6 +180,7 @@ public: #endif HANDLE shared_handle () {return h;} void set_acl(); + friend class _pinfo; }; #define ISSTATE(p, f) (!!((p)->process_state & f)) |