internal refactorings:
- pcntl_signal_get_handler() max signals handling simplification,
reusing the num_signals global.
- pcntl_alarm() accepts a zend_long (signed) but passes it to alarm(),
which takes an unsigned int. Negative values silently wrap to large
unsigned values, scheduling an alarm far in the future instead of
raising an error. Also reject large values above unsigned long
max value.
close GH-21282
This functionality is not part of the POSIX interface.
- On FreeBSD, the wait6 system call provides it
- On Linux, the raw waitid system call provides it (glibc does not)
close GH-15921
* Refactor usage of strlcpy
As we allocate the buffer, we know the string will fit inside the buffer.
* Throw ValueErrors when strings contain null bytes
The underlying C calls work with C strings, which are NULL terminated.
* exec_pcntl() always return false
Thus, update stubs to formally have a return type of `false`.
Travis was suspended https://github.com/php/php-src/pull/15314
This removes 404 errored Travis image in README, travis configuration
directory and YAML file and usages in tests.
[skip ci]
Co-authored-by: Gina Peter Banyard <girgias@php.net>
Introducting macOs Quality Of Service through those two calls.
on macOs arm64/M*, there is no concept of individual cores, thus
the old thread policy for cpu affinity does not work here.
Instead, the user can apply to the current process the level of
performance/energy consumption they wish from the highest
QosClass::UserInteractive to QosClass::Background.
Close GH-13945
using sched_getcpu under the hood (Linux and FreeBSD).
Returns the current cpu id for the current process.
For Linux, we need to see beyond the sole presence of the symbol
to consider it.
Mostly useful, for now, in the cpu affinity context since
the os can migrate processes as it sees fits otherwise.
Clos GH-13908
For now, working on Linux, FreeBSD >= 13.x and DragonFlyBSD.
Handy wrapper to assign an array of cpu ids or to retrieve the cpu ids
assigned to a given process.
pcntl_setaffinity inserts valid unique cpu ids (within the range of available
cpus).
Close GH-13893
People relied on manually waiting for children, but the fix for GH-11498
broke this. Fixing this in PHP is fundamentally incompatible with doing
the wait loop in userland. This reverts to the old behaviour.
Closes GH-11863.
The issue might be that due to slow instrumentation the process might end before
we get to add it to the processes list. If the SIGCHLD handler executes before
adding the process to the list it will never be removed again.
Linux, and maybe other unixes, may merge multiple standard signals into
a single one. This causes issues when keeping track of process IDs.
Solve this by manually checking which children are dead using waitpid().
Test case is based on taka-oyama's test code.
Closes GH-11509.
When we run the test under non-root user, the test gets BORKed with:
Warning: pcntl_unshare(): Error 1: No privilege to use these flags in ext/pcntl/tests/pcntl_unshare_03.skip.php on line 8
skip Insufficient privileges for CLONE_NEWUSER
It looks like for the root-user there is the similar warning which is already suppressed (see the following "skip").
Let us skip the test properly if we aren't able to execute it