1// Copyright 2020 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5//go:build zos && s390x
6// +build zos,s390x
7
8// Hand edited based on ztypes_linux_s390x.go
9// TODO: auto-generate.
10
11package unix
12
13const (
14	SizeofPtr      = 0x8
15	SizeofShort    = 0x2
16	SizeofInt      = 0x4
17	SizeofLong     = 0x8
18	SizeofLongLong = 0x8
19	PathMax        = 0x1000
20)
21
22const (
23	SizeofSockaddrAny   = 128
24	SizeofCmsghdr       = 12
25	SizeofIPMreq        = 8
26	SizeofIPv6Mreq      = 20
27	SizeofICMPv6Filter  = 32
28	SizeofIPv6MTUInfo   = 32
29	SizeofLinger        = 8
30	SizeofSockaddrInet4 = 16
31	SizeofSockaddrInet6 = 28
32	SizeofTCPInfo       = 0x68
33)
34
35type (
36	_C_short     int16
37	_C_int       int32
38	_C_long      int64
39	_C_long_long int64
40)
41
42type Timespec struct {
43	Sec  int64
44	Nsec int64
45}
46
47type Timeval struct {
48	Sec  int64
49	Usec int64
50}
51
52type timeval_zos struct { //correct (with padding and all)
53	Sec  int64
54	_    [4]byte // pad
55	Usec int32
56}
57
58type Tms struct { //clock_t is 4-byte unsigned int in zos
59	Utime  uint32
60	Stime  uint32
61	Cutime uint32
62	Cstime uint32
63}
64
65type Time_t int64
66
67type Utimbuf struct {
68	Actime  int64
69	Modtime int64
70}
71
72type Utsname struct {
73	Sysname    [65]byte
74	Nodename   [65]byte
75	Release    [65]byte
76	Version    [65]byte
77	Machine    [65]byte
78	Domainname [65]byte
79}
80
81type RawSockaddrInet4 struct {
82	Len    uint8
83	Family uint8
84	Port   uint16
85	Addr   [4]byte /* in_addr */
86	Zero   [8]uint8
87}
88
89type RawSockaddrInet6 struct {
90	Len      uint8
91	Family   uint8
92	Port     uint16
93	Flowinfo uint32
94	Addr     [16]byte /* in6_addr */
95	Scope_id uint32
96}
97
98type RawSockaddrUnix struct {
99	Len    uint8
100	Family uint8
101	Path   [108]int8
102}
103
104type RawSockaddr struct {
105	Len    uint8
106	Family uint8
107	Data   [14]uint8
108}
109
110type RawSockaddrAny struct {
111	Addr RawSockaddr
112	_    [112]uint8 // pad
113}
114
115type _Socklen uint32
116
117type Linger struct {
118	Onoff  int32
119	Linger int32
120}
121
122type Iovec struct {
123	Base *byte
124	Len  uint64
125}
126
127type IPMreq struct {
128	Multiaddr [4]byte /* in_addr */
129	Interface [4]byte /* in_addr */
130}
131
132type IPv6Mreq struct {
133	Multiaddr [16]byte /* in6_addr */
134	Interface uint32
135}
136
137type Msghdr struct {
138	Name       *byte
139	Iov        *Iovec
140	Control    *byte
141	Flags      int32
142	Namelen    int32
143	Iovlen     int32
144	Controllen int32
145}
146
147type Cmsghdr struct {
148	Len   int32
149	Level int32
150	Type  int32
151}
152
153type Inet4Pktinfo struct {
154	Addr    [4]byte /* in_addr */
155	Ifindex uint32
156}
157
158type Inet6Pktinfo struct {
159	Addr    [16]byte /* in6_addr */
160	Ifindex uint32
161}
162
163type IPv6MTUInfo struct {
164	Addr RawSockaddrInet6
165	Mtu  uint32
166}
167
168type ICMPv6Filter struct {
169	Data [8]uint32
170}
171
172type TCPInfo struct {
173	State          uint8
174	Ca_state       uint8
175	Retransmits    uint8
176	Probes         uint8
177	Backoff        uint8
178	Options        uint8
179	Rto            uint32
180	Ato            uint32
181	Snd_mss        uint32
182	Rcv_mss        uint32
183	Unacked        uint32
184	Sacked         uint32
185	Lost           uint32
186	Retrans        uint32
187	Fackets        uint32
188	Last_data_sent uint32
189	Last_ack_sent  uint32
190	Last_data_recv uint32
191	Last_ack_recv  uint32
192	Pmtu           uint32
193	Rcv_ssthresh   uint32
194	Rtt            uint32
195	Rttvar         uint32
196	Snd_ssthresh   uint32
197	Snd_cwnd       uint32
198	Advmss         uint32
199	Reordering     uint32
200	Rcv_rtt        uint32
201	Rcv_space      uint32
202	Total_retrans  uint32
203}
204
205type _Gid_t uint32
206
207type rusage_zos struct {
208	Utime timeval_zos
209	Stime timeval_zos
210}
211
212type Rusage struct {
213	Utime    Timeval
214	Stime    Timeval
215	Maxrss   int64
216	Ixrss    int64
217	Idrss    int64
218	Isrss    int64
219	Minflt   int64
220	Majflt   int64
221	Nswap    int64
222	Inblock  int64
223	Oublock  int64
224	Msgsnd   int64
225	Msgrcv   int64
226	Nsignals int64
227	Nvcsw    int64
228	Nivcsw   int64
229}
230
231type Rlimit struct {
232	Cur uint64
233	Max uint64
234}
235
236// { int, short, short } in poll.h
237type PollFd struct {
238	Fd      int32
239	Events  int16
240	Revents int16
241}
242
243type Stat_t struct { //Linux Definition
244	Dev     uint64
245	Ino     uint64
246	Nlink   uint64
247	Mode    uint32
248	Uid     uint32
249	Gid     uint32
250	_       int32
251	Rdev    uint64
252	Size    int64
253	Atim    Timespec
254	Mtim    Timespec
255	Ctim    Timespec
256	Blksize int64
257	Blocks  int64
258	_       [3]int64
259}
260
261type Stat_LE_t struct {
262	_            [4]byte // eye catcher
263	Length       uint16
264	Version      uint16
265	Mode         int32
266	Ino          uint32
267	Dev          uint32
268	Nlink        int32
269	Uid          int32
270	Gid          int32
271	Size         int64
272	Atim31       [4]byte
273	Mtim31       [4]byte
274	Ctim31       [4]byte
275	Rdev         uint32
276	Auditoraudit uint32
277	Useraudit    uint32
278	Blksize      int32
279	Creatim31    [4]byte
280	AuditID      [16]byte
281	_            [4]byte // rsrvd1
282	File_tag     struct {
283		Ccsid   uint16
284		Txtflag uint16 // aggregating Txflag:1 deferred:1 rsvflags:14
285	}
286	CharsetID [8]byte
287	Blocks    int64
288	Genvalue  uint32
289	Reftim31  [4]byte
290	Fid       [8]byte
291	Filefmt   byte
292	Fspflag2  byte
293	_         [2]byte // rsrvd2
294	Ctimemsec int32
295	Seclabel  [8]byte
296	_         [4]byte // rsrvd3
297	_         [4]byte // rsrvd4
298	Atim      Time_t
299	Mtim      Time_t
300	Ctim      Time_t
301	Creatim   Time_t
302	Reftim    Time_t
303	_         [24]byte // rsrvd5
304}
305
306type Statvfs_t struct {
307	ID          [4]byte
308	Len         int32
309	Bsize       uint64
310	Blocks      uint64
311	Usedspace   uint64
312	Bavail      uint64
313	Flag        uint64
314	Maxfilesize int64
315	_           [16]byte
316	Frsize      uint64
317	Bfree       uint64
318	Files       uint32
319	Ffree       uint32
320	Favail      uint32
321	Namemax31   uint32
322	Invarsec    uint32
323	_           [4]byte
324	Fsid        uint64
325	Namemax     uint64
326}
327
328type Statfs_t struct {
329	Type    uint32
330	Bsize   uint64
331	Blocks  uint64
332	Bfree   uint64
333	Bavail  uint64
334	Files   uint32
335	Ffree   uint32
336	Fsid    uint64
337	Namelen uint64
338	Frsize  uint64
339	Flags   uint64
340}
341
342type Dirent struct {
343	Reclen uint16
344	Namlen uint16
345	Ino    uint32
346	Extra  uintptr
347	Name   [256]byte
348}
349
350type FdSet struct {
351	Bits [64]int32
352}
353
354// This struct is packed on z/OS so it can't be used directly.
355type Flock_t struct {
356	Type   int16
357	Whence int16
358	Start  int64
359	Len    int64
360	Pid    int32
361}
362
363type Termios struct {
364	Cflag uint32
365	Iflag uint32
366	Lflag uint32
367	Oflag uint32
368	Cc    [11]uint8
369}
370
371type Winsize struct {
372	Row    uint16
373	Col    uint16
374	Xpixel uint16
375	Ypixel uint16
376}
377
378type W_Mnth struct {
379	Hid   [4]byte
380	Size  int32
381	Cur1  int32 //32bit pointer
382	Cur2  int32 //^
383	Devno uint32
384	_     [4]byte
385}
386
387type W_Mntent struct {
388	Fstype       uint32
389	Mode         uint32
390	Dev          uint32
391	Parentdev    uint32
392	Rootino      uint32
393	Status       byte
394	Ddname       [9]byte
395	Fstname      [9]byte
396	Fsname       [45]byte
397	Pathlen      uint32
398	Mountpoint   [1024]byte
399	Jobname      [8]byte
400	PID          int32
401	Parmoffset   int32
402	Parmlen      int16
403	Owner        [8]byte
404	Quiesceowner [8]byte
405	_            [38]byte
406}
407