aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authorMichael Koch <konqueror@gmx.de>2004-01-23 14:07:28 +0000
committerMichael Koch <mkoch@gcc.gnu.org>2004-01-23 14:07:28 +0000
commitca1d829f319a0919f6543933cd7f561e3ae5bf64 (patch)
treefd615eae154189a9a30bcb6d68a92415141b8f9b /libjava
parent0e707673d273651f3b1f75beb53c42c9d521e3c4 (diff)
downloadgcc-ca1d829f319a0919f6543933cd7f561e3ae5bf64.zip
gcc-ca1d829f319a0919f6543933cd7f561e3ae5bf64.tar.gz
gcc-ca1d829f319a0919f6543933cd7f561e3ae5bf64.tar.bz2
2004-01-23 Michael Koch <konqueror@gmx.de>
* java/io/FileDescriptor.java (lock): New method. (tryLock): New method. (unlock): New method. * java/io/natFileDescriptorEcos.cc (lock): New method. (tryLock): New method. (unlock): New method. * java/io/natFileDescriptorPosix.cc (lock): New method. (tryLock): New method. (unlock): New method. * java/io/natFileDescriptorWin32.cc (lock): New method. (tryLock): New method. (unlock): New method. From-SVN: r76421
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog19
-rw-r--r--libjava/java/io/FileDescriptor.java4
-rw-r--r--libjava/java/io/natFileDescriptorEcos.cc21
-rw-r--r--libjava/java/io/natFileDescriptorPosix.cc45
-rw-r--r--libjava/java/io/natFileDescriptorWin32.cc21
5 files changed, 110 insertions, 0 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 4aba02a..1d25820 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,6 +1,25 @@
2004-01-23 Michael Koch <konqueror@gmx.de>
* java/io/FileDescriptor.java
+ (lock): New method.
+ (tryLock): New method.
+ (unlock): New method.
+ * java/io/natFileDescriptorEcos.cc
+ (lock): New method.
+ (tryLock): New method.
+ (unlock): New method.
+ * java/io/natFileDescriptorPosix.cc
+ (lock): New method.
+ (tryLock): New method.
+ (unlock): New method.
+ * java/io/natFileDescriptorWin32.cc
+ (lock): New method.
+ (tryLock): New method.
+ (unlock): New method.
+
+2004-01-23 Michael Koch <konqueror@gmx.de>
+
+ * java/io/FileDescriptor.java
(sync): Moved around, added javadoc.
(valid): Likewise.
(open): Likewise.
diff --git a/libjava/java/io/FileDescriptor.java b/libjava/java/io/FileDescriptor.java
index b713e1b..109d246 100644
--- a/libjava/java/io/FileDescriptor.java
+++ b/libjava/java/io/FileDescriptor.java
@@ -208,6 +208,10 @@ public final class FileDescriptor
native long getLength() throws IOException;
native void setLength(long pos) throws IOException;
+ native void lock(long pos, int len, boolean shared) throws IOException;
+ native boolean tryLock(long pos, int lent, boolean shared) throws IOException;
+ native void unlock(long pos, int len) throws IOException;
+
// When collected, close.
protected void finalize() throws Throwable
{
diff --git a/libjava/java/io/natFileDescriptorEcos.cc b/libjava/java/io/natFileDescriptorEcos.cc
index 2f87912..6671307 100644
--- a/libjava/java/io/natFileDescriptorEcos.cc
+++ b/libjava/java/io/natFileDescriptorEcos.cc
@@ -136,3 +136,24 @@ java::io::FileDescriptor::available (void)
{
return 0;
}
+
+void
+java::io::FileDescriptor::lock (jlong pos, jint len, jboolean shared)
+{
+ throw new IOException (JvNewStringLatin1
+ ("java.io.FileDescriptor.lock() not implemented"));
+}
+
+jboolean
+java::io::FileDescriptor::tryLock (jlong pos, jint len, jboolean shared)
+{
+ throw new IOException (JvNewStringLatin1
+ ("java.io.FileDescriptor.tryLock() not implemented"));
+}
+
+void
+java::io::FileDescriptor::unlock (jlong pos, jint len)
+{
+ throw new IOException (JvNewStringLatin1
+ ("java.io.FileDescriptor.unlock() not implemented"));
+}
diff --git a/libjava/java/io/natFileDescriptorPosix.cc b/libjava/java/io/natFileDescriptorPosix.cc
index e43bb9d..7c36669 100644
--- a/libjava/java/io/natFileDescriptorPosix.cc
+++ b/libjava/java/io/natFileDescriptorPosix.cc
@@ -13,6 +13,7 @@ details. */
#include "posix.h"
#include <errno.h>
+#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
@@ -420,3 +421,47 @@ java::io::FileDescriptor::available (void)
return 0;
#endif
}
+
+void
+java::io::FileDescriptor::lock (jlong pos, jint len, jboolean shared)
+{
+ struct flock lockdata;
+
+ lockdata.l_type = shared ? F_WRLCK : F_RDLCK;
+ lockdata.l_whence = SEEK_SET;
+ lockdata.l_start = pos;
+ lockdata.l_len = len;
+
+ if (::fcntl (fd, F_SETLK, &lockdata) == -1)
+ throw new IOException (JvNewStringLatin1 (strerror (errno)));
+}
+
+jboolean
+java::io::FileDescriptor::tryLock (jlong pos, jint len, jboolean shared)
+{
+ struct flock lockdata;
+
+ lockdata.l_type = shared ? F_WRLCK : F_RDLCK;
+ lockdata.l_whence = SEEK_SET;
+ lockdata.l_start = pos;
+ lockdata.l_len = len;
+
+ if (::fcntl (fd, F_GETLK, &lockdata) == -1)
+ throw new IOException (JvNewStringLatin1 (strerror (errno)));
+
+ return lockdata.l_type == F_UNLCK;
+}
+
+void
+java::io::FileDescriptor::unlock (jlong pos, jint len)
+{
+ struct flock lockdata;
+
+ lockdata.l_type = F_UNLCK;
+ lockdata.l_whence = SEEK_SET;
+ lockdata.l_start = pos;
+ lockdata.l_len = len;
+
+ if (::fcntl (fd, F_SETLK, &lockdata) == -1)
+ throw new IOException (JvNewStringLatin1 (strerror (errno)));
+}
diff --git a/libjava/java/io/natFileDescriptorWin32.cc b/libjava/java/io/natFileDescriptorWin32.cc
index 7811a73..fd9d975 100644
--- a/libjava/java/io/natFileDescriptorWin32.cc
+++ b/libjava/java/io/natFileDescriptorWin32.cc
@@ -350,3 +350,24 @@ java::io::FileDescriptor::available(void)
// FIXME:
return getLength() - getFilePointer();
}
+
+void
+java::io::FileDescriptor::lock (jlong pos, jint len, jboolean shared)
+{
+ throw new IOException (JvNewStringLatin1
+ ("java.io.FileDescriptor.lock() not implemented"));
+}
+
+jboolean
+java::io::FileDescriptor::tryLock (jlong pos, jint len, jboolean shared)
+{
+ throw new IOException (JvNewStringLatin1
+ ("java.io.FileDescriptor.tryLock() not implemented"));
+}
+
+void
+java::io::FileDescriptor::unlock (jlong pos, jint len)
+{
+ throw new IOException (JvNewStringLatin1
+ ("java.io.FileDescriptor.unlock() not implemented"));
+}