1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 08:12:21 +01:00
- add nanosleep
 - expose nanosleep and usleep
 - [DOC] time_ nanosleep and time_ sleep_ until available on windows
 - change nanosleep signature to match posix one
This commit is contained in:
Pierre Joye
2009-01-19 02:35:22 +00:00
parent e77326faba
commit 274dad3b83
5 changed files with 25 additions and 2 deletions

View File

@@ -39,6 +39,7 @@
#ifdef PHP_WIN32
#include "win32/php_win32_globals.h"
#include "win32/time.h"
#endif
typedef struct yy_buffer_state *YY_BUFFER_STATE;

View File

@@ -53,6 +53,7 @@
/* its in win32/time.c */
#define HAVE_USLEEP 1
#define HAVE_NANOSLEEP 1
#define HAVE_GETHOSTNAME 1
#define HAVE_GETCWD 1

View File

@@ -127,7 +127,7 @@ PHPAPI int gettimeofday(struct timeval *time_Info, struct timezone *timezone_Inf
return 0;
}
void usleep(unsigned int useconds)
PHPAPI int usleep(unsigned int useconds)
{
HANDLE timer;
LARGE_INTEGER due;
@@ -138,6 +138,17 @@ void usleep(unsigned int useconds)
SetWaitableTimer(timer, &due, 0, NULL, NULL, 0);
WaitForSingleObject(timer, INFINITE);
CloseHandle(timer);
return 0;
}
PHPAPI int nanosleep( const struct timespec * rqtp, struct timespec * rmtp )
{
if (rqtp->tv_nsec > 999999999) {
/* The time interval specified 1,000,000 or more microseconds. */
errno = EINVAL;
return -1;
}
return usleep( rqtp->tv_sec * 1000000 + rqtp->tv_nsec / 1000 );
}
#if 0 /* looks pretty ropey in here */

View File

@@ -28,6 +28,14 @@ struct itimerval {
struct timeval it_value; /* current value */
};
#ifndef timespec
struct timespec
{
time_t tv_sec; /* seconds */
long tv_nsec; /* nanoseconds */
};
#endif
#define ITIMER_REAL 0 /*generates sigalrm */
#define ITIMER_VIRTUAL 1 /*generates sigvtalrm */
#define ITIMER_VIRT 1 /*generates sigvtalrm */
@@ -40,4 +48,6 @@ PHPAPI extern int gettimeofday(struct timeval *time_Info, struct timezone *timez
PHPAPI extern int setitimer(int which, const struct itimerval *value,
struct itimerval *ovalue);
PHPAPI int nanosleep( const struct timespec * rqtp, struct timespec * rmtp );
#endif

View File

@@ -1,4 +1,4 @@
#ifndef _PHP_WIN32_UNISTD_H
#define _PHP_WIN32_UNISTD_H
void usleep(unsigned int useconds);
PHPAPI int usleep(unsigned int useconds);
#endif