From babc4e5424c9c850d6e7111f98edc40f5282c507 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Fri, 19 Aug 2005 14:56:48 +0000 Subject: [PATCH] * winsup.h (create_pipe): Declare new function. (CreatePipe): New define. * miscfuncs.cc (create_pipe): Define new function. --- winsup/cygwin/ChangeLog | 6 ++++++ winsup/cygwin/miscfuncs.cc | 14 ++++++++++++++ winsup/cygwin/winsup.h | 4 ++++ 3 files changed, 24 insertions(+) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 009e291b7..19092a3e7 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,9 @@ +2005-08-19 Christopher Faylor + + * winsup.h (create_pipe): Declare new function. + (CreatePipe): New define. + * miscfuncs.cc (create_pipe): Define new function. + 2005-08-18 Christopher Faylor * fhandler.h (fhandler_tty_common::lseek): Declare new method. diff --git a/winsup/cygwin/miscfuncs.cc b/winsup/cygwin/miscfuncs.cc index 18e8bb103..26686bd2b 100644 --- a/winsup/cygwin/miscfuncs.cc +++ b/winsup/cygwin/miscfuncs.cc @@ -347,3 +347,17 @@ nice_to_winprio (int &nice) prio = NORMAL_PRIORITY_CLASS; return prio; } + +#undef CreatePipe +bool +create_pipe (PHANDLE hr,PHANDLE hw, LPSECURITY_ATTRIBUTES sa, DWORD n) +{ + for (int i = 0; i < 10; i++) + if (CreatePipe (hr, hw, sa, n)) + return true; + else if (GetLastError () == ERROR_PIPE_BUSY && i < 9) + Sleep (10); + else + break; + return false; +} diff --git a/winsup/cygwin/winsup.h b/winsup/cygwin/winsup.h index fdc8566d7..2bc40b170 100644 --- a/winsup/cygwin/winsup.h +++ b/winsup/cygwin/winsup.h @@ -308,6 +308,10 @@ size_t getshmlba (); int winprio_to_nice (DWORD) __attribute__ ((regparm (1))); DWORD nice_to_winprio (int &) __attribute__ ((regparm (1))); +bool __stdcall create_pipe (PHANDLE hr, PHANDLE, LPSECURITY_ATTRIBUTES, DWORD) + __attribute__ ((regparm (3))); +#define CreatePipe create_pipe + /**************************** Exports ******************************/ extern "C" {