com php-src: IBM i PASE doesn't support ITIMER_PROF: Zend /zend_execute_API.c Zend/zend_signal.c
| From: | Nikita Popov | Date: | Tue, 15 Dec 2020 09:15:28 +0000 |
| Subject: | com php-src: IBM i PASE doesn't support ITIMER_PROF: Zend /zend_execute_API.c Zend/zend_signal.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-114447@lists.php.net to get a copy of this message | ||
Commit: 54248b18fea80dcb8b7e62550c8566df10e8e935
Author: Calvin Buckley <calvin@cmpct.info> Thu, 10 Dec 2020 14:25:32 -0400
Committer: Nikita Popov <nikita.ppv@gmail.com> Tue, 15 Dec 2020 10:15:28 +0100
Parents: 10c9d615dea8a21437443d76132f973c7f0c5da4
Branches: PHP-7.4 PHP-8.0 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=54248b18fea80dcb8b7e62550c8566df10e8e935
Log:
IBM i PASE doesn't support ITIMER_PROF
Like Cygwin, this platform needs to use a real-time timer.
This was based on a patch by @kadler, but it didn't handle unsetting
the timer, so the timeout would continue to be active, triggering
hard_timeout unexpectedly. The patch is fixed to handle unsetting.
Closes GH-6503.
Changed paths:
M Zend/zend_execute_API.c
M Zend/zend_signal.c
Diff:
diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c
index a62b9292ece..f4f0fa14f1d 100644
--- a/Zend/zend_execute_API.c
+++ b/Zend/zend_execute_API.c
@@ -1294,7 +1294,7 @@ static void zend_set_timeout_ex(zend_long seconds, int reset_signals) /* {{{
*/
t_r.it_value.tv_sec = seconds;
t_r.it_value.tv_usec = t_r.it_interval.tv_sec = t_r.it_interval.tv_usec = 0;
-# ifdef __CYGWIN__
+# if defined(__CYGWIN__) || defined(__PASE__)
setitimer(ITIMER_REAL, &t_r, NULL);
}
signo = SIGALRM;
@@ -1356,7 +1356,7 @@ void zend_unset_timeout(void) /* {{{ */
no_timeout.it_value.tv_sec = no_timeout.it_value.tv_usec = no_timeout.it_interval.tv_sec =
no_timeout.it_interval.tv_usec = 0;
-# ifdef __CYGWIN__
+# if defined(__CYGWIN__) || defined(__PASE__)
setitimer(ITIMER_REAL, &no_timeout, NULL);
# else
setitimer(ITIMER_PROF, &no_timeout, NULL);
diff --git a/Zend/zend_signal.c b/Zend/zend_signal.c
index e69914752ac..7e6eb18068e 100644
--- a/Zend/zend_signal.c
+++ b/Zend/zend_signal.c
@@ -62,7 +62,8 @@ ZEND_API zend_signal_globals_t zend_signal_globals;
static void zend_signal_handler(int signo, siginfo_t *siginfo, void *context);
static int zend_signal_register(int signo, void (*handler)(int, siginfo_t*, void*));
-#ifdef __CYGWIN__
+#if defined(__CYGWIN__) || defined(__PASE__)
+/* Matches zend_excute_API.c; these platforms don't support ITIMER_PROF. */
#define TIMEOUT_SIG SIGALRM
#else
#define TIMEOUT_SIG SIGPROF