This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Patch: platform usleep function


Tom> I'll check it all in a bit later.

Patch appended.  I'm checking this in on the trunk and branch.

Tom

Index: ChangeLog
from  Tom Tromey  <tromey@redhat.com>
	Ranjit Mathew  <rmathew@hotmail.com>

	Fix for PR libgcj/8997:
	* java/lang/natObject.cc (spin): Use _Jv_platform_usleep.
	Include platform.h.
	* include/posix.h (_Jv_platform_usleep): New function.
	* include/win32.h (_Jv_platform_usleep): New function.

Index: include/posix.h
===================================================================
RCS file: /cvs/gcc/gcc/libjava/include/posix.h,v
retrieving revision 1.13
diff -u -r1.13 posix.h
--- include/posix.h 10 Dec 2002 01:39:32 -0000 1.13
+++ include/posix.h 31 Dec 2002 17:42:43 -0000
@@ -60,6 +60,12 @@
   ::fcntl (fd, F_SETFD, FD_CLOEXEC);
 }
 
+inline void
+_Jv_platform_usleep (unsigned long usecs)
+{
+  usleep (usecs);
+}
+
 #ifndef DISABLE_JAVA_NET
 
 #ifndef HAVE_SOCKLEN_T
Index: include/win32.h
===================================================================
RCS file: /cvs/gcc/gcc/libjava/include/win32.h,v
retrieving revision 1.16
diff -u -r1.16 win32.h
--- include/win32.h 10 Dec 2002 21:24:47 -0000 1.16
+++ include/win32.h 31 Dec 2002 17:42:43 -0000
@@ -48,6 +48,19 @@
   // Ignore.
 }
 
+/* Suspends the execution of the current thread for the specified
+   number of microseconds.  Tries to emulate the behaviour of usleep()
+   on UNIX and provides a granularity of 1 millisecond.  */
+inline void
+_Jv_platform_usleep (unsigned long usecs)
+{
+  if (usecs > 0UL)
+    {
+      unsigned long millis = ((usecs + 999UL) / 1000UL);
+      Sleep (millis);
+    }
+}
+
 #ifndef DISABLE_JAVA_NET
 
 static inline int
Index: java/lang/natObject.cc
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/lang/natObject.cc,v
retrieving revision 1.23
diff -u -r1.23 natObject.cc
--- java/lang/natObject.cc 21 Oct 2002 01:50:14 -0000 1.23
+++ java/lang/natObject.cc 31 Dec 2002 17:42:44 -0000
@@ -1,6 +1,6 @@
 // natObject.cc - Implementation of the Object class.
 
-/* Copyright (C) 1998, 1999, 2000, 2001  Free Software Foundation
+/* Copyright (C) 1998, 1999, 2000, 2001, 2002  Free Software Foundation
 
    This file is part of libgcj.
 
@@ -28,6 +28,8 @@
 #include <java/lang/Cloneable.h>
 #include <java/lang/Thread.h>
 
+#include "platform.h"
+
 #ifdef LOCK_DEBUG
 #  include <stdio.h>
 #endif
@@ -532,7 +534,7 @@
       unsigned duration = MIN_SLEEP_USECS << (n - yield_limit);
       if (n >= 15 + yield_limit || duration > MAX_SLEEP_USECS)
         duration = MAX_SLEEP_USECS;
-      java::lang::Thread::sleep(0, duration);
+      _Jv_platform_usleep(duration);
     }
 }
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]