1b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/*--------------------------------------------------------------------*/
3b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/*--- s390x/Linux-specific kernel interface.     vki-s390x-linux.h ---*/
4b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/*--------------------------------------------------------------------*/
5b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
6b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/*
7b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   This file is part of Valgrind, a dynamic binary instrumentation
8b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   framework.
9b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
10663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   Copyright IBM Corp. 2010-2012
11b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
12b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   This program is free software; you can redistribute it and/or
13b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   modify it under the terms of the GNU General Public License as
14b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   published by the Free Software Foundation; either version 2 of the
15b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   License, or (at your option) any later version.
16b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
17b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   This program is distributed in the hope that it will be useful, but
18b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   WITHOUT ANY WARRANTY; without even the implied warranty of
19b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
20b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   General Public License for more details.
21b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
22b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   You should have received a copy of the GNU General Public License
23b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   along with this program; if not, write to the Free Software
24b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
25b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   02111-1307, USA.
26b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
27b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   The GNU General Public License is contained in the file COPYING.
28b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov*/
29b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
30b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* Contributed by Florian Krohm and Volker Sameske */
31b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
32b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef __VKI_S390X_LINUX_H
33b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define __VKI_S390X_LINUX_H
34b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
35b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define __force
36b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
37b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
38b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.16.60/include/asm-s390/types.h
39b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
40b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
41b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef __signed__ char __vki_s8;
42b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef unsigned char __vki_u8;
43b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
44b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef __signed__ short __vki_s16;
45b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef unsigned short __vki_u16;
46b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
47b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef __signed__ int __vki_s32;
48b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef unsigned int __vki_u32;
49b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
50b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef __signed__ long __vki_s64;
51b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef unsigned long __vki_u64;
52b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
53b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef unsigned short vki_u16;
54b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
55b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef unsigned int vki_u32;
56b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
57b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
58b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.16.60/include/asm-s390/page.h
59b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
60b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
61b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* PAGE_SHIFT determines the page size */
62b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_PAGE_SHIFT  12
63b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_PAGE_SIZE   (1UL << VKI_PAGE_SHIFT)
64b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
65b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
66b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.16.60/include/asm-s390/siginfo.h
67b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
68b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
69b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* We need that to ensure that sizeof(siginfo) == 128. */
70b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifdef __s390x__
71b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define __VKI_ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int))
72b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
73b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
74b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
75b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.16.60/include/asm-s390/sigcontext.h
76b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
77b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
78b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define __VKI_NUM_GPRS 16
79b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define __VKI_NUM_FPRS 16
80b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define __VKI_NUM_ACRS 16
81b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
82b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef VGA_s390x
83b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
84b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* Has to be at least _NSIG_WORDS from asm/signal.h */
85b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_SIGCONTEXT_NSIG	64
86b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_SIGCONTEXT_NSIG_BPW	32
87b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* Size of stack frame allocated when calling signal handler. */
88b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define __VKI_SIGNAL_FRAMESIZE	96
89b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
90b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else /* VGA_s390x */
91b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
92b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* Has to be at least _NSIG_WORDS from asm/signal.h */
93b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_SIGCONTEXT_NSIG	64
94b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_SIGCONTEXT_NSIG_BPW	64
95b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* Size of stack frame allocated when calling signal handler. */
96b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define __VKI_SIGNAL_FRAMESIZE	160
97b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
98b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* VGA_s390x */
99b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
100b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
101b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_SIGCONTEXT_NSIG_WORDS	(_VKI_SIGCONTEXT_NSIG / _VKI_SIGCONTEXT_NSIG_BPW)
102b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_SIGMASK_COPY_SIZE	(sizeof(unsigned long)*_VKI_SIGCONTEXT_NSIG_WORDS)
103b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
104b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef struct
105b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
106b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long mask;
107b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long addr;
108b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} __attribute__ ((aligned(8))) _vki_psw_t;
109b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
110b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef struct
111b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
112b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	_vki_psw_t psw;
113b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long gprs[__VKI_NUM_GPRS];
114b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned int  acrs[__VKI_NUM_ACRS];
115b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} _vki_s390_regs_common;
116b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
117b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef struct
118b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
119b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned int fpc;
120b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	double   fprs[__VKI_NUM_FPRS];
121b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} _vki_s390_fp_regs;
122b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
123b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef struct
124b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
125b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	_vki_s390_regs_common regs;
126b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	_vki_s390_fp_regs     fpregs;
127b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} _vki_sigregs;
128b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
129b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
130b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstruct vki_sigcontext
131b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
132b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long   oldmask[_VKI_SIGCONTEXT_NSIG_WORDS];
133b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	_vki_sigregs    __user *sregs;
134b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov};
135b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
136b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
137b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
138b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.16.60/include/asm-s390/signal.h
139b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
140b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
141b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_NSIG           _VKI_SIGCONTEXT_NSIG
142b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_NSIG_BPW       _VKI_SIGCONTEXT_NSIG_BPW
143b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_NSIG_WORDS     _VKI_SIGCONTEXT_NSIG_WORDS
144b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
145b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef unsigned long vki_old_sigset_t;
146b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
147b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef struct {
148b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long sig[_VKI_NSIG_WORDS];
149b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} vki_sigset_t;
150b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
151b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGHUP           1
152b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGINT           2
153b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGQUIT          3
154b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGILL           4
155b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGTRAP          5
156b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGABRT          6
157b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGIOT           6
158b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGBUS           7
159b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGFPE           8
160b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGKILL          9
161b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGUSR1         10
162b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGSEGV         11
163b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGUSR2         12
164b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGPIPE         13
165b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGALRM         14
166b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGTERM         15
167b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGSTKFLT       16
168b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGCHLD         17
169b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGCONT         18
170b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGSTOP         19
171b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGTSTP         20
172b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGTTIN         21
173b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGTTOU         22
174b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGURG          23
175b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGXCPU         24
176b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGXFSZ         25
177b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGVTALRM       26
178b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGPROF         27
179b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGWINCH        28
180b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGIO           29
181b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGPOLL         VKI_SIGIO
182b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/*
183b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGLOST         29
184b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov*/
185b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGPWR          30
186b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGSYS	    31
187b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGUNUSED       31
188b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
189b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* These should not be considered constants from userland.  */
190b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGRTMIN        32
191b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGRTMAX        _VKI_NSIG
192b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
193b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/*
194b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * SA_FLAGS values:
195b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov *
196b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * SA_ONSTACK indicates that a registered stack_t will be used.
197b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * SA_INTERRUPT is a no-op, but left due to historical reasons. Use the
198b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * SA_RESTART flag to get restarting signals (which were the default long ago)
199b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
200b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * SA_RESETHAND clears the handler when the signal is delivered.
201b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
202b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * SA_NODEFER prevents the current signal from being masked in the handler.
203b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov *
204b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
205b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * Unix names RESETHAND and NODEFER respectively.
206b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov */
207b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SA_NOCLDSTOP    0x00000001
208b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SA_NOCLDWAIT    0x00000002
209b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SA_SIGINFO      0x00000004
210b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SA_ONSTACK      0x08000000
211b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SA_RESTART      0x10000000
212b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SA_NODEFER      0x40000000
213b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SA_RESETHAND    0x80000000
214b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
215b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SA_NOMASK       VKI_SA_NODEFER
216b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SA_ONESHOT      VKI_SA_RESETHAND
217b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SA_INTERRUPT    0x20000000 /* dummy -- ignored */
218b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
219b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SA_RESTORER     0x04000000
220b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
221b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/*
222b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * sigaltstack controls
223b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov */
224b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SS_ONSTACK      1
225b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SS_DISABLE      2
226b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
227b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_MINSIGSTKSZ     2048
228b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIGSTKSZ        8192
229b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
230b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
231b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* Next lines asm-generic/signal.h */
232b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIG_BLOCK          0 /* for blocking signals */
233b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIG_UNBLOCK        1 /* for unblocking signals */
234b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIG_SETMASK        2 /* for setting the signal mask */
235b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
236b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef void __vki_signalfn_t(int);
237b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef __vki_signalfn_t __user *__vki_sighandler_t;
238b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
239b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* default signal handling */
240b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIG_DFL ((__force __vki_sighandler_t)0)
241b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* ignore signal */
242b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIG_IGN ((__force __vki_sighandler_t)1)
243b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* error return from signal */
244b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIG_ERR ((__force __vki_sighandler_t)-1)
245b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* Back to asm-s390/signal.h */
246b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
247b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstruct vki_old_sigaction {
248b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        // [[Nb: a 'k' prefix is added to "sa_handler" because
249b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        // bits/sigaction.h (which gets dragged in somehow via signal.h)
250b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        // #defines it as something else.  Since that is done for glibc's
251b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        // purposes, which we don't care about here, we use our own name.]]
252b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        __vki_sighandler_t ksa_handler;
253b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        vki_old_sigset_t sa_mask;
254b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long sa_flags;
255b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        void (*sa_restorer)(void);
256b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov};
257b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
258b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstruct vki_sigaction {
259b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        // [[See comment about extra 'k' above]]
260b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        __vki_sighandler_t ksa_handler;
261b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long sa_flags;
262b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        void (*sa_restorer)(void);
263b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        vki_sigset_t sa_mask;               /* mask last for extensibility */
264b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov};
265b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
266b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstruct vki_k_sigaction {
267b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        struct vki_sigaction sa;
268b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov};
269b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
270b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
271b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* On Linux we use the same type for passing sigactions to
272b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   and from the kernel.  Hence: */
273b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef  struct vki_sigaction  vki_sigaction_toK_t;
274b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef  struct vki_sigaction  vki_sigaction_fromK_t;
275b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
276b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
277b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef struct vki_sigaltstack {
278b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	void __user *ss_sp;
279b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	int ss_flags;
280b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	vki_size_t ss_size;
281b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} vki_stack_t;
282b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
283b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
284b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
285b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.16.60/include/asm-s390/mman.h
286b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
287b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
288b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_PROT_NONE   0x0             /* No page permissions */
289b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_PROT_READ   0x1             /* page can be read */
290b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_PROT_WRITE  0x2             /* page can be written */
291b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_PROT_EXEC   0x4             /* page can be executed */
292b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_PROT_GROWSDOWN 0x01000000   /* mprotect flag: extend
293b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov					   change to start of
294b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov					   growsdown vma */
295b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_PROT_GROWSUP   0x02000000   /* mprotect flag:
296b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov					   extend change to end
297b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov					   of growsup vma */
298b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
299b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_MAP_SHARED		0x0001  /* Share changes */
300b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_MAP_PRIVATE 	0x0002	/*  */
301b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_MAP_FIXED   	0x0010	/*  */
302b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_MAP_ANONYMOUS	0x0020	/*  */
303b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
304b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
305b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
306b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.16.60/include/asm-s390/fcntl.h
307b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
308b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
309b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_O_RDONLY        00000000
310b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_O_WRONLY        00000001
311b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_O_RDWR          00000002
312b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_O_ACCMODE       00000003
313b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_O_CREAT         00000100        /* not fcntl */
314b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_O_EXCL          00000200        /* not fcntl */
315b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_O_NOCTTY        00000400        /* not fcntl */
316b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_O_TRUNC         00001000        /* not fcntl */
317b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_O_APPEND        00002000
318b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_O_NONBLOCK      00004000
319b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
320b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_AT_FDCWD            -100
321b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
322b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_F_DUPFD	0	/* dup */
323b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_F_GETFD	1	/* get close_on_exec */
324b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_F_SETFD	2	/* set/clear close_on_exec */
325b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_F_GETFL	3	/* get file->f_flags */
326b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_F_SETFL	4	/* set file->f_flags */
327b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_F_GETLK	5
328b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_F_SETLK	6
329b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_F_SETLKW	7
330b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_F_SETOWN	8	/* for sockets. */
331b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_F_GETOWN	9	/* for sockets. */
332b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_F_SETSIG	10	/* for sockets. */
333b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_F_GETSIG	11	/* for sockets. */
334b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
335663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_SETOWN_EX		15
336663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_GETOWN_EX		16
337663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
338663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_OWNER_TID		0
339663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_OWNER_PID		1
340663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_OWNER_PGRP	2
341663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
342663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_f_owner_ex {
343663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	int	type;
344663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	__vki_kernel_pid_t	pid;
345663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
346663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
347b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_FD_CLOEXEC  1  /* actually anything with low bit set goes */
348b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
349b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_F_LINUX_SPECIFIC_BASE   1024
350b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
351b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
352b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
353b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.16.60/include/asm-s390x/resource.h
354b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
355b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
356b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// which just does #include <asm-generic/resource.h>
357b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
358b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_RLIMIT_DATA             2       /* max data size */
359b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_RLIMIT_STACK            3       /* max stack size */
360b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_RLIMIT_CORE             4       /* max core file size */
361b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_RLIMIT_NOFILE           7       /* max number of open files */
362b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
363b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
364b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
365b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.16.60/include/asm-s390/socket.h
366b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
367b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
368b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SOL_SOCKET      1
369b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
370b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SO_TYPE         3
371b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
372b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
373b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
374b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.16.60/include/asm-s390/sockios.h
375b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
376b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
377b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIOCSPGRP       0x8902
378b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIOCGPGRP       0x8904
379b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIOCGSTAMP      0x8906          /* Get stamp (timeval) */
380b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* since 2.6.22 */
381b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SIOCGSTAMPNS    0x8907          /* Get stamp (timespec) */
382b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
383b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
384b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
385b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.16.60/include/asm-s390/stat.h
386b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
387b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
388b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef VGA_s390x
389b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstruct vki_stat {
390b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned short st_dev;
391b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned short __pad1;
392b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long  st_ino;
393b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned short st_mode;
394b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned short st_nlink;
395b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned short st_uid;
396b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned short st_gid;
397b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned short st_rdev;
398b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned short __pad2;
399b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long  st_size;
400b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long  st_blksize;
401b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long  st_blocks;
402b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long  st_atime;
403b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long  st_atime_nsec;
404b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long  st_mtime;
405b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long  st_mtime_nsec;
406b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long  st_ctime;
407b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long  st_ctime_nsec;
408b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long  __unused4;
409b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long  __unused5;
410b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov};
411b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
412b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* This matches struct stat64 in glibc2.1, hence the absolutely
413b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * insane amounts of padding around dev_t's.
414b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov */
415b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstruct vki_stat64 {
416b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long long	st_dev;
417b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned int    __pad1;
418b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long   __st_ino;
419b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned int    st_mode;
420b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned int    st_nlink;
421b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long   st_uid;
422b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long   st_gid;
423b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long long	st_rdev;
424b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned int    __pad3;
425b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        long long	st_size;
426b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long   st_blksize;
427b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned char   __pad4[4];
428b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long   __pad5;     /* future possible st_blocks high bits */
429b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long   st_blocks;  /* Number 512-byte blocks allocated. */
430b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long   st_atime;
431b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long   st_atime_nsec;
432b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long   st_mtime;
433b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long   st_mtime_nsec;
434b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long   st_ctime;
435b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long   st_ctime_nsec;  /* will be high 32 bits of ctime someday */
436b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long long	st_ino;
437b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov};
438b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
439b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else
440b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
441b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstruct vki_stat {
442b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long  st_dev;
443b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long  st_ino;
444b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long  st_nlink;
445b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned int   st_mode;
446b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned int   st_uid;
447b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned int   st_gid;
448b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned int   __pad1;
449b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long  st_rdev;
450b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long  st_size;
451b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long  st_atime;
452b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long  st_atime_nsec;
453b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long  st_mtime;
454b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long  st_mtime_nsec;
455b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long  st_ctime;
456b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long  st_ctime_nsec;
457b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long  st_blksize;
458b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        long           st_blocks;
459b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long  __unused[3];
460b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov};
461b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
462b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* VGA_s390x */
463b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
464b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
465b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
466b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.16.60/include/asm-s390/statfs.h
467b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
468b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
469b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstruct vki_statfs {
470b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        int  f_type;
471b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        int  f_bsize;
472b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        long f_blocks;
473b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        long f_bfree;
474b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        long f_bavail;
475b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        long f_files;
476b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        long f_ffree;
477b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        __vki_kernel_fsid_t f_fsid;
478b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        int  f_namelen;
479b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        int  f_frsize;
480b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        int  f_spare[5];
481b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov};
482b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
483b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
484b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
485b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.16.60/include/asm-s390/termios.h
486b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
487b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
488b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstruct vki_winsize {
489b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned short ws_row;
490b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned short ws_col;
491b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned short ws_xpixel;
492b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned short ws_ypixel;
493b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov};
494b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
495b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_NCC 8
496b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstruct vki_termio {
497b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned short c_iflag;		/* input mode flags */
498b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned short c_oflag;		/* output mode flags */
499b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned short c_cflag;		/* control mode flags */
500b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned short c_lflag;		/* local mode flags */
501b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned char c_line;		/* line discipline */
502b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned char c_cc[VKI_NCC];	/* control characters */
503b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov};
504b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
505b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
506b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
507b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.16.60/include/asm-s390/termbits.h
508b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
509b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
510b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef unsigned char   vki_cc_t;
511b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef unsigned int    vki_tcflag_t;
512b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
513b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_NCCS 19
514b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstruct vki_termios {
515b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	vki_tcflag_t c_iflag;		/* input mode flags */
516b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	vki_tcflag_t c_oflag;		/* output mode flags */
517b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	vki_tcflag_t c_cflag;		/* control mode flags */
518b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	vki_tcflag_t c_lflag;		/* local mode flags */
519b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	vki_cc_t c_line;		/* line discipline */
520b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	vki_cc_t c_cc[VKI_NCCS];	/* control characters */
521b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov};
522b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
523b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
524b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
525b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.16.60/include/asm-s390/ioctl.h
526b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
527b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
528b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_IOC_NRBITS		8
529b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_IOC_TYPEBITS	8
530b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_IOC_SIZEBITS	14
531b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_IOC_DIRBITS	2
532b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
533b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_IOC_NRMASK		((1 << _VKI_IOC_NRBITS)-1)
534b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_IOC_TYPEMASK	((1 << _VKI_IOC_TYPEBITS)-1)
535b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_IOC_SIZEMASK	((1 << _VKI_IOC_SIZEBITS)-1)
536b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_IOC_DIRMASK	((1 << _VKI_IOC_DIRBITS)-1)
537b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
538b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_IOC_NRSHIFT	0
539b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_IOC_TYPESHIFT	(_VKI_IOC_NRSHIFT+_VKI_IOC_NRBITS)
540b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_IOC_SIZESHIFT	(_VKI_IOC_TYPESHIFT+_VKI_IOC_TYPEBITS)
541b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_IOC_DIRSHIFT	(_VKI_IOC_SIZESHIFT+_VKI_IOC_SIZEBITS)
542b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
543b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_IOC_NONE	0U
544b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_IOC_WRITE	1U
545b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_IOC_READ	2U
546b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
547b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_IOC(dir,type,nr,size) \
548b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	(((dir)  << _VKI_IOC_DIRSHIFT) | \
549b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	 ((type) << _VKI_IOC_TYPESHIFT) | \
550b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	 ((nr)   << _VKI_IOC_NRSHIFT) | \
551b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	 ((size) << _VKI_IOC_SIZESHIFT))
552b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
553b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* used to create numbers */
554b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_IO(type,nr)	_VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)
555b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_IOR(type,nr,size)	_VKI_IOC(_VKI_IOC_READ,(type),(nr),(_VKI_IOC_TYPECHECK(size)))
556b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_IOW(type,nr,size)	_VKI_IOC(_VKI_IOC_WRITE,(type),(nr),(_VKI_IOC_TYPECHECK(size)))
557b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_IOWR(type,nr,size)	_VKI_IOC(_VKI_IOC_READ|_VKI_IOC_WRITE,(type),(nr),(_VKI_IOC_TYPECHECK(size)))
558b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
559b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* used to decode ioctl numbers.. */
560b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_IOC_DIR(nr)	(((nr) >> _VKI_IOC_DIRSHIFT) & _VKI_IOC_DIRMASK)
561b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_IOC_TYPE(nr)	(((nr) >> _VKI_IOC_TYPESHIFT) & _VKI_IOC_TYPEMASK)
562b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_IOC_NR(nr)		(((nr) >> _VKI_IOC_NRSHIFT) & _VKI_IOC_NRMASK)
563b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define _VKI_IOC_SIZE(nr)	(((nr) >> _VKI_IOC_SIZESHIFT) & _VKI_IOC_SIZEMASK)
564b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
565b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
566b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.16.60/include/asm-s390/ioctls.h
567b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
568b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
569b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* 0x54 is just a magic number to make these relatively unique ('T') */
570b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
571b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TCGETS	0x5401
572b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TCSETS	0x5402
573b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TCSETSW	0x5403
574b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TCSETSF	0x5404
575b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TCGETA	0x5405
576b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TCSETA	0x5406
577b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TCSETAW	0x5407
578b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TCSETAF	0x5408
579b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TCSBRK	0x5409
580b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TCXONC	0x540A
581b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TCFLSH	0x540B
582b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
583b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TIOCSCTTY	0x540E
584b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TIOCGPGRP	0x540F
585b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TIOCSPGRP	0x5410
586b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TIOCOUTQ	0x5411
587b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
588b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TIOCGWINSZ	0x5413
589b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TIOCSWINSZ	0x5414
590b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TIOCMGET	0x5415
591b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TIOCMBIS	0x5416
592b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TIOCMBIC	0x5417
593b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TIOCMSET	0x5418
594b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
595b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_FIONREAD	0x541B
596b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TIOCLINUX	0x541C
597b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
598b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_FIONBIO	0x5421
599b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
600b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TCSBRKP	0x5425	/* Needed for POSIX tcsendbreak() */
601b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
602b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TIOCGPTN	_VKI_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
603b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TIOCSPTLCK	_VKI_IOW('T',0x31, int)  /* Lock/unlock Pty */
604b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
605b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_FIOASYNC	        0x5452
606b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
607b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TIOCSERGETLSR       0x5459 /* Get line status register */
608b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
609b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_TIOCGICOUNT	0x545D	/* read serial port inline interrupt counts */
610b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
611b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
612b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.39-rc2/arch/s390/include/asm/ioctls.h
613b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
614b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
615b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_FIOQSIZE 0x545E
616b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
617b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
618b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.16.60/include/asm-s390/poll.h
619b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
620b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
621b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstruct vki_pollfd {
622b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	int fd;
623b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	short events;
624b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	short revents;
625b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov};
626b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
627b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_POLLIN          0x0001
628b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
629b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
630b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.16.60/include/asm-s390/ptrace.h
631b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
632b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_NUM_GPRS	16
633b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_NUM_FPRS	16
634b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_NUM_CRS	16
635b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_NUM_ACRS	16
636b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
637b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef union
638b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
639b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	float   f;
640b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	double  d;
641b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        __vki_u64   ui;
642b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	struct
643b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	{
644b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov		__vki_u32 hi;
645b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov		__vki_u32 lo;
646b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	} fp;
647b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} vki_freg_t;
648b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
649b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef struct
650b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
651b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	__vki_u32   fpc;
652b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	vki_freg_t  fprs[VKI_NUM_FPRS];
653b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} vki_s390_fp_regs;
654b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
655b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef struct
656b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
657b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long mask;
658b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned long addr;
659b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} __attribute__ ((aligned(8))) vki_psw_t;
660b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
661b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef struct
662b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
663b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	vki_psw_t psw;
664b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long gprs[VKI_NUM_GPRS];
665b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned int  acrs[VKI_NUM_ACRS];
666b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long orig_gpr2;
667b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} vki_s390_regs;
668b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
669b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/*
670b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * Now for the program event recording (trace) definitions.
671b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov */
672b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef struct
673b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
674b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long cr[3];
675b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} vki_per_cr_words;
676b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
677b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef	struct
678b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
679b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifdef VGA_s390x
680b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned                       : 32;
681b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* VGA_s390x */
682b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned em_branching          : 1;
683b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned em_instruction_fetch  : 1;
684b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	/*
685b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	 * Switching on storage alteration automatically fixes
686b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	 * the storage alteration event bit in the users std.
687b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	 */
688b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned em_storage_alteration : 1;
689b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned em_gpr_alt_unused     : 1;
690b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned em_store_real_address : 1;
691b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned                       : 3;
692b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned branch_addr_ctl       : 1;
693b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned                       : 1;
694b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned storage_alt_space_ctl : 1;
695b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned                       : 21;
696b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long starting_addr;
697b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long ending_addr;
698b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} vki_per_cr_bits;
699b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
700b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef struct
701b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
702b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned short perc_atmid;
703b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long address;
704b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned char access_id;
705b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} vki_per_lowcore_words;
706b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
707b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef struct
708b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
709b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned perc_branching          : 1;
710b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned perc_instruction_fetch  : 1;
711b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned perc_storage_alteration : 1;
712b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned perc_gpr_alt_unused     : 1;
713b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned perc_store_real_address : 1;
714b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned                         : 3;
715b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned atmid_psw_bit_31        : 1;
716b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned atmid_validity_bit      : 1;
717b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned atmid_psw_bit_32        : 1;
718b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned atmid_psw_bit_5         : 1;
719b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned atmid_psw_bit_16        : 1;
720b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned atmid_psw_bit_17        : 1;
721b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned si                      : 2;
722b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long address;
723b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned                         : 4;
724b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned access_id               : 4;
725b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} vki_per_lowcore_bits;
726b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
727b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef struct
728b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
729b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	union {
730b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov		vki_per_cr_words   words;
731b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov		vki_per_cr_bits    bits;
732b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	} control_regs;
733b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	/*
734b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	 * Use these flags instead of setting em_instruction_fetch
735b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	 * directly they are used so that single stepping can be
736b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	 * switched on & off while not affecting other tracing
737b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	 */
738b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned  single_step       : 1;
739b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned  instruction_fetch : 1;
740b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned                    : 30;
741b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	/*
742b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	 * These addresses are copied into cr10 & cr11 if single
743b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	 * stepping is switched off
744b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	 */
745b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long starting_addr;
746b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long ending_addr;
747b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	union {
748b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov		vki_per_lowcore_words words;
749b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov		vki_per_lowcore_bits  bits;
750b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	} lowcore;
751b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} vki_per_struct;
752b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
753b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/*
754b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * The user_regs_struct defines the way the user registers are
755b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * store on the stack for signal handling.
756b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov */
757b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstruct vki_user_regs_struct
758b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
759b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	vki_psw_t psw;
760b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long gprs[VKI_NUM_GPRS];
761b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned int  acrs[VKI_NUM_ACRS];
762b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long orig_gpr2;
763b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	vki_s390_fp_regs fp_regs;
764b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	/*
765b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	 * These per registers are in here so that gdb can modify them
766b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	 * itself as there is no "official" ptrace interface for hardware
767b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	 * watchpoints. This is the way intel does it.
768b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	 */
769b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	vki_per_struct per_info;
770b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long ieee_instruction_pointer;
771b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	/* Used to give failing instruction back to user for ieee exceptions */
772b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov};
773b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
774b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef struct
775b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
776b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned int  vki_len;
777b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long vki_kernel_addr;
778b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long vki_process_addr;
779b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} vki_ptrace_area;
780b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
781b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/*
782b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * S/390 specific non posix ptrace requests
783b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov */
784b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_PTRACE_PEEKUSR_AREA       0x5000
785b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_PTRACE_POKEUSR_AREA       0x5001
786b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
787b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
788b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.16.60/include/asm-s390/elf.h
789b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
790b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
791b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef vki_s390_fp_regs vki_elf_fpregset_t;
792b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef vki_s390_regs vki_elf_gregset_t;
793b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
794b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
795b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
796b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.16.60/include/asm-s390/ucontext.h
797b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
798b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
799b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstruct vki_ucontext {
800b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long	      uc_flags;
801b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	struct vki_ucontext  *uc_link;
802b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	vki_stack_t	      uc_stack;
803b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	_vki_sigregs          uc_mcontext;
804b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	vki_sigset_t	      uc_sigmask; /* mask last for extensibility */
805b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov};
806b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
807b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
808b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.16.60/include/asm-s390/ipcbuf.h
809b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
810b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
811b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstruct vki_ipc64_perm
812b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
813b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	__vki_kernel_key_t	key;
814b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	__vki_kernel_uid32_t	uid;
815b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	__vki_kernel_gid32_t	gid;
816b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	__vki_kernel_uid32_t	cuid;
817b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	__vki_kernel_gid32_t	cgid;
818b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	__vki_kernel_mode_t	mode;
819b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned short		__pad1;
820b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned short		seq;
821b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef VGA_s390x
822b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned short		__pad2;
823b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* ! VGA_s390x */
824b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long		__unused1;
825b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long		__unused2;
826b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov};
827b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
828b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
829b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
830b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.16.60/include/asm-s390/sembuf.h
831b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
832b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
833b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstruct vki_semid64_ds {
834b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	struct vki_ipc64_perm sem_perm;		/* permissions .. see ipc.h */
835b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	__vki_kernel_time_t   sem_otime;	/* last semop time */
836b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef VGA_s390x
837b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long	__unused1;
838b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* ! VGA_s390x */
839b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	__vki_kernel_time_t   sem_ctime;	/* last change time */
840b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef VGA_s390x
841b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long	__unused2;
842b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* ! VGA_s390x */
843b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long	sem_nsems;		/* no. of semaphores in array */
844b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long	__unused3;
845b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long	__unused4;
846b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov};
847b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
848b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
849b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
850b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.16.60/include/asm-s390/msgbuf.h
851b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
852b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
853b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstruct vki_msqid64_ds {
854b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	struct vki_ipc64_perm msg_perm;
855b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	__vki_kernel_time_t msg_stime;	/* last msgsnd time */
856b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef VGA_s390x
857b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long	__unused1;
858b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* ! VGA_s390x */
859b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	__vki_kernel_time_t msg_rtime;	/* last msgrcv time */
860b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef VGA_s390x
861b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long	__unused2;
862b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* ! VGA_s390x */
863b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	__vki_kernel_time_t msg_ctime;	/* last change time */
864b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef VGA_s390x
865b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long	__unused3;
866b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* ! VGA_s390x */
867b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long  msg_cbytes;	/* current number of bytes on queue */
868b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long  msg_qnum;	/* number of messages in queue */
869b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long  msg_qbytes;	/* max number of bytes on queue */
870b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	__vki_kernel_pid_t msg_lspid;	/* pid of last msgsnd */
871b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	__vki_kernel_pid_t msg_lrpid;	/* last receive pid */
872b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long  __unused4;
873b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long  __unused5;
874b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov};
875b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
876b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
877b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
878b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.16.60/include/asm-s390/ipc.h
879b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
880b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
881b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstruct vki_ipc_kludge {
882b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	struct vki_msgbuf __user *msgp;
883b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	long msgtyp;
884b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov};
885b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
886b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SEMOP	 1
887b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SEMGET	 2
888b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SEMCTL	 3
889b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SEMTIMEDOP	 4
890b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_MSGSND	11
891b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_MSGRCV	12
892b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_MSGGET	13
893b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_MSGCTL	14
894b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SHMAT	21
895b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SHMDT	22
896b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SHMGET	23
897b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SHMCTL	24
898b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
899b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
900b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
901b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.16.60/include/asm-s390/shmbuf.h
902b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
903b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
904b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstruct vki_shmid64_ds {
905b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	struct vki_ipc64_perm	shm_perm;	/* operation perms */
906b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	vki_size_t		shm_segsz;	/* size of segment (bytes) */
907b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	__vki_kernel_time_t	shm_atime;	/* last attach time */
908b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef VGA_s390x
909b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long		__unused1;
910b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* ! VGA_s390x */
911b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	__vki_kernel_time_t	shm_dtime;	/* last detach time */
912b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef VGA_s390x
913b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long		__unused2;
914b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* ! VGA_s390x */
915b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	__vki_kernel_time_t	shm_ctime;	/* last change time */
916b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef VGA_s390x
917b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long		__unused3;
918b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* ! VGA_s390x */
919b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	__vki_kernel_pid_t	shm_cpid;	/* pid of creator */
920b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	__vki_kernel_pid_t	shm_lpid;	/* pid of last operator */
921b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long		shm_nattch;	/* no. of current attaches */
922b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long		__unused4;
923b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long		__unused5;
924b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov};
925b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
926b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstruct vki_shminfo64 {
927b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long	shmmax;
928b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long	shmmin;
929b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long	shmmni;
930b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long	shmseg;
931b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long	shmall;
932b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long	__unused1;
933b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long	__unused2;
934b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long	__unused3;
935b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	unsigned long	__unused4;
936b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov};
937b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
938b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
939b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
940b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// The following are defined in the VKI namespace but are nowhere found
941b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// in the linux headers.
942b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
943b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_BIG_ENDIAN      1
944b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_MAX_PAGE_SHIFT  VKI_PAGE_SHIFT
945b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_MAX_PAGE_SIZE   VKI_PAGE_SIZE
946b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
947b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
948b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// From linux-2.6.35.4/arch/s390x/include/asm/shmparam.h
949b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//----------------------------------------------------------------------
950b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
951b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_SHMLBA  VKI_PAGE_SIZE
952b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
953b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* If a system call returns a value >= VKI_MAX_ERRNO then that is considered
954b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   an error condition. I.e. the system call failed. */
955b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VKI_MAX_ERRNO       -125
956b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
957b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif // __VKI_S390X_LINUX_H
958b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
959b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/*--------------------------------------------------------------------*/
960b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/*--- end                                                          ---*/
961b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/*--------------------------------------------------------------------*/
962