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
path: root/winsup
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2014-04-07 15:25:58 +0400
committerCorinna Vinschen <corinna@vinschen.de>2014-04-07 15:25:58 +0400
commit584c857700c38c345299bb1b725845e2481f53c7 (patch)
treebf06a4e659eb2852cc2ac2109587f805ca91403a /winsup
parentd2ee4812487357001f07990c30a32a1346e86178 (diff)
* cygserver_ipc.h (ipc_set_proc_info): Add bool parameter to specify
whether or not to send signal_arrived. * shm.cc (client_request_shm::client_request_shm): Call ipc_set_proc_info with bool parameter set to true to not send signal_arrived.
Diffstat (limited to 'winsup')
-rw-r--r--winsup/cygwin/ChangeLog8
-rw-r--r--winsup/cygwin/cygserver_ipc.h9
-rw-r--r--winsup/cygwin/shm.cc4
3 files changed, 16 insertions, 5 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index e6ea8b4cc..0c85cd7af 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,11 @@
+2014-04-07 Corinna Vinschen <corinna@vinschen.de>
+
+ * cygserver_ipc.h (ipc_set_proc_info): Add bool parameter to specify
+ whether or not to send signal_arrived.
+ * shm.cc (client_request_shm::client_request_shm): Call
+ ipc_set_proc_info with bool parameter set to true to not send
+ signal_arrived.
+
2014-04-04 Corinna Vinschen <corinna@vinschen.de>
* ntea.cc (EA_BUFSIZ): Fix comment.
diff --git a/winsup/cygwin/cygserver_ipc.h b/winsup/cygwin/cygserver_ipc.h
index 4ed3cdf51..52f9f5ddd 100644
--- a/winsup/cygwin/cygserver_ipc.h
+++ b/winsup/cygwin/cygserver_ipc.h
@@ -1,6 +1,6 @@
/* cygserver_ipc.h
- Copyright 2002, 2003, 2004, 2012, 2013 Red Hat, Inc.
+ Copyright 2002, 2003, 2004, 2012, 2013, 2014 Red Hat, Inc.
This file is part of Cygwin.
@@ -34,7 +34,7 @@ struct proc {
#ifdef __INSIDE_CYGWIN__
#include "sigproc.h"
extern inline void
-ipc_set_proc_info (proc &blk)
+ipc_set_proc_info (proc &blk, bool in_fork = false)
{
blk.cygpid = getpid ();
blk.winpid = GetCurrentProcessId ();
@@ -43,7 +43,10 @@ ipc_set_proc_info (proc &blk)
blk.gidcnt = 0;
blk.gidlist = NULL;
blk.is_admin = false;
- _my_tls.set_signal_arrived (true, blk.signal_arrived);
+ if (in_fork)
+ blk.signal_arrived = NULL;
+ else
+ _my_tls.set_signal_arrived (true, blk.signal_arrived);
}
#endif /* __INSIDE_CYGWIN__ */
diff --git a/winsup/cygwin/shm.cc b/winsup/cygwin/shm.cc
index 226d2ee91..03213781a 100644
--- a/winsup/cygwin/shm.cc
+++ b/winsup/cygwin/shm.cc
@@ -1,6 +1,6 @@
/* shm.cc: XSI IPC interface for Cygwin.
- Copyright 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2012, 2013
+ Copyright 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2012, 2013, 2014
Red Hat, Inc.
This file is part of Cygwin.
@@ -85,7 +85,7 @@ client_request_shm::client_request_shm (proc *p1)
: client_request (CYGSERVER_REQUEST_SHM, &_parameters, sizeof (_parameters))
{
_parameters.in.shmop = SHMOP_shmfork;
- ipc_set_proc_info (_parameters.in.ipcblk);
+ ipc_set_proc_info (_parameters.in.ipcblk, true);
_parameters.in.forkargs = *p1;
}