Skip to content

Commit

Permalink
- add nanosleep
Browse files Browse the repository at this point in the history
- expose nanosleep and usleep
- [DOC] time_ nanosleep and time_ sleep_ until available on windows
  • Loading branch information
pierrejoye committed Jan 19, 2009
1 parent c4d2527 commit b54a6fc
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 2 deletions.
13 changes: 12 additions & 1 deletion win32/time.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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 */
Expand Down
10 changes: 10 additions & 0 deletions win32/time.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand All @@ -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
2 changes: 1 addition & 1 deletion win32/unistd.h
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit b54a6fc

Please sign in to comment.