History log of /haiku/src/system/libroot/posix/spawn.cpp
Revision Date Author Comments
# bfd87e4c 28-Oct-2022 Augustin Cavalier <waddlesplash@gmail.com>

posix_spawn: Add POSIX_SPAWN_SETSID to the list of allowed flags.


# 285fe625 21-Sep-2022 Jérôme Duval <jerome.duval@gmail.com>

libroot: fix *_np functions signature

fix f33f4868feabef0fbd3b5aaff459e23eedfb7b5a
*_np functions are in a not included header.
add weak aliases for the future functions without _np.

Change-Id: Ie2bcc9173a2b93a6c4052c039cb37930c1c3aaa1
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5685
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 45f4882a 09-Mar-2022 Augustin Cavalier <waddlesplash@gmail.com>

libroot: Allow posix_spawn to use load_image in more cases.

If a spawnattr and file_actions are specified but empty, that
can be treated the same as if they were passed as NULL.


# 0d7d1fcc 27-Aug-2019 Augustin Cavalier <waddlesplash@gmail.com>

libroot: Implement the general case of posix_spawn using load_image.

The goal here is to avoid potentially expensive fork()ing.

The time for a fork() is (for a process with no real heap usage
and thus few areas) 300-400us on my system. load_image() takes
3000us (3ms) or so, but this of course includes exec() time.

Overall, for compiling HaikuDepot (with a tweaked jam to use
posix_spawn on Haiku, not just on Linux) there is a slight
decrease in time:

before:
real 1m21.727s
user 1m2.131s
sys 0m43.029s

after:
real 1m19.472s
user 1m1.752s
sys 0m41.740s

Which is probably within the realm of "noise", so more benchmarks
are needed. Likely if we tweak our jam usage to not need as many
shells when running commands, this would be a much more noticeable
change.

Change-Id: I217f2476b1ed9aa18322b3c2bc8986571d89549a


# f33f4868 05-Feb-2019 Jérôme Duval <jerome.duval@gmail.com>

posix_spawn: add posix_spawn_file_actions_add[f]chdir_np.

see http://austingroupbugs.net/view.php?id=1208
and https://sourceware.org/bugzilla/show_bug.cgi?id=17405

* also free paths in posix_spawn_file_actions_destroy().

Change-Id: I8bed848154025bd5a25322bdc4c25aa417f86ec6
Reviewed-on: https://review.haiku-os.org/c/1010
Reviewed-by: Rene Gollent <rene@gollent.com>


# af615399 04-Feb-2019 Jérôme Duval <jerome.duval@gmail.com>

posix_spawn: add POSIX_SPAWN_SETSID.

see http://austingroupbugs.net/view.php?id=1044

Change-Id: I9ae4fe07ea0fa7e20eb9a1d8c64e971e7353bcff
Reviewed-on: https://review.haiku-os.org/c/1008
Reviewed-by: Rene Gollent <rene@gollent.com>


# c90a0ee9 06-Aug-2018 Jérôme Duval <jerome.duval@gmail.com>

posix_spawn(): dup2() again this time on file_action_dup2.

* fixes #14322.


# 20694a04 02-Aug-2018 Jérôme Duval <jerome.duval@gmail.com>

posix_spawn(): dup2() returns a fd on success, -1 on error.

* duplicate the just opened file descriptor, instead of the target file descriptor.
* fixes #14308.


# 4bb883d9 04-Nov-2017 Jérôme Duval <jerome.duval@gmail.com>

posix_spawn(): use MAX_SIGNAL_NUMBER instead of NSIG.

* fish now works with posix_spawn().


# 04dabcfd 03-Nov-2017 Jérôme Duval <jerome.duval@gmail.com>

posix_spawn(): close the pipe read fd in the parent.

* also enable close-on-exec for the eventually dupped pipe write fd in the child.


# ccd42320 05-Sep-2017 Jérôme Duval <jerome.duval@gmail.com>

libroot: add posix_spawn().