Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/src/solaris/native/java/net/net_util_md.h
32287 views
1
/*
2
* Copyright (c) 1997, 2016, 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
#ifndef NET_UTILS_MD_H
27
#define NET_UTILS_MD_H
28
29
#include <sys/socket.h>
30
#include <sys/types.h>
31
#include <netdb.h>
32
#include <netinet/in.h>
33
#include <unistd.h>
34
35
#ifndef USE_SELECT
36
#include <sys/poll.h>
37
#endif
38
39
40
/*
41
AIX needs a workaround for I/O cancellation, see:
42
http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.basetechref/doc/basetrf1/close.htm
43
...
44
The close subroutine is blocked until all subroutines which use the file
45
descriptor return to usr space. For example, when a thread is calling close
46
and another thread is calling select with the same file descriptor, the
47
close subroutine does not return until the select call returns.
48
...
49
*/
50
#if !defined(__solaris__)
51
extern int NET_Timeout(int s, long timeout);
52
extern int NET_Timeout0(int s, long timeout, long currentTime);
53
extern int NET_Read(int s, void* buf, size_t len);
54
extern int NET_NonBlockingRead(int s, void* buf, size_t len);
55
extern int NET_TimeoutWithCurrentTime(int s, long timeout, long currentTime);
56
extern long NET_GetCurrentTime();
57
extern int NET_RecvFrom(int s, void *buf, int len, unsigned int flags,
58
struct sockaddr *from, int *fromlen);
59
extern int NET_ReadV(int s, const struct iovec * vector, int count);
60
extern int NET_Send(int s, void *msg, int len, unsigned int flags);
61
extern int NET_SendTo(int s, const void *msg, int len, unsigned int
62
flags, const struct sockaddr *to, int tolen);
63
extern int NET_Writev(int s, const struct iovec * vector, int count);
64
extern int NET_Connect(int s, struct sockaddr *addr, int addrlen);
65
extern int NET_Accept(int s, struct sockaddr *addr, int *addrlen);
66
extern int NET_SocketClose(int s);
67
extern int NET_Dup2(int oldfd, int newfd);
68
69
#ifdef USE_SELECT
70
extern int NET_Select(int s, fd_set *readfds, fd_set *writefds,
71
fd_set *exceptfds, struct timeval *timeout);
72
#else
73
extern int NET_Poll(struct pollfd *ufds, unsigned int nfds, int timeout);
74
#endif
75
76
#else
77
78
#define NET_Timeout JVM_Timeout
79
#define NET_Read JVM_Read
80
#define NET_RecvFrom JVM_RecvFrom
81
#define NET_ReadV readv
82
#define NET_Send JVM_Send
83
#define NET_SendTo JVM_SendTo
84
#define NET_WriteV writev
85
#define NET_Connect JVM_Connect
86
#define NET_Accept JVM_Accept
87
#define NET_SocketClose JVM_SocketClose
88
#define NET_Dup2 dup2
89
#define NET_Select select
90
#define NET_Poll poll
91
92
#endif
93
94
#if defined(__linux__) && defined(AF_INET6)
95
int getDefaultIPv6Interface(struct in6_addr *target_addr);
96
#endif
97
98
#ifdef __solaris__
99
extern int net_getParam(char *driver, char *param);
100
101
#ifndef SO_FLOW_SLA
102
#define SO_FLOW_SLA 0x1018
103
104
#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
105
#pragma pack(4)
106
#endif
107
108
/*
109
* Used with the setsockopt(SO_FLOW_SLA, ...) call to set
110
* per socket service level properties.
111
* When the application uses per-socket API, we will enforce the properties
112
* on both outbound and inbound packets.
113
*
114
* For now, only priority and maxbw are supported in SOCK_FLOW_PROP_VERSION1.
115
*/
116
typedef struct sock_flow_props_s {
117
int sfp_version;
118
uint32_t sfp_mask;
119
int sfp_priority; /* flow priority */
120
uint64_t sfp_maxbw; /* bandwidth limit in bps */
121
int sfp_status; /* flow create status for getsockopt */
122
} sock_flow_props_t;
123
124
#define SOCK_FLOW_PROP_VERSION1 1
125
126
/* bit mask values for sfp_mask */
127
#define SFP_MAXBW 0x00000001 /* Flow Bandwidth Limit */
128
#define SFP_PRIORITY 0x00000008 /* Flow priority */
129
130
/* possible values for sfp_priority */
131
#define SFP_PRIO_NORMAL 1
132
#define SFP_PRIO_HIGH 2
133
134
#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
135
#pragma pack()
136
#endif /* _LONG_LONG_ALIGNMENT */
137
138
#endif /* SO_FLOW_SLA */
139
#endif /* __solaris__ */
140
141
void ThrowUnknownHostExceptionWithGaiError(JNIEnv *env,
142
const char* hostname,
143
int gai_error);
144
145
#define NET_WAIT_READ 0x01
146
#define NET_WAIT_WRITE 0x02
147
#define NET_WAIT_CONNECT 0x04
148
149
extern jint NET_Wait(JNIEnv *env, jint fd, jint flags, jint timeout);
150
151
/************************************************************************
152
* Macros and constants
153
*/
154
155
/*
156
* On 64-bit JDKs we use a much larger stack and heap buffer.
157
*/
158
#ifdef _LP64
159
#define MAX_BUFFER_LEN 65536
160
#define MAX_HEAP_BUFFER_LEN 131072
161
#else
162
#define MAX_BUFFER_LEN 8192
163
#define MAX_HEAP_BUFFER_LEN 65536
164
#endif
165
166
#ifdef AF_INET6
167
168
#define SOCKADDR union { \
169
struct sockaddr_in him4; \
170
struct sockaddr_in6 him6; \
171
}
172
173
#define SOCKADDR_LEN (ipv6_available() ? sizeof(SOCKADDR) : \
174
sizeof(struct sockaddr_in))
175
176
#else
177
178
#define SOCKADDR union { struct sockaddr_in him4; }
179
#define SOCKADDR_LEN sizeof(SOCKADDR)
180
181
#endif
182
183
/************************************************************************
184
* Utilities
185
*/
186
#ifdef __linux__
187
extern int kernelIsV24();
188
#endif
189
190
void NET_ThrowByNameWithLastError(JNIEnv *env, const char *name,
191
const char *defaultDetail);
192
193
194
#endif /* NET_UTILS_MD_H */
195
196