mirror of
https://github.com/php/php-src.git
synced 2026-03-24 08:12:21 +01:00
- MFH:
- 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:
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
13
win32/time.c
13
win32/time.c
@@ -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 */
|
||||
|
||||
10
win32/time.h
10
win32/time.h
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user