[前][次][番号順一覧][スレッド一覧]

ruby-changes:30478

From: usa <ko1@a...>
Date: Thu, 15 Aug 2013 14:32:18 +0900 (JST)
Subject: [ruby-changes:30478] usa:r42557 (trunk): * include/ruby/win32.h, win32/Makefile.sub, win32/win32.c

usa	2013-08-15 14:32:02 +0900 (Thu, 15 Aug 2013)

  New Revision: 42557

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=42557

  Log:
    * include/ruby/win32.h, win32/Makefile.sub, win32/win32.c
      (clock_gettime): [experimental] emulates clock_gettime(2) of posix.

  Modified files:
    trunk/ChangeLog
    trunk/include/ruby/win32.h
    trunk/win32/Makefile.sub
    trunk/win32/win32.c
Index: include/ruby/win32.h
===================================================================
--- include/ruby/win32.h	(revision 42556)
+++ include/ruby/win32.h	(revision 42557)
@@ -124,6 +124,10 @@ typedef unsigned int uintptr_t; https://github.com/ruby/ruby/blob/trunk/include/ruby/win32.h#L124
 
 #define WNOHANG -1
 
+typedef int clockid_t;
+#define CLOCK_REALTIME  0
+#define CLOCK_MONOTINIC 1
+
 #undef getc
 #undef putc
 #undef fgetc
@@ -312,6 +316,7 @@ extern int rb_w32_uchown(const char *, i https://github.com/ruby/ruby/blob/trunk/include/ruby/win32.h#L316
 extern int link(const char *, const char *);
 extern int rb_w32_ulink(const char *, const char *);
 extern int gettimeofday(struct timeval *, struct timezone *);
+extern int clock_gettime(clockid_t, struct timespec *);
 extern rb_pid_t waitpid (rb_pid_t, int *, int);
 extern rb_pid_t rb_w32_spawn(int, const char *, const char*);
 extern rb_pid_t rb_w32_aspawn(int, const char *, char *const *);
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 42556)
+++ ChangeLog	(revision 42557)
@@ -1,3 +1,8 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1
+Thu Aug 15 14:30:23 2013  NAKAMURA Usaku  <usa@r...>
+
+	* include/ruby/win32.h, win32/Makefile.sub, win32/win32.c
+	  (clock_gettime): [experimental] emulates clock_gettime(2) of posix.
+
 Thu Aug 15 02:32:40 2013  Zachary Scott  <e@z...>
 
 	* hash.c (rb_hash_aset): [DOC] Document key dup patch by @kachick
Index: win32/win32.c
===================================================================
--- win32/win32.c	(revision 42556)
+++ win32/win32.c	(revision 42557)
@@ -4310,6 +4310,47 @@ gettimeofday(struct timeval *tv, struct https://github.com/ruby/ruby/blob/trunk/win32/win32.c#L4310
 }
 
 /* License: Ruby's */
+typedef int clockid_t;
+#define CLOCK_REALTIME  0
+#define CLOCK_MONOTONIC 1
+int
+clock_gettime(clockid_t clock_id, struct timespec *sp)
+{
+    switch (clock_id) {
+      case CLOCK_REALTIME:
+	{
+	    struct timeval tv;
+	    gettimeofday(&tv, NULL);
+	    sp->tv_sec = tv.tv_sec;
+	    sp->tv_nsec = tv.tv_usec * 1000;
+	    return 0;
+	}
+      case CLOCK_MONOTONIC:
+	{
+	    LARGE_INTEGER freq;
+	    LARGE_INTEGER count;
+	    if (!QueryPerformanceFrequency(&freq)) {
+		errno = map_errno(GetLastError());
+		return -1;
+	    }
+	    if (!QueryPerformanceCounter(&count)) {
+		errno = map_errno(GetLastError());
+		return -1;
+	    }
+	    sp->tv_sec = count.QuadPart / freq.QuadPart;
+	    if (freq.QuadPart < 1000000000)
+		sp->tv_nsec = (count.QuadPart % freq.QuadPart) * (1000000000 / freq.QuadPart);
+	    else
+		sp->tv_nsec = (long)((count.QuadPart % freq.QuadPart) * (1000000000.0 / freq.QuadPart));
+	    return 0;
+	}
+      default:
+	errno = EINVAL;
+	return -1;
+    }
+}
+
+/* License: Ruby's */
 char *
 rb_w32_getcwd(char *buffer, int size)
 {
Index: win32/Makefile.sub
===================================================================
--- win32/Makefile.sub	(revision 42556)
+++ win32/Makefile.sub	(revision 42557)
@@ -536,6 +536,8 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/ https://github.com/ruby/ruby/blob/trunk/win32/Makefile.sub#L536
 #define TIMET2NUM(v) LONG2NUM(v)
 #define NUM2TIMET(v) NUM2LONG(v)
 !endif
+#define CLOCKID2NUM(v) INT2NUM(v)
+#define NUM2CLOCKID(v) NUM2INT(v)
 #define SIZEOF_RLIM_T 0
 !if "$(ARCH)" == "x64" || "$(ARCH)" == "ia64"
 #define SIZEOF_SIZE_T 8
@@ -638,6 +640,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/ https://github.com/ruby/ruby/blob/trunk/win32/Makefile.sub#L640
 #define HAVE_MEMCMP 1
 #define HAVE_MEMMOVE 1
 #define HAVE_MKDIR 1
+#define HAVE_CLOCK_GETTIME 1
 #define HAVE_SPAWNV 1
 #define HAVE_STRCASECMP 1
 #define HAVE_STRNCASECMP 1

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]