re PR libgcj/8997 (spin() calls Thread.sleep)
2002-12-31 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. Co-Authored-By: Ranjit Mathew <rmathew@hotmail.com> From-SVN: r60700
This commit is contained in:
parent
731e8b3886
commit
35a94bdca8
4 changed files with 32 additions and 2 deletions
|
@ -1,3 +1,12 @@
|
||||||
|
2002-12-31 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.
|
||||||
|
|
||||||
2002-12-29 Tom Tromey <tromey@redhat.com>
|
2002-12-29 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
* gcj/javaprims.h: Updated.
|
* gcj/javaprims.h: Updated.
|
||||||
|
|
|
@ -60,6 +60,12 @@ _Jv_platform_close_on_exec (jint fd)
|
||||||
::fcntl (fd, F_SETFD, FD_CLOEXEC);
|
::fcntl (fd, F_SETFD, FD_CLOEXEC);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline void
|
||||||
|
_Jv_platform_usleep (unsigned long usecs)
|
||||||
|
{
|
||||||
|
usleep (usecs);
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef DISABLE_JAVA_NET
|
#ifndef DISABLE_JAVA_NET
|
||||||
|
|
||||||
#ifndef HAVE_SOCKLEN_T
|
#ifndef HAVE_SOCKLEN_T
|
||||||
|
|
|
@ -48,6 +48,19 @@ _Jv_platform_close_on_exec (jint)
|
||||||
// Ignore.
|
// 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
|
#ifndef DISABLE_JAVA_NET
|
||||||
|
|
||||||
static inline int
|
static inline int
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// natObject.cc - Implementation of the Object class.
|
// 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.
|
This file is part of libgcj.
|
||||||
|
|
||||||
|
@ -28,6 +28,8 @@ details. */
|
||||||
#include <java/lang/Cloneable.h>
|
#include <java/lang/Cloneable.h>
|
||||||
#include <java/lang/Thread.h>
|
#include <java/lang/Thread.h>
|
||||||
|
|
||||||
|
#include "platform.h"
|
||||||
|
|
||||||
#ifdef LOCK_DEBUG
|
#ifdef LOCK_DEBUG
|
||||||
# include <stdio.h>
|
# include <stdio.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -532,7 +534,7 @@ spin(unsigned n)
|
||||||
unsigned duration = MIN_SLEEP_USECS << (n - yield_limit);
|
unsigned duration = MIN_SLEEP_USECS << (n - yield_limit);
|
||||||
if (n >= 15 + yield_limit || duration > MAX_SLEEP_USECS)
|
if (n >= 15 + yield_limit || duration > MAX_SLEEP_USECS)
|
||||||
duration = MAX_SLEEP_USECS;
|
duration = MAX_SLEEP_USECS;
|
||||||
java::lang::Thread::sleep(0, duration);
|
_Jv_platform_usleep(duration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue