iliaa Wed Nov 12 17:02:38 2003 EDT
Modified files:
/php-src NEWS
/php-src/ext/standard basic_functions.c basic_functions.h
Log:
Added nanosleep(), in addition to allowing setting of very short states.
This function is signal safe.
Index: php-src/NEWS
diff -u php-src/NEWS:1.1495 php-src/NEWS:1.1496
--- php-src/NEWS:1.1495 Wed Nov 12 16:48:19 2003
+++ php-src/NEWS Wed Nov 12 17:02:36 2003
@@ -1,7 +1,9 @@
PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? Oct 2003, PHP 5 Beta 3
-- Added dba_key_split() to split inifile keys in an array. (Marcus)
+- Added new functions:
+ . dba_key_split() to split inifile keys in an array. (Marcus)
+ . nanosleep() signal safe sleep (Magnus, Ilia)
- Fixed bug #26083 (Non-working write support in ext/dom). (Ilia)
- Fixed bug #24394 (Serializing cross-referenced objects causes segfault).
(Moriyoshi)
Index: php-src/ext/standard/basic_functions.c
diff -u php-src/ext/standard/basic_functions.c:1.638
php-src/ext/standard/basic_functions.c:1.639
--- php-src/ext/standard/basic_functions.c:1.638 Sun Nov 9 23:12:38 2003
+++ php-src/ext/standard/basic_functions.c Wed Nov 12 17:02:37 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: basic_functions.c,v 1.638 2003/11/10 04:12:38 iliaa Exp $ */
+/* $Id: basic_functions.c,v 1.639 2003/11/12 22:02:37 iliaa Exp $ */
#include "php.h"
#include "php_streams.h"
@@ -301,6 +301,7 @@
PHP_FE(bin2hex,
NULL)
PHP_FE(sleep,
NULL)
PHP_FE(usleep,
NULL)
+ PHP_FE(nanosleep,
NULL)
PHP_FE(time,
NULL)
PHP_FE(mktime,
NULL)
PHP_FE(gmmktime,
NULL)
@@ -1687,6 +1688,34 @@
convert_to_long_ex(num);
usleep(Z_LVAL_PP(num));
#endif
+}
+/* }}} */
+
+/* {{{ proto mixed nanosleep(long seconds, long nanoseconds)
+ Delay for a number of seconds and nano seconds */
+PHP_FUNCTION(nanosleep)
+{
+ long tv_sec, tv_nsec;
+ struct timespec php_req, php_rem;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &tv_sec, &tv_nsec))
{
+ WRONG_PARAM_COUNT;
+ }
+
+ php_req.tv_sec = (time_t) tv_sec;
+ php_req.tv_nsec = tv_nsec;
+ if (!nanosleep(&php_req, &php_rem)) {
+ RETURN_TRUE;
+ } else if (errno == EINTR) {
+ array_init(return_value);
+ add_assoc_long_ex(return_value, "seconds", sizeof("seconds"),
php_rem.tv_sec);
+ add_assoc_long_ex(return_value, "nanoseconds", sizeof("nanoseconds"),
php_rem.tv_nsec);
+ return;
+ } else if (errno == EINVAL) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "nanoseconds was not in
the range 0 to 999 999 999 or seconds was negative");
+ }
+
+ RETURN_FALSE;
}
/* }}} */
Index: php-src/ext/standard/basic_functions.h
diff -u php-src/ext/standard/basic_functions.h:1.125
php-src/ext/standard/basic_functions.h:1.126
--- php-src/ext/standard/basic_functions.h:1.125 Fri Nov 7 04:26:18 2003
+++ php-src/ext/standard/basic_functions.h Wed Nov 12 17:02:37 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: basic_functions.h,v 1.125 2003/11/07 09:26:18 helly Exp $ */
+/* $Id: basic_functions.h,v 1.126 2003/11/12 22:02:37 iliaa Exp $ */
#ifndef BASIC_FUNCTIONS_H
#define BASIC_FUNCTIONS_H
@@ -48,6 +48,7 @@
PHP_FUNCTION(toggle_short_open_tag);
PHP_FUNCTION(sleep);
PHP_FUNCTION(usleep);
+PHP_FUNCTION(nanosleep);
PHP_FUNCTION(flush);
PHP_FUNCTION(ip2long);
PHP_FUNCTION(long2ip);
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php