}
-int OS::GetUserTime(uint32_t* secs, uint32_t* usecs) {
- struct rusage usage;
-
- if (getrusage(RUSAGE_SELF, &usage) < 0) return -1;
- *secs = usage.ru_utime.tv_sec;
- *usecs = usage.ru_utime.tv_usec;
- return 0;
-}
-
-
-double OS::TimeCurrentMillis() {
- struct timeval tv;
- if (gettimeofday(&tv, NULL) < 0) return 0.0;
- return (static_cast<double>(tv.tv_sec) * 1000) +
- (static_cast<double>(tv.tv_usec) / 1000);
-}
-
-
-int64_t OS::Ticks() {
- // FreeBSD's gettimeofday has microsecond resolution.
- struct timeval tv;
- if (gettimeofday(&tv, NULL) < 0)
- return 0;
- return (static_cast<int64_t>(tv.tv_sec) * 1000000) + tv.tv_usec;
-}
-
-
-char* OS::LocalTimezone(double time) {
- time_t tv = static_cast<time_t>(floor(time/msPerSecond));
- struct tm* t = localtime(&tv);
- return const_cast<char*>(t->tm_zone);
-}
-
-
-double OS::DaylightSavingsOffset(double time) {
- time_t tv = static_cast<time_t>(floor(time/msPerSecond));
- struct tm* t = localtime(&tv);
- return t->tm_isdst > 0 ? 3600 * msPerSecond : 0;
-}
-
-
-double OS::LocalTimeOffset() {
- time_t tv = time(NULL);
- struct tm* t = localtime(&tv);
- // tm_gmtoff includes any daylight savings offset, so subtract it.
- return static_cast<double>(t->tm_gmtoff * msPerSecond -
- (t->tm_isdst > 0 ? 3600 * msPerSecond : 0));
-}
-
-
FILE* OS::FOpen(const char* path, const char* mode) {
return fopen(path, mode);
}
}
-int OS::GetUserTime(uint32_t* secs, uint32_t* usecs) {
- struct rusage usage;
-
- if (getrusage(RUSAGE_SELF, &usage) < 0) return -1;
- *secs = usage.ru_utime.tv_sec;
- *usecs = usage.ru_utime.tv_usec;
- return 0;
-}
-
-
-double OS::TimeCurrentMillis() {
- struct timeval tv;
- if (gettimeofday(&tv, NULL) < 0) return 0.0;
- return (static_cast<double>(tv.tv_sec) * 1000) +
- (static_cast<double>(tv.tv_usec) / 1000);
-}
-
-
-int64_t OS::Ticks() {
- // Linux's gettimeofday has microsecond resolution.
- struct timeval tv;
- if (gettimeofday(&tv, NULL) < 0)
- return 0;
- return (static_cast<int64_t>(tv.tv_sec) * 1000000) + tv.tv_usec;
-}
-
-
-char* OS::LocalTimezone(double time) {
- time_t tv = static_cast<time_t>(floor(time/msPerSecond));
- struct tm* t = localtime(&tv);
- return const_cast<char*>(t->tm_zone);
-}
-
-
-double OS::DaylightSavingsOffset(double time) {
- time_t tv = static_cast<time_t>(floor(time/msPerSecond));
- struct tm* t = localtime(&tv);
- return t->tm_isdst > 0 ? 3600 * msPerSecond : 0;
-}
-
-
-double OS::LocalTimeOffset() {
- time_t tv = time(NULL);
- struct tm* t = localtime(&tv);
- // tm_gmtoff includes any daylight savings offset, so subtract it.
- return static_cast<double>(t->tm_gmtoff * msPerSecond -
- (t->tm_isdst > 0 ? 3600 * msPerSecond : 0));
-}
-
-
FILE* OS::FOpen(const char* path, const char* mode) {
return fopen(path, mode);
}
}
-int OS::GetUserTime(uint32_t* secs, uint32_t* usecs) {
- struct rusage usage;
-
- if (getrusage(RUSAGE_SELF, &usage) < 0) return -1;
- *secs = usage.ru_utime.tv_sec;
- *usecs = usage.ru_utime.tv_usec;
- return 0;
-}
-
-
-double OS::TimeCurrentMillis() {
- struct timeval tv;
- if (gettimeofday(&tv, NULL) < 0) return 0.0;
- return (static_cast<double>(tv.tv_sec) * 1000) +
- (static_cast<double>(tv.tv_usec) / 1000);
-}
-
-
-int64_t OS::Ticks() {
- // Mac OS's gettimeofday has microsecond resolution.
- struct timeval tv;
- if (gettimeofday(&tv, NULL) < 0)
- return 0;
- return (static_cast<int64_t>(tv.tv_sec) * 1000000) + tv.tv_usec;
-}
-
-
-char* OS::LocalTimezone(double time) {
- time_t tv = static_cast<time_t>(floor(time/msPerSecond));
- struct tm* t = localtime(&tv);
- return const_cast<char*>(t->tm_zone);
-}
-
-
-double OS::DaylightSavingsOffset(double time) {
- time_t tv = static_cast<time_t>(floor(time/msPerSecond));
- struct tm* t = localtime(&tv);
- return t->tm_isdst > 0 ? 3600 * msPerSecond : 0;
-}
-
-
-double OS::LocalTimeOffset() {
- time_t tv = time(NULL);
- struct tm* t = localtime(&tv);
- // tm_gmtoff includes any daylight savings offset, so subtract it.
- return static_cast<double>(t->tm_gmtoff * msPerSecond -
- (t->tm_isdst > 0 ? 3600 * msPerSecond : 0));
-}
-
-
FILE* OS::FOpen(const char* path, const char* mode) {
return fopen(path, mode);
}
#include <unistd.h>
#include <errno.h>
+#include <time.h>
#include <sys/socket.h>
+#include <sys/resource.h>\r
+#include <sys/time.h>\r
#include <sys/types.h>
#include <arpa/inet.h>
namespace v8 { namespace internal {
+// ----------------------------------------------------------------------------
+// POSIX date/time support.
+//
+
+int OS::GetUserTime(uint32_t* secs, uint32_t* usecs) {\r
+ struct rusage usage;\r
+\r
+ if (getrusage(RUSAGE_SELF, &usage) < 0) return -1;\r
+ *secs = usage.ru_utime.tv_sec;\r
+ *usecs = usage.ru_utime.tv_usec;\r
+ return 0;\r
+}\r
+\r
+\r
+double OS::TimeCurrentMillis() {\r
+ struct timeval tv;\r
+ if (gettimeofday(&tv, NULL) < 0) return 0.0;\r
+ return (static_cast<double>(tv.tv_sec) * 1000) +\r
+ (static_cast<double>(tv.tv_usec) / 1000);\r
+}\r
+\r
+\r
+int64_t OS::Ticks() {\r
+ // gettimeofday has microsecond resolution.\r
+ struct timeval tv;\r
+ if (gettimeofday(&tv, NULL) < 0)\r
+ return 0;\r
+ return (static_cast<int64_t>(tv.tv_sec) * 1000000) + tv.tv_usec;\r
+}\r
+\r
+\r
+char* OS::LocalTimezone(double time) {\r
+ time_t tv = static_cast<time_t>(floor(time/msPerSecond));\r
+ struct tm* t = localtime(&tv);\r
+ return const_cast<char*>(t->tm_zone);\r
+}\r
+\r
+\r
+double OS::DaylightSavingsOffset(double time) {\r
+ time_t tv = static_cast<time_t>(floor(time/msPerSecond));\r
+ struct tm* t = localtime(&tv);\r
+ return t->tm_isdst > 0 ? 3600 * msPerSecond : 0;\r
+}\r
+\r
+\r
+double OS::LocalTimeOffset() {\r
+ time_t tv = time(NULL);\r
+ struct tm* t = localtime(&tv);\r
+ // tm_gmtoff includes any daylight savings offset, so subtract it.\r
+ return static_cast<double>(t->tm_gmtoff * msPerSecond -\r
+ (t->tm_isdst > 0 ? 3600 * msPerSecond : 0));\r
+}\r
+\r
+\r
// ----------------------------------------------------------------------------
// POSIX socket support.
//