diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2020-08-27 21:38:50 +0200 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2020-08-28 09:44:18 +0200 |
commit | 0a31ad6f4c8bf18864b0be3546b402db0a6108f7 (patch) | |
tree | 02611382942394ed409cbbfde9438f5a7b5e9905 /winsup | |
parent | 49a9ffdf4bcb3388cde5e4f441dd710701136ba7 (diff) | |
download | newlib-0a31ad6f4c8bf18864b0be3546b402db0a6108f7.zip newlib-0a31ad6f4c8bf18864b0be3546b402db0a6108f7.tar.gz newlib-0a31ad6f4c8bf18864b0be3546b402db0a6108f7.tar.bz2 |
Cygwin: fix up proc_subproc flags and matching pinfo methods
After patch 23a779bf3d7c2afc9eab88f6b8727c1db5544547
"Cygwin: pinfo: stop remember doing reattach",
PROC_ADDCHILD actually just sets up a new child, mirroring
PROC_DETACHED_CHILD. The actual attaching of the child is
performed by action PROC_REATTACH_CHILD or pinfo::reattach
respectively.
To better reflect what's going on, rename PROC_REATTACH_CHILD
to PROC_ATTACH_CHILD and rename pinfo::reattach to pinfo::attach.
For better readability change PROC_ADDCHILD to PROC_ADD_CHILD.
Fix comments accordingly.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Diffstat (limited to 'winsup')
-rw-r--r-- | winsup/cygwin/fork.cc | 4 | ||||
-rw-r--r-- | winsup/cygwin/pinfo.h | 8 | ||||
-rw-r--r-- | winsup/cygwin/sigproc.cc | 11 | ||||
-rw-r--r-- | winsup/cygwin/sigproc.h | 4 | ||||
-rw-r--r-- | winsup/cygwin/spawn.cc | 2 |
5 files changed, 15 insertions, 14 deletions
diff --git a/winsup/cygwin/fork.cc b/winsup/cygwin/fork.cc index 38172ca..43a9273 100644 --- a/winsup/cygwin/fork.cc +++ b/winsup/cygwin/fork.cc @@ -509,11 +509,11 @@ frok::parent (volatile char * volatile stack_here) /* Do not attach to the child before it has successfully initialized. Otherwise we may wait forever, or deliver an orphan SIGCHILD. */ - if (!child.reattach ()) + if (!child.attach ()) { this_errno = EAGAIN; #ifdef DEBUGGING0 - error ("child reattach failed"); + error ("child attach failed"); #endif goto cleanup; } diff --git a/winsup/cygwin/pinfo.h b/winsup/cygwin/pinfo.h index 23f3083..2db7d6a 100644 --- a/winsup/cygwin/pinfo.h +++ b/winsup/cygwin/pinfo.h @@ -187,18 +187,18 @@ public: void preserve () { destroy = false; } void allow_remove () { destroy = true; } #ifndef SIG_BAD_MASK // kludge to ensure that sigproc.h included - // int reattach () {system_printf ("reattach is not here"); return 0;} + // int attach () {system_printf ("attach is not here"); return 0;} // int remember (bool) {system_printf ("remember is not here"); return 0;} #else - int reattach () + int attach () { - int res = proc_subproc (PROC_REATTACH_CHILD, (uintptr_t) this); + int res = proc_subproc (PROC_ATTACH_CHILD, (uintptr_t) this); destroy = res ? false : true; return res; } int remember (bool detach) { - int res = proc_subproc (detach ? PROC_DETACHED_CHILD : PROC_ADDCHILD, + int res = proc_subproc (detach ? PROC_DETACHED_CHILD : PROC_ADD_CHILD, (uintptr_t) this); destroy = res ? false : true; return res; diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index a5cf73b..b29835e 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -195,7 +195,7 @@ proc_subproc (DWORD what, uintptr_t val) /* Add a new subprocess to the children arrays. * (usually called from the main thread) */ - case PROC_ADDCHILD: + case PROC_ADD_CHILD: /* Filled up process table? */ if (nprocs >= NPROCS) { @@ -217,11 +217,12 @@ proc_subproc (DWORD what, uintptr_t val) vchild->ctty = myself->ctty; vchild->cygstarted = true; vchild->process_state |= PID_INITIALIZING; - vchild->ppid = what == PROC_DETACHED_CHILD ? 1 : myself->pid; /* always set last */ + vchild->ppid = what == PROC_DETACHED_CHILD + ? 1 : myself->pid; /* always set last */ } break; - case PROC_REATTACH_CHILD: + case PROC_ATTACH_CHILD: procs[nprocs] = vchild; rc = procs[nprocs].wait (); if (rc) @@ -879,7 +880,7 @@ child_info_spawn::wait_for_myself () { postfork (myself); if (myself.remember (false)) - myself.reattach (); + myself.attach (); WaitForSingleObject (ev, INFINITE); } @@ -973,7 +974,7 @@ cygheap_exec_info::reattach_children (HANDLE parent) pinfo p (parent, children[i].p, children[i].pid); if (!p) debug_only_printf ("couldn't reattach child %d from previous process", children[i].pid); - else if (!p.reattach ()) + else if (!p.attach ()) debug_only_printf ("attach of child process %d failed", children[i].pid); else debug_only_printf ("reattached pid %d<%u>, process handle %p, rd_proc_pipe %p->%p", diff --git a/winsup/cygwin/sigproc.h b/winsup/cygwin/sigproc.h index f8f92d3..f6702f4 100644 --- a/winsup/cygwin/sigproc.h +++ b/winsup/cygwin/sigproc.h @@ -30,8 +30,8 @@ enum enum procstuff { - PROC_ADDCHILD = 1, // add a new subprocess to list - PROC_REATTACH_CHILD = 2, // reattach after exec + PROC_ADD_CHILD = 1, // set up a new child + PROC_ATTACH_CHILD = 2, // attach child or reattach after exec PROC_EXEC_CLEANUP = 3, // cleanup waiting children after exec PROC_DETACHED_CHILD = 4, // set up a detached child PROC_CLEARWAIT = 5, // clear all waits - signal arrived diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc index 8308bcc..1efcdb3 100644 --- a/winsup/cygwin/spawn.cc +++ b/winsup/cygwin/spawn.cc @@ -869,7 +869,7 @@ child_info_spawn::worker (const char *prog_arg, const char *const *argv, postfork (child); if (mode == _P_DETACH ? !child.remember (true) - : !(child.remember (false) && child.reattach ())) + : !(child.remember (false) && child.attach ())) { /* FIXME: Child in strange state now */ CloseHandle (pi.hProcess); |