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