This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: optimizing fork/exec in vendor source


Jack Andrews <effbiae <at> gmail.com> writes:

> 
> eric wrote:
> > No, changing bash to use CreateProcess is not the answer.  The real
> > question is whether someone with copyright assignment is willing to write
> > posix_spawn[p], and write it more efficiently than forking,
> 
> this seems to be an easy problem in cygwin (at least, in comparison to fork).

Not so fast.  Yes, it is easy to write posix_spawn on top of fork; gnulib has 
done just that:
http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=shortlog;h=12d62c3

But what is not easy is writing posix_spawn without using fork, in order to 
optimize by using the Windows notion of spawning processes, but while still 
maintaining all other POSIX semantics that cygwin processes need.  In other 
words, gnulib's solution, while it works for cygwin, is no better than fork.  
cgf has already commented on this list (and in fact, even Linus Torvalds has 
mentioned it on the git list) about the potential for speedups with a proper 
posix_spawn, and the difficulty of getting there:
http://sourceware.org/ml/cygwin/2006-11/msg00380.html

You're also forgetting that patching bash to use posix_spawn, while useful in 
its own right, is not trivial (the upstream bash maintainer will probably 
accept such a patch only if it has sane fallbacks onto a fork implementation 
for other systems that lack posix_spawn, but he doesn't use gnulib, nor does he 
post his development repository publicly).

> who has to hold the copyright?

http://cygwin.com/contrib.html
http://cygwin.com/assign.txt

-- 
Eric Blake



--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]