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

Reply via email to