Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
5b3ebe43
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
5b3ebe43
编写于
10月 05, 2018
作者:
R
robm
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8202261: (fc) FileChannel.map and RandomAccessFile.setLength should not preallocate space
Reviewed-by: coffeys
上级
68157b7f
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
97 addition
and
138 deletion
+97
-138
make/mapfiles/libnio/mapfile-linux
make/mapfiles/libnio/mapfile-linux
+1
-2
make/mapfiles/libnio/mapfile-macosx
make/mapfiles/libnio/mapfile-macosx
+1
-2
make/mapfiles/libnio/mapfile-solaris
make/mapfiles/libnio/mapfile-solaris
+1
-2
src/share/classes/sun/nio/ch/FileChannelImpl.java
src/share/classes/sun/nio/ch/FileChannelImpl.java
+5
-10
src/share/classes/sun/nio/ch/FileDispatcher.java
src/share/classes/sun/nio/ch/FileDispatcher.java
+7
-2
src/solaris/classes/sun/nio/ch/FileDispatcherImpl.java
src/solaris/classes/sun/nio/ch/FileDispatcherImpl.java
+6
-6
src/solaris/native/java/io/io_util_md.c
src/solaris/native/java/io/io_util_md.c
+0
-19
src/solaris/native/sun/nio/ch/FileChannelImpl.c
src/solaris/native/sun/nio/ch/FileChannelImpl.c
+11
-28
src/solaris/native/sun/nio/ch/FileDispatcherImpl.c
src/solaris/native/sun/nio/ch/FileDispatcherImpl.c
+26
-33
src/windows/classes/sun/nio/ch/FileDispatcherImpl.java
src/windows/classes/sun/nio/ch/FileDispatcherImpl.java
+6
-5
src/windows/native/sun/nio/ch/FileChannelImpl.c
src/windows/native/sun/nio/ch/FileChannelImpl.c
+7
-28
src/windows/native/sun/nio/ch/FileDispatcherImpl.c
src/windows/native/sun/nio/ch/FileDispatcherImpl.c
+26
-1
未找到文件。
make/mapfiles/libnio/mapfile-linux
浏览文件 @
5b3ebe43
...
...
@@ -56,12 +56,11 @@ SUNWprivate_1.1 {
Java_sun_nio_ch_FileChannelImpl_close0;
Java_sun_nio_ch_FileChannelImpl_initIDs;
Java_sun_nio_ch_FileChannelImpl_map0;
Java_sun_nio_ch_FileChannelImpl_position0;
Java_sun_nio_ch_FileChannelImpl_transferTo0;
Java_sun_nio_ch_FileChannelImpl_unmap0;
Java_sun_nio_ch_FileDispatcherImpl_allocate0;
Java_sun_nio_ch_FileDispatcherImpl_close0;
Java_sun_nio_ch_FileDispatcherImpl_closeIntFD;
Java_sun_nio_ch_FileDispatcherImpl_seek0;
Java_sun_nio_ch_FileDispatcherImpl_force0;
Java_sun_nio_ch_FileDispatcherImpl_init;
Java_sun_nio_ch_FileDispatcherImpl_lock0;
...
...
make/mapfiles/libnio/mapfile-macosx
浏览文件 @
5b3ebe43
...
...
@@ -39,12 +39,11 @@ SUNWprivate_1.1 {
Java_sun_nio_ch_FileChannelImpl_close0;
Java_sun_nio_ch_FileChannelImpl_initIDs;
Java_sun_nio_ch_FileChannelImpl_map0;
Java_sun_nio_ch_FileChannelImpl_position0;
Java_sun_nio_ch_FileChannelImpl_transferTo0;
Java_sun_nio_ch_FileChannelImpl_unmap0;
Java_sun_nio_ch_FileDispatcherImpl_allocate0;
Java_sun_nio_ch_FileDispatcherImpl_close0;
Java_sun_nio_ch_FileDispatcherImpl_closeIntFD;
Java_sun_nio_ch_FileDispatcherImpl_seek0;
Java_sun_nio_ch_FileDispatcherImpl_force0;
Java_sun_nio_ch_FileDispatcherImpl_init;
Java_sun_nio_ch_FileDispatcherImpl_lock0;
...
...
make/mapfiles/libnio/mapfile-solaris
浏览文件 @
5b3ebe43
...
...
@@ -44,12 +44,11 @@ SUNWprivate_1.1 {
Java_sun_nio_ch_FileChannelImpl_close0;
Java_sun_nio_ch_FileChannelImpl_initIDs;
Java_sun_nio_ch_FileChannelImpl_map0;
Java_sun_nio_ch_FileChannelImpl_position0;
Java_sun_nio_ch_FileChannelImpl_transferTo0;
Java_sun_nio_ch_FileChannelImpl_unmap0;
Java_sun_nio_ch_FileDispatcherImpl_allocate0;
Java_sun_nio_ch_FileDispatcherImpl_close0;
Java_sun_nio_ch_FileDispatcherImpl_closeIntFD;
Java_sun_nio_ch_FileDispatcherImpl_seek0;
Java_sun_nio_ch_FileDispatcherImpl_force0;
Java_sun_nio_ch_FileDispatcherImpl_init;
Java_sun_nio_ch_FileDispatcherImpl_lock0;
...
...
src/share/classes/sun/nio/ch/FileChannelImpl.java
浏览文件 @
5b3ebe43
...
...
@@ -261,7 +261,7 @@ public class FileChannelImpl
return
0
;
do
{
// in append-mode then position is advanced to end before writing
p
=
(
append
)
?
nd
.
size
(
fd
)
:
position0
(
fd
,
-
1
);
p
=
(
append
)
?
nd
.
size
(
fd
)
:
nd
.
seek
(
fd
,
-
1
);
}
while
((
p
==
IOStatus
.
INTERRUPTED
)
&&
isOpen
());
return
IOStatus
.
normalize
(
p
);
}
finally
{
...
...
@@ -285,7 +285,7 @@ public class FileChannelImpl
if
(!
isOpen
())
return
null
;
do
{
p
=
position0
(
fd
,
newPosition
);
p
=
nd
.
seek
(
fd
,
newPosition
);
}
while
((
p
==
IOStatus
.
INTERRUPTED
)
&&
isOpen
());
return
this
;
}
finally
{
...
...
@@ -345,7 +345,7 @@ public class FileChannelImpl
// get current position
do
{
p
=
position0
(
fd
,
-
1
);
p
=
nd
.
seek
(
fd
,
-
1
);
}
while
((
p
==
IOStatus
.
INTERRUPTED
)
&&
isOpen
());
if
(!
isOpen
())
return
null
;
...
...
@@ -364,7 +364,7 @@ public class FileChannelImpl
if
(
p
>
newSize
)
p
=
newSize
;
do
{
rp
=
position0
(
fd
,
p
);
rp
=
nd
.
seek
(
fd
,
p
);
}
while
((
rp
==
IOStatus
.
INTERRUPTED
)
&&
isOpen
());
return
this
;
}
finally
{
...
...
@@ -906,7 +906,7 @@ public class FileChannelImpl
}
int
rv
;
do
{
rv
=
nd
.
allo
cate
(
fd
,
position
+
size
);
rv
=
nd
.
trun
cate
(
fd
,
position
+
size
);
}
while
((
rv
==
IOStatus
.
INTERRUPTED
)
&&
isOpen
());
if
(!
isOpen
())
return
null
;
...
...
@@ -1217,11 +1217,6 @@ public class FileChannelImpl
private
native
long
transferTo0
(
FileDescriptor
src
,
long
position
,
long
count
,
FileDescriptor
dst
);
// Sets or reports this file's position
// If offset is -1, the current position is returned
// otherwise the position is set to offset
private
native
long
position0
(
FileDescriptor
fd
,
long
offset
);
// Caches fieldIDs
private
static
native
long
initIDs
();
...
...
src/share/classes/sun/nio/ch/FileDispatcher.java
浏览文件 @
5b3ebe43
...
...
@@ -36,12 +36,17 @@ abstract class FileDispatcher extends NativeDispatcher {
public
static
final
int
RET_EX_LOCK
=
1
;
// Obtained exclusive lock
public
static
final
int
INTERRUPTED
=
2
;
// Request interrupted
/**
* Sets or reports this file's position
* If offset is -1, the current position is returned
* otherwise the position is set to offset.
*/
abstract
long
seek
(
FileDescriptor
fd
,
long
offset
)
throws
IOException
;
abstract
int
force
(
FileDescriptor
fd
,
boolean
metaData
)
throws
IOException
;
abstract
int
truncate
(
FileDescriptor
fd
,
long
size
)
throws
IOException
;
abstract
int
allocate
(
FileDescriptor
fd
,
long
size
)
throws
IOException
;
abstract
long
size
(
FileDescriptor
fd
)
throws
IOException
;
abstract
int
lock
(
FileDescriptor
fd
,
boolean
blocking
,
long
pos
,
long
size
,
...
...
src/solaris/classes/sun/nio/ch/FileDispatcherImpl.java
浏览文件 @
5b3ebe43
...
...
@@ -72,6 +72,10 @@ class FileDispatcherImpl extends FileDispatcher {
return
writev0
(
fd
,
address
,
len
);
}
long
seek
(
FileDescriptor
fd
,
long
offset
)
throws
IOException
{
return
seek0
(
fd
,
offset
);
}
int
force
(
FileDescriptor
fd
,
boolean
metaData
)
throws
IOException
{
return
force0
(
fd
,
metaData
);
}
...
...
@@ -80,10 +84,6 @@ class FileDispatcherImpl extends FileDispatcher {
return
truncate0
(
fd
,
size
);
}
int
allocate
(
FileDescriptor
fd
,
long
size
)
throws
IOException
{
return
allocate0
(
fd
,
size
);
}
long
size
(
FileDescriptor
fd
)
throws
IOException
{
return
size0
(
fd
);
}
...
...
@@ -143,10 +143,10 @@ class FileDispatcherImpl extends FileDispatcher {
static
native
int
force0
(
FileDescriptor
fd
,
boolean
metaData
)
throws
IOException
;
static
native
int
truncate
0
(
FileDescriptor
fd
,
long
size
)
static
native
long
seek
0
(
FileDescriptor
fd
,
long
size
)
throws
IOException
;
static
native
int
allo
cate0
(
FileDescriptor
fd
,
long
size
)
static
native
int
trun
cate0
(
FileDescriptor
fd
,
long
size
)
throws
IOException
;
static
native
long
size0
(
FileDescriptor
fd
)
throws
IOException
;
...
...
src/solaris/native/java/io/io_util_md.c
浏览文件 @
5b3ebe43
...
...
@@ -212,25 +212,6 @@ jint
handleSetLength
(
FD
fd
,
jlong
length
)
{
int
result
;
#if defined(__linux__)
/*
* On Linux, if the file size is being increased, then ftruncate64()
* will modify the metadata value of the size without actually allocating
* any blocks which can cause a SIGBUS error if the file is subsequently
* memory-mapped.
*/
struct
stat64
sb
;
if
(
fstat64
(
fd
,
&
sb
)
==
0
&&
length
>
sb
.
st_blocks
*
512
)
{
RESTARTABLE
(
posix_fallocate
(
fd
,
0
,
length
),
result
);
// Return on success or if errno is neither EOPNOTSUPP nor ENOSYS
if
(
result
==
0
)
{
return
0
;
}
else
if
(
errno
!=
EOPNOTSUPP
&&
errno
!=
ENOSYS
)
{
return
result
;
}
}
#endif
RESTARTABLE
(
ftruncate64
(
fd
,
length
),
result
);
return
result
;
}
...
...
src/solaris/native/sun/nio/ch/FileChannelImpl.c
浏览文件 @
5b3ebe43
/*
* Copyright (c) 2000, 201
2
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 201
8
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -23,26 +23,17 @@
* questions.
*/
#include "jni.h"
#include "jni_util.h"
#include "jvm.h"
#include "jvm_md.h"
#include "jlong.h"
#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "sun_nio_ch_FileChannelImpl.h"
#include "java_lang_Integer.h"
#include "nio.h"
#include "nio_util.h"
#include <dlfcn.h>
#include <sys/types.h>
#include <unistd.h>
#if defined(__linux__) || defined(__solaris__)
#include <sys/sendfile.h>
#elif defined(_AIX)
#include <sys/socket.h>
#elif defined(_ALLBSD_SOURCE)
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/uio.h>
...
...
@@ -50,6 +41,14 @@
#define mmap64 mmap
#endif
#include "jni.h"
#include "jni_util.h"
#include "jlong.h"
#include "nio.h"
#include "nio_util.h"
#include "sun_nio_ch_FileChannelImpl.h"
#include "java_lang_Integer.h"
static
jfieldID
chan_fd
;
/* jobject 'fd' in sun.io.FileChannelImpl */
JNIEXPORT
jlong
JNICALL
...
...
@@ -124,22 +123,6 @@ Java_sun_nio_ch_FileChannelImpl_unmap0(JNIEnv *env, jobject this,
}
JNIEXPORT
jlong
JNICALL
Java_sun_nio_ch_FileChannelImpl_position0
(
JNIEnv
*
env
,
jobject
this
,
jobject
fdo
,
jlong
offset
)
{
jint
fd
=
fdval
(
env
,
fdo
);
jlong
result
=
0
;
if
(
offset
<
0
)
{
result
=
lseek64
(
fd
,
0
,
SEEK_CUR
);
}
else
{
result
=
lseek64
(
fd
,
offset
,
SEEK_SET
);
}
return
handle
(
env
,
result
,
"Position failed"
);
}
JNIEXPORT
void
JNICALL
Java_sun_nio_ch_FileChannelImpl_close0
(
JNIEnv
*
env
,
jobject
this
,
jobject
fdo
)
{
...
...
src/solaris/native/sun/nio/ch/FileDispatcherImpl.c
浏览文件 @
5b3ebe43
...
...
@@ -27,25 +27,19 @@
#define _FILE_OFFSET_BITS 64
#endif
#include "jni.h"
#include "jni_util.h"
#include "jvm.h"
#include "jlong.h"
#include "sun_nio_ch_FileDispatcherImpl.h"
#include "java_lang_Long.h"
#include <sys/types.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <sys/uio.h>
#include <unistd.h>
#include <sys/stat.h>
#if defined(__linux__)
#include <linux/fs.h>
#include <sys/ioctl.h>
#endif
#include "nio.h"
#include "nio_util.h"
#ifdef _ALLBSD_SOURCE
#if defined(_ALLBSD_SOURCE)
#define lseek64 lseek
#define stat64 stat
#define flock64 flock
#define off64_t off_t
...
...
@@ -60,6 +54,15 @@
#define fdatasync fsync
#endif
#include "jni.h"
#include "jni_util.h"
#include "jvm.h"
#include "jlong.h"
#include "nio.h"
#include "nio_util.h"
#include "sun_nio_ch_FileDispatcherImpl.h"
#include "java_lang_Long.h"
static
int
preCloseFD
=
-
1
;
/* File descriptor to which we dup other fd's
before closing them for real */
...
...
@@ -145,6 +148,20 @@ handle(JNIEnv *env, jlong rv, char *msg)
return
IOS_THROWN
;
}
JNIEXPORT
jlong
JNICALL
Java_sun_nio_ch_FileDispatcherImpl_seek0
(
JNIEnv
*
env
,
jclass
clazz
,
jobject
fdo
,
jlong
offset
)
{
jint
fd
=
fdval
(
env
,
fdo
);
off64_t
result
;
if
(
offset
<
0
)
{
result
=
lseek64
(
fd
,
0
,
SEEK_CUR
);
}
else
{
result
=
lseek64
(
fd
,
offset
,
SEEK_SET
);
}
return
handle
(
env
,
(
jlong
)
result
,
"lseek64 failed"
);
}
JNIEXPORT
jint
JNICALL
Java_sun_nio_ch_FileDispatcherImpl_force0
(
JNIEnv
*
env
,
jobject
this
,
jobject
fdo
,
jboolean
md
)
...
...
@@ -182,30 +199,6 @@ Java_sun_nio_ch_FileDispatcherImpl_truncate0(JNIEnv *env, jobject this,
"Truncation failed"
);
}
JNIEXPORT
jint
JNICALL
Java_sun_nio_ch_FileDispatcherImpl_allocate0
(
JNIEnv
*
env
,
jobject
this
,
jobject
fdo
,
jlong
size
)
{
#if defined(__linux__)
/*
* On Linux, if the file size is being increased, then ftruncate64()
* will modify the metadata value of the size without actually allocating
* any blocks which can cause a SIGBUS error if the file is subsequently
* memory-mapped.
*/
// Return on success or if errno is neither EOPNOTSUPP nor ENOSYS
int
result
=
posix_fallocate
(
fdval
(
env
,
fdo
),
0
,
size
);
if
(
result
==
0
)
{
return
0
;
}
else
if
(
errno
!=
EOPNOTSUPP
&&
errno
!=
ENOSYS
)
{
return
handle
(
env
,
result
,
"Allocation failed"
);
}
#endif
return
handle
(
env
,
ftruncate64
(
fdval
(
env
,
fdo
),
size
),
"Truncation failed"
);
}
JNIEXPORT
jlong
JNICALL
Java_sun_nio_ch_FileDispatcherImpl_size0
(
JNIEnv
*
env
,
jobject
this
,
jobject
fdo
)
{
...
...
src/windows/classes/sun/nio/ch/FileDispatcherImpl.java
浏览文件 @
5b3ebe43
...
...
@@ -85,6 +85,10 @@ class FileDispatcherImpl extends FileDispatcher {
return
writev0
(
fd
,
address
,
len
,
append
);
}
long
seek
(
FileDescriptor
fd
,
long
offset
)
throws
IOException
{
return
seek0
(
fd
,
offset
);
}
int
force
(
FileDescriptor
fd
,
boolean
metaData
)
throws
IOException
{
return
force0
(
fd
,
metaData
);
}
...
...
@@ -93,11 +97,6 @@ class FileDispatcherImpl extends FileDispatcher {
return
truncate0
(
fd
,
size
);
}
int
allocate
(
FileDescriptor
fd
,
long
size
)
throws
IOException
{
// truncate0() works for extending and truncating file size
return
truncate0
(
fd
,
size
);
}
long
size
(
FileDescriptor
fd
)
throws
IOException
{
return
size0
(
fd
);
}
...
...
@@ -176,6 +175,8 @@ class FileDispatcherImpl extends FileDispatcher {
static
native
long
writev0
(
FileDescriptor
fd
,
long
address
,
int
len
,
boolean
append
)
throws
IOException
;
static
native
long
seek0
(
FileDescriptor
fd
,
long
offset
)
throws
IOException
;
static
native
int
force0
(
FileDescriptor
fd
,
boolean
metaData
)
throws
IOException
;
...
...
src/windows/native/sun/nio/ch/FileChannelImpl.c
浏览文件 @
5b3ebe43
/*
* Copyright (c) 2000, 20
09
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 20
18
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -140,30 +140,6 @@ Java_sun_nio_ch_FileChannelImpl_unmap0(JNIEnv *env, jobject this,
return
0
;
}
JNIEXPORT
jlong
JNICALL
Java_sun_nio_ch_FileChannelImpl_position0
(
JNIEnv
*
env
,
jobject
this
,
jobject
fdo
,
jlong
offset
)
{
DWORD
lowPos
=
0
;
long
highPos
=
0
;
HANDLE
h
=
(
HANDLE
)(
handleval
(
env
,
fdo
));
if
(
offset
<
0
)
{
lowPos
=
SetFilePointer
(
h
,
0
,
&
highPos
,
FILE_CURRENT
);
}
else
{
lowPos
=
(
DWORD
)
offset
;
highPos
=
(
long
)(
offset
>>
32
);
lowPos
=
SetFilePointer
(
h
,
lowPos
,
&
highPos
,
FILE_BEGIN
);
}
if
(
lowPos
==
((
DWORD
)
-
1
))
{
if
(
GetLastError
()
!=
ERROR_SUCCESS
)
{
JNU_ThrowIOExceptionWithLastError
(
env
,
"Seek failed"
);
return
IOS_THROWN
;
}
}
return
(((
jlong
)
highPos
)
<<
32
)
|
lowPos
;
}
JNIEXPORT
void
JNICALL
Java_sun_nio_ch_FileChannelImpl_close0
(
JNIEnv
*
env
,
jobject
this
,
jobject
fdo
)
{
...
...
@@ -184,14 +160,17 @@ Java_sun_nio_ch_FileChannelImpl_transferTo0(JNIEnv *env, jobject this,
{
const
int
PACKET_SIZE
=
524288
;
LARGE_INTEGER
where
;
HANDLE
src
=
(
HANDLE
)(
handleval
(
env
,
srcFD
));
SOCKET
dst
=
(
SOCKET
)(
fdval
(
env
,
dstFD
));
DWORD
chunkSize
=
(
count
>
java_lang_Integer_MAX_VALUE
)
?
java_lang_Integer_MAX_VALUE
:
(
DWORD
)
count
;
BOOL
result
=
0
;
BOOL
result
;
jlong
pos
=
Java_sun_nio_ch_FileChannelImpl_position0
(
env
,
this
,
srcFD
,
position
);
if
(
pos
==
IOS_THROWN
)
{
where
.
QuadPart
=
position
;
result
=
SetFilePointerEx
(
src
,
where
,
&
where
,
FILE_BEGIN
);
if
(
result
==
0
)
{
JNU_ThrowIOExceptionWithLastError
(
env
,
"SetFilePointerEx failed"
);
return
IOS_THROWN
;
}
...
...
src/windows/native/sun/nio/ch/FileDispatcherImpl.c
浏览文件 @
5b3ebe43
/*
* Copyright (c) 2000, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 201
8
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -315,6 +315,31 @@ Java_sun_nio_ch_FileDispatcherImpl_pwrite0(JNIEnv *env, jclass clazz, jobject fd
return
convertReturnVal
(
env
,
(
jint
)
written
,
JNI_FALSE
);
}
JNIEXPORT
jlong
JNICALL
Java_sun_nio_ch_FileDispatcherImpl_seek0
(
JNIEnv
*
env
,
jclass
clazz
,
jobject
fdo
,
jlong
offset
)
{
BOOL
result
=
0
;
HANDLE
h
=
(
HANDLE
)(
handleval
(
env
,
fdo
));
LARGE_INTEGER
where
;
DWORD
whence
;
if
(
offset
<
0
)
{
where
.
QuadPart
=
0
;
whence
=
FILE_CURRENT
;
}
else
{
where
.
QuadPart
=
offset
;
whence
=
FILE_BEGIN
;
}
result
=
SetFilePointerEx
(
h
,
where
,
&
where
,
whence
);
if
(
result
==
0
)
{
JNU_ThrowIOExceptionWithLastError
(
env
,
"SetFilePointerEx failed"
);
return
IOS_THROWN
;
}
return
(
jlong
)
where
.
QuadPart
;
}
JNIEXPORT
jint
JNICALL
Java_sun_nio_ch_FileDispatcherImpl_force0
(
JNIEnv
*
env
,
jobject
this
,
jobject
fdo
,
jboolean
md
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录