Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/src/java.base/unix/native/libjava/io_util_md.h
41119 views
1
/*
2
* Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation. Oracle designates this
8
* particular file as subject to the "Classpath" exception as provided
9
* by Oracle in the LICENSE file that accompanied this code.
10
*
11
* This code is distributed in the hope that it will be useful, but WITHOUT
12
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14
* version 2 for more details (a copy is included in the LICENSE file that
15
* accompanied this code).
16
*
17
* You should have received a copy of the GNU General Public License version
18
* 2 along with this work; if not, write to the Free Software Foundation,
19
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20
*
21
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22
* or visit www.oracle.com if you need additional information or have any
23
* questions.
24
*/
25
26
#include "jni_util.h"
27
28
/*
29
* Macros to use the right data type for file descriptors
30
*/
31
#define FD jint
32
33
/*
34
* Prototypes for functions in io_util_md.c called from io_util.c,
35
* FileDescriptor.c, FileInputStream.c, FileOutputStream.c,
36
* UnixFileSystem_md.c
37
*/
38
ssize_t handleWrite(FD fd, const void *buf, jint len);
39
ssize_t handleRead(FD fd, void *buf, jint len);
40
jint handleAvailable(FD fd, jlong *pbytes);
41
jint handleSetLength(FD fd, jlong length);
42
jlong handleGetLength(FD fd);
43
FD handleOpen(const char *path, int oflag, int mode);
44
45
/*
46
* Functions to get fd from the java.io.FileDescriptor field
47
* of an object. These functions rely on having an appropriately
48
* defined object with a FileDescriptor object at the fid offset.
49
* If the FD object is null, return -1 to avoid crashing VM.
50
*/
51
FD getFD(JNIEnv *env, jobject cur, jfieldID fid);
52
53
/*
54
* Macros to set/get fd when inside java.io.FileDescriptor
55
*/
56
#define THIS_FD(obj) (*env)->GetIntField(env, obj, IO_fd_fdID)
57
58
/*
59
* Route the routines
60
*/
61
#define IO_Sync fsync
62
#define IO_Read handleRead
63
#define IO_Write handleWrite
64
#define IO_Append handleWrite
65
#define IO_Available handleAvailable
66
#define IO_SetLength handleSetLength
67
#define IO_GetLength handleGetLength
68
69
#ifdef _ALLBSD_SOURCE
70
#define open64 open
71
#define fstat64 fstat
72
#define stat64 stat
73
#define lseek64 lseek
74
#define ftruncate64 ftruncate
75
#define IO_Lseek lseek
76
#else
77
#define IO_Lseek lseek64
78
#endif
79
80
/*
81
* On Solaris, the handle field is unused
82
*/
83
#define SET_HANDLE(fd) return (jlong)-1
84
85
/*
86
* Retry the operation if it is interrupted
87
*/
88
#define RESTARTABLE(_cmd, _result) \
89
do { \
90
_result = _cmd; \
91
} while ((_result == -1) && (errno == EINTR))
92
93
void fileDescriptorClose(JNIEnv *env, jobject this);
94
95
#ifdef MACOSX
96
jstring newStringPlatform(JNIEnv *env, const char* str);
97
#endif
98
99