valgrind-monitor.py regular expressions should use raw strings
[valgrind.git] / include / vki / vki-nanomips-linux.h
blob7f4b6d9029dda6c66dd6f07f96552c959afe7d9e
2 /*--------------------------------------------------------------------*/
3 /*-- nanoMIPS/Linux-specific kernel interface vki-nanomips-linux.h --*/
4 /*--------------------------------------------------------------------*/
6 /*
7 This file is part of Valgrind, a dynamic binary instrumentation
8 framework.
10 Copyright (C) 2018 RT-RK
12 This program is free software; you can redistribute it and/or
13 modify it under the terms of the GNU General Public License as
14 published by the Free Software Foundation; either version 2 of the
15 License, or (at your option) any later version.
17 This program is distributed in the hope that it will be useful, but
18 WITHOUT ANY WARRANTY; without even the implied warranty of
19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 General Public License for more details.
22 You should have received a copy of the GNU General Public License
23 along with this program; if not, write to the Free Software
24 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
25 02111-1307, USA.
27 The GNU General Public License is contained in the file COPYING.
30 #ifndef __VKI_NANOMIPS_LINUX_H
31 #define __VKI_NANOMIPS_LINUX_H
33 #include <config.h>
35 #if defined (_MIPSEL)
36 #define VKI_LITTLE_ENDIAN 1
37 #elif defined (_MIPSEB)
38 #define VKI_BIG_ENDIAN 1
39 #endif
41 #define VKI_PAGE_MASK (~(VKI_PAGE_SIZE - 1))
42 #define VKI_MAX_PAGE_SHIFT 16
43 #define VKI_MAX_PAGE_SIZE (1UL << VKI_MAX_PAGE_SHIFT)
45 #define VKI_SIGHUP 1
46 #define VKI_SIGINT 2
47 #define VKI_SIGQUIT 3
48 #define VKI_SIGILL 4
49 #define VKI_SIGTRAP 5
50 #define VKI_SIGABRT 6
51 #define VKI_SIGIOT 6
52 #define VKI_SIGBUS 7
53 #define VKI_SIGFPE 8
54 #define VKI_SIGKILL 9
55 #define VKI_SIGUSR1 10
56 #define VKI_SIGSEGV 11
57 #define VKI_SIGUSR2 12
58 #define VKI_SIGPIPE 13
59 #define VKI_SIGALRM 14
60 #define VKI_SIGTERM 15
61 #define VKI_SIGSTKFLT 16
62 #define VKI_SIGCHLD 17
63 #define VKI_SIGCONT 18
64 #define VKI_SIGSTOP 19
65 #define VKI_SIGTSTP 20
66 #define VKI_SIGTTIN 21
67 #define VKI_SIGTTOU 22
68 #define VKI_SIGURG 23
69 #define VKI_SIGXCPU 24
70 #define VKI_SIGXFSZ 25
71 #define VKI_SIGVTALRM 26
72 #define VKI_SIGPROF 27
73 #define VKI_SIGWINCH 28
74 #define VKI_SIGIO 29
75 #define VKI_SIGPWR 30
76 #define VKI_SIGSYS 31
77 #define VKI_SIGRTMIN 32
79 #define VKI_SIG_BLOCK 0 /* for blocking signals */
80 #define VKI_SIG_UNBLOCK 1 /* for unblocking signals */
81 #define VKI_SIG_SETMASK 2 /* for setting the signal mask */
83 /* default signal handling */
84 #define VKI_SIG_DFL ((__vki_sighandler_t)0)
85 /* ignore signal */
86 #define VKI_SIG_IGN ((__vki_sighandler_t)1)
88 #define VKI_SIGRTMAX _VKI_NSIG
89 #define VKI_MINSIGSTKSZ 2048
90 #define _VKI_NSIG 64
91 #define _VKI_NSIG_BPW 32
92 #define _VKI_NSIG_WORDS (_VKI_NSIG / _VKI_NSIG_BPW)
94 #define VKI_SA_NOCLDSTOP 0x00000001
95 #define VKI_SA_NOCLDWAIT 0x00000002
96 #define VKI_SA_SIGINFO 0x00000004
97 #define VKI_SA_ONSTACK 0x08000000
98 #define VKI_SA_RESTART 0x10000000
99 #define VKI_SA_NODEFER 0x40000000
100 #define VKI_SA_RESETHAND 0x80000000
101 #define VKI_SA_RESTORER 0x04000000
102 #define VKI_SA_NOMASK VKI_SA_NODEFER
103 #define VKI_SA_ONESHOT VKI_SA_RESETHAND
105 #define VKI_SS_ONSTACK 1
106 #define VKI_SS_DISABLE 2
108 #define VKI_PROT_NONE 0x0 /* No page permissions */
109 #define VKI_PROT_READ 0x1 /* page can be read */
110 #define VKI_PROT_WRITE 0x2 /* page can be written */
111 #define VKI_PROT_EXEC 0x4 /* page can be executed */
112 #define VKI_PROT_GROWSDOWN 0x1000000 /* mprotect flag: extend change to start
113 of growsdown vma */
114 #define VKI_PROT_GROWSUP 0x2000000 /* mprotect flag: extend change to end
115 of growsup vma */
116 #define VKI_MAP_SHARED 0x01 /* Share changes */
117 #define VKI_MAP_PRIVATE 0x02 /* Changes are private */
118 #define VKI_MAP_TYPE 0x0f /* Mask for type of mapping */
119 #define VKI_MAP_FIXED 0x10 /* Interpret addr exactly */
120 #define VKI_MAP_ANONYMOUS 0x0800 /* don't use a file */
121 #define VKI_MAP_GROWSDOWN 0x1000 /* stack-like segment */
122 #define VKI_MAP_DENYWRITE 0x2000 /* ETXTBSY */
123 #define VKI_MAP_EXECUTABLE 0x4000 /* mark it as an executable */
124 #define VKI_MAP_LOCKED 0x8000 /* pages are locked */
125 #define VKI_MAP_NORESERVE 0x0400 /* don't check for reservations */
126 #define VKI_MAP_POPULATE 0x10000 /* populate (prefault) pagetables */
127 #define VKI_MAP_NONBLOCK 0x20000 /* do not block on IO */
129 #define VKI_O_ACCMODE 03
130 #define VKI_O_RDONLY 00
131 #define VKI_O_WRONLY 01
132 #define VKI_O_RDWR 02
133 #define VKI_O_APPEND 0x000400
134 #define VKI_O_DSYNC 0x001000
135 #define VKI_O_NONBLOCK 0x000800
136 #define VKI_O_CREAT 0x000040
137 #define VKI_O_TRUNC 0x000200
138 #define VKI_O_EXCL 0x000080
139 #define VKI_O_NOCTTY 0x000100
140 #define VKI_FASYNC 0x002000
141 #define VKI_O_LARGEFILE 0x008000
142 #define __VKI_O_SYNC 0x101000
143 #define VKI_O_DIRECT 0x004000
144 #define VKI_O_CLOEXEC 0x080000
146 #define VKI_AT_FDCWD -100
147 #define VKI_AT_EMPTY_PATH 0x1000
149 #define VKI_F_DUPFD 0 /* dup */
150 #define VKI_F_GETFD 1 /* get close_on_exec */
151 #define VKI_F_SETFD 2 /* set/clear close_on_exec */
152 #define VKI_F_GETFL 3 /* get file->f_flags */
153 #define VKI_F_SETFL 4 /* set file->f_flags */
154 #define VKI_F_GETLK 5
155 #define VKI_F_SETLK 6
156 #define VKI_F_SETLKW 7
157 #define VKI_F_SETOWN 8 /* for sockets. */
158 #define VKI_F_GETOWN 9 /* for sockets. */
159 #define VKI_F_SETSIG 10 /* for sockets. */
160 #define VKI_F_GETSIG 11 /* for sockets. */
161 #define VKI_F_GETLK64 12
162 #define VKI_F_SETLK64 13
163 #define VKI_F_SETLKW64 14
164 #define VKI_F_SETOWN_EX 15
165 #define VKI_F_GETOWN_EX 16
166 #define VKI_F_OFD_GETLK 36
167 #define VKI_F_OFD_SETLK 37
168 #define VKI_F_OFD_SETLKW 38
169 #define VKI_F_LINUX_SPECIFIC_BASE 1024
171 #define VKI_FD_CLOEXEC 1
173 #define VKI_RLIMIT_DATA 2 /* max data size */
174 #define VKI_RLIMIT_STACK 3 /* max stack size */
175 #define VKI_RLIMIT_CORE 4 /* max core file size */
176 #define VKI_RLIMIT_NOFILE 7 /* max number of open files */
178 #define VKI_SOL_SOCKET 0xffff
180 #define VKI_SO_TYPE 0x1008
182 #define _VKI_IOC_NRBITS 8
183 #define _VKI_IOC_TYPEBITS 8
184 #define _VKI_IOC_SIZEBITS 13
185 #define _VKI_IOC_DIRBITS 3
187 #define _VKI_IOC_NRMASK ((1 << _VKI_IOC_NRBITS)-1)
188 #define _VKI_IOC_TYPEMASK ((1 << _VKI_IOC_TYPEBITS)-1)
189 #define _VKI_IOC_SIZEMASK ((1 << _VKI_IOC_SIZEBITS)-1)
190 #define _VKI_IOC_DIRMASK ((1 << _VKI_IOC_DIRBITS)-1)
192 #define _VKI_IOC_NRSHIFT 0
193 #define _VKI_IOC_TYPESHIFT (_VKI_IOC_NRSHIFT+_VKI_IOC_NRBITS)
194 #define _VKI_IOC_SIZESHIFT (_VKI_IOC_TYPESHIFT+_VKI_IOC_TYPEBITS)
195 #define _VKI_IOC_DIRSHIFT (_VKI_IOC_SIZESHIFT+_VKI_IOC_SIZEBITS)
197 #define _VKI_IOC_NONE 1U
198 #define _VKI_IOC_READ 2U
199 #define _VKI_IOC_WRITE 4U
201 #define _VKI_IOC(a,b,c,d) (((a)<<29) | ((b)<<8) | (c) | ((d)<<16))
203 #define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)
204 #define _VKI_IOR(type,nr,size) _VKI_IOC(_VKI_IOC_READ,(type),(nr), \
205 (_VKI_IOC_TYPECHECK(size)))
206 #define _VKI_IOW(type,nr,size) _VKI_IOC(_VKI_IOC_WRITE,(type),(nr), \
207 (_VKI_IOC_TYPECHECK(size)))
208 #define _VKI_IOWR(type,nr,size) _VKI_IOC(_VKI_IOC_READ|_VKI_IOC_WRITE,(type), \
209 (nr),(_VKI_IOC_TYPECHECK(size)))
211 #define _VKI_IOC_DIR(nr) (((nr) >> _VKI_IOC_DIRSHIFT) & _VKI_IOC_DIRMASK)
212 #define _VKI_IOC_TYPE(nr) (((nr) >> _VKI_IOC_TYPESHIFT) & _VKI_IOC_TYPEMASK)
213 #define _VKI_IOC_NR(nr) (((nr) >> _VKI_IOC_NRSHIFT) & _VKI_IOC_NRMASK)
214 #define _VKI_IOC_SIZE(nr) (((nr) >> _VKI_IOC_SIZESHIFT) & _VKI_IOC_SIZEMASK)
216 #define VKI_TCGETA 0x5401
217 #define VKI_TCSETA 0x5402
218 #define VKI_TCSETAW 0x5403
219 #define VKI_TCSETAF 0x5404
220 #define VKI_TCSBRK 0x5405
221 #define VKI_TCXONC 0x5406
222 #define VKI_TCFLSH 0x5407
223 #define VKI_TCGETS 0x540D
224 #define VKI_TCSETS 0x540E
225 #define VKI_TCSETSW 0x540F
226 #define VKI_TCSETSF 0x5410
228 #define VKI_FIONREAD 0x467F
229 #define VKI_FIOCLEX 0x6601
230 #define VKI_FIONCLEX 0x6602
231 #define VKI_FIOASYNC 0x667D
232 #define VKI_FIONBIO 0x667E
233 #define VKI_FIOQSIZE 0x667F
235 #define VKI_TIOCSBRK 0x5427 /* BSD compatibility */
236 #define VKI_TIOCCBRK 0x5428 /* BSD compatibility */
237 #define VKI_TIOCPKT 0x5470 /* pty: set/clear packet mode */
238 #define VKI_TIOCNOTTY 0x5471
239 #define VKI_TIOCSTI 0x5472 /* simulate terminal input */
240 #define VKI_TIOCSCTTY 0x5480 /* become controlling tty */
241 #define VKI_TIOCGSOFTCAR 0x5481
242 #define VKI_TIOCSSOFTCAR 0x5482
243 #define VKI_TIOCLINUX 0x5483
244 #define VKI_TIOCGSERIAL 0x5484
245 #define VKI_TIOCSSERIAL 0x5485
246 #define VKI_TCSBRKP 0x5486 /* Needed for POSIX tcsendbreak() */
247 #define VKI_TIOCSERCONFIG 0x5488
248 #define VKI_TIOCSERGWILD 0x5489
249 #define VKI_TIOCSERSWILD 0x548a
250 #define VKI_TIOCGLCKTRMIOS 0x548b
251 #define VKI_TIOCSLCKTRMIOS 0x548c
252 #define VKI_TIOCSERGSTRUCT 0x548d /* For debugging only */
253 #define VKI_TIOCSERGETLSR 0x548e /* Get line status register */
254 #define VKI_TIOCSERGETMULTI 0x548f /* Get multiport config */
255 #define VKI_TIOCSERSETMULTI 0x5490 /* Set multiport config */
256 #define VKI_TIOCMIWAIT 0x5491 /* wait for a change on serial input line(s) */
257 #define VKI_TIOCGICOUNT 0x5492 /* read serial port inline interrupt counts */
258 #define VKI_TIOCGHAYESESP 0x5493 /* Get Hayes ESP configuration */
259 #define VKI_TIOCSHAYESESP 0x5494 /* Set Hayes ESP configuration */
260 #define VKI_TIOCGETD 0x7400
261 #define VKI_TIOCSETD 0x7401
262 #define VKI_TIOCGETP 0x7408
263 #define VKI_TIOCSETP 0x7409
264 #define VKI_TIOCSETN 0x740A /* TIOCSETP wo flush */
265 #define VKI_TIOCEXCL 0x740D /* set exclusive use of tty */
266 #define VKI_TIOCNXCL 0x740E /* reset exclusive use of tty */
267 #define VKI_TIOCGSID 0x7416 /* Return the session ID of FD */
268 #define VKI_TIOCMSET 0x741A /* set all modem bits */
269 #define VKI_TIOCMBIS 0x741B /* bis modem bits */
270 #define VKI_TIOCMBIC 0x741C /* bic modem bits */
271 #define VKI_TIOCMGET 0x741D /* get all modem bits */
272 #define VKI_TIOCOUTQ 0x7472 /* output queue size */
273 #define VKI_TIOCGLTC 0x7474
274 #define VKI_TIOCSLTC 0x7475
275 #define VKI_TIOCINQ VKI_FIONREAD
277 #define VKI_TIOCSWINSZ _VKI_IOW('t', 103, struct vki_winsize)
278 #define VKI_TIOCGWINSZ _VKI_IOR('t', 104, struct vki_winsize)
279 #define VKI_TIOCSPGRP _VKI_IOW('t', 118, int)
280 #define VKI_TIOCGPGRP _VKI_IOR('t', 119, int)
281 #define VKI_TIOCCONS _VKI_IOW('t', 120, int)
282 #define VKI_TIOCGPTN _VKI_IOR('T',0x30, unsigned int)
283 #define VKI_TIOCSPTLCK _VKI_IOW('T',0x31, int)
285 #define VKI_TIOCPKT_DATA 0x00 /* data packet */
286 #define VKI_TIOCPKT_FLUSHREAD 0x01 /* flush packet */
287 #define VKI_TIOCPKT_FLUSHWRITE 0x02 /* flush packet */
288 #define VKI_TIOCPKT_STOP 0x04 /* stop output */
289 #define VKI_TIOCPKT_START 0x08 /* start output */
290 #define VKI_TIOCPKT_NOSTOP 0x10 /* no more ^S, ^Q */
291 #define VKI_TIOCPKT_DOSTOP 0x20 /* now do ^S ^Q */
293 #define NCC 8
294 #define NCCS 23
296 #define VKI_SO_ATTACH_FILTER 26
298 #define VKI_SIOCATMARK _VKI_IOR('s', 7, int)
299 #define VKI_SIOCSPGRP _VKI_IOW('s', 8, vki_pid_t)
300 #define VKI_SIOCGPGRP _VKI_IOR('s', 9, vki_pid_t)
301 #define VKI_SIOCGSTAMP 0x8906
302 #define VKI_SIOCGSTAMPNS 0x8907
304 #define VKI_POLLIN 0x0001
306 #define VKI_SEMOP 1
307 #define VKI_SEMGET 2
308 #define VKI_SEMCTL 3
309 #define VKI_SEMTIMEDOP 4
310 #define VKI_MSGSND 11
311 #define VKI_MSGRCV 12
312 #define VKI_MSGGET 13
313 #define VKI_MSGCTL 14
314 #define VKI_SHMAT 21
315 #define VKI_SHMDT 22
316 #define VKI_SHMGET 23
317 #define VKI_SHMCTL 24
318 #define VKI_SHMLBA 0x40000
320 #define VKI_EF_NANOMIPS_ABI 0x0000F000
321 #define VKI_EF_NANOMIPS_ABI_P32 0x00001000
323 #define VKI_PTRACE_GETREGS 12
324 #define VKI_PTRACE_SETREGS 13
325 #define VKI_PTRACE_GETFPREGS 14
326 #define VKI_PTRACE_SETFPREGS 15
328 #define VKI_MIPS32_EF_R0 6
329 #define VKI_MIPS32_EF_R1 7
330 #define VKI_MIPS32_EF_R2 8
331 #define VKI_MIPS32_EF_R3 9
332 #define VKI_MIPS32_EF_R4 10
333 #define VKI_MIPS32_EF_R5 11
334 #define VKI_MIPS32_EF_R6 12
335 #define VKI_MIPS32_EF_R7 13
336 #define VKI_MIPS32_EF_R8 14
337 #define VKI_MIPS32_EF_R9 15
338 #define VKI_MIPS32_EF_R10 16
339 #define VKI_MIPS32_EF_R11 17
340 #define VKI_MIPS32_EF_R12 18
341 #define VKI_MIPS32_EF_R13 19
342 #define VKI_MIPS32_EF_R14 20
343 #define VKI_MIPS32_EF_R15 21
344 #define VKI_MIPS32_EF_R16 22
345 #define VKI_MIPS32_EF_R17 23
346 #define VKI_MIPS32_EF_R18 24
347 #define VKI_MIPS32_EF_R19 25
348 #define VKI_MIPS32_EF_R20 26
349 #define VKI_MIPS32_EF_R21 27
350 #define VKI_MIPS32_EF_R22 28
351 #define VKI_MIPS32_EF_R23 29
352 #define VKI_MIPS32_EF_R24 30
353 #define VKI_MIPS32_EF_R25 31
354 #define VKI_MIPS32_EF_R26 32
355 #define VKI_MIPS32_EF_R27 33
356 #define VKI_MIPS32_EF_R28 34
357 #define VKI_MIPS32_EF_R29 35
358 #define VKI_MIPS32_EF_R30 36
359 #define VKI_MIPS32_EF_R31 37
361 #define VKI_MIPS32_EF_CP0_EPC 40
362 #define VKI_MIPS32_EF_CP0_BADVADDR 41
363 #define VKI_MIPS32_EF_CP0_STATUS 42
364 #define VKI_MIPS32_EF_CP0_CAUSE 43
365 #define VKI_MIPS32_EF_UNUSED0 44
367 #define VKI_ELF_NGREG 45
368 #define VKI_ELF_NFPREG 1 /* Not used. Just to satisfy compiler. */
370 #define VKI_AT_SYSINFO 32
372 #ifndef __VKI_ARCH_SI_PREAMBLE_SIZE
373 #define __VKI_ARCH_SI_PREAMBLE_SIZE (3 * sizeof(int))
374 #endif
376 #define VKI_SI_MAX_SIZE 128
378 #ifndef VKI_SI_PAD_SIZE
379 #define VKI_SI_PAD_SIZE ((VKI_SI_MAX_SIZE - __VKI_ARCH_SI_PREAMBLE_SIZE) \
380 / sizeof(int))
381 #endif
383 #ifndef __VKI_ARCH_SI_UID_T
384 #define __VKI_ARCH_SI_UID_T vki_uid_t
385 #endif
387 #ifndef __VKI_ARCH_SI_BAND_T
388 #define __VKI_ARCH_SI_BAND_T long
389 #endif
391 #define VKI_BRK_OVERFLOW 6 /* Overflow check */
392 #define VKI_BRK_DIVZERO 7 /* Divide by zero check */
394 #define VKI_ELIBBAD 84 /* Accessing a corrupted shared library */
395 #define VKI_EOPNOTSUPP 122 /* Operation not supported on transport
396 endpoint */
397 #define VKI_ENOSYS 38 /* Function not implemented */
398 #define VKI_EOVERFLOW 75 /* Value too large for defined data type */
400 #define ARCH_HAS_SOCKET_TYPES 1
401 #define HAVE_ARCH_SIGINFO_T 1
403 #define VKI_RLIM_INFINITY 0x7fffffffUL
405 typedef __signed__ char __vki_s8;
406 typedef unsigned char __vki_u8;
408 typedef __signed__ short __vki_s16;
409 typedef unsigned short __vki_u16;
411 typedef __signed__ int __vki_s32;
412 typedef unsigned int __vki_u32;
414 typedef __signed__ long long __vki_s64;
415 typedef unsigned long long __vki_u64;
417 typedef __signed char vki_s8;
418 typedef unsigned char vki_u8;
420 typedef __signed short vki_s16;
421 typedef unsigned short vki_u16;
423 typedef __signed int vki_s32;
424 typedef unsigned int vki_u32;
426 typedef void __vki_signalfn_t(int);
427 typedef __vki_signalfn_t __user *__vki_sighandler_t;
429 typedef void __vki_restorefn_t(void);
430 typedef __vki_restorefn_t __user *__vki_sigrestore_t;
432 typedef unsigned long vki_old_sigset_t;
434 typedef struct {
435 unsigned long sig[_VKI_NSIG_WORDS];
436 } vki_sigset_t;
438 struct vki_old_sigaction {
439 __vki_sighandler_t ksa_handler;
440 unsigned int sa_flags;
441 vki_old_sigset_t sa_mask;
442 __vki_sigrestore_t sa_restorer;
445 struct vki_sigaction_base {
446 __vki_sighandler_t ksa_handler;
447 unsigned int sa_flags;
448 vki_sigset_t sa_mask;
449 __vki_sigrestore_t sa_restorer;
452 // On Linux we use the same type for passing sigactions to
453 // and from the kernel. Hence: */
454 typedef struct vki_sigaction_base vki_sigaction_toK_t;
455 typedef struct vki_sigaction_base vki_sigaction_fromK_t;
457 typedef struct vki_sigaltstack {
458 void __user *ss_sp;
459 int ss_flags;
460 vki_size_t ss_size;
461 } vki_stack_t;
463 struct vki_sigcontext {
464 __vki_u64 sc_regs[32];
465 __vki_u64 sc_pc;
466 __vki_u32 sc_used_math;
467 __vki_u32 sc_reserved;
470 struct vki_winsize {
471 unsigned short ws_row;
472 unsigned short ws_col;
473 unsigned short ws_xpixel;
474 unsigned short ws_ypixel;
477 struct vki_termio {
478 unsigned short c_iflag; /* input mode flags */
479 unsigned short c_oflag; /* output mode flags */
480 unsigned short c_cflag; /* control mode flags */
481 unsigned short c_lflag; /* local mode flags */
482 char c_line; /* line discipline */
483 unsigned char c_cc[NCCS]; /* control characters */
486 typedef unsigned char vki_cc_t;
487 typedef unsigned long vki_speed_t;
488 typedef unsigned long vki_tcflag_t;
490 struct vki_termios {
491 vki_tcflag_t c_iflag; /* input mode flags */
492 vki_tcflag_t c_oflag; /* output mode flags */
493 vki_tcflag_t c_cflag; /* control mode flags */
494 vki_tcflag_t c_lflag; /* local mode flags */
495 vki_cc_t c_line; /* line discipline */
496 vki_cc_t c_cc[NCCS]; /* control characters */
499 struct vki_f_owner_ex {
500 int type;
501 __vki_kernel_pid_t pid;
504 struct vki_pollfd {
505 int fd;
506 short events;
507 short revents;
510 struct vki_ucontext {
511 unsigned long uc_flags;
512 struct vki_ucontext *uc_link;
513 vki_stack_t uc_stack;
514 struct vki_sigcontext uc_mcontext;
515 vki_sigset_t uc_sigmask; /* mask last for extensibility */
518 typedef char vki_modify_ldt_t;
520 struct vki_ipc64_perm {
521 __vki_kernel_key_t key;
522 __vki_kernel_uid_t uid;
523 __vki_kernel_gid_t gid;
524 __vki_kernel_uid_t cuid;
525 __vki_kernel_gid_t cgid;
526 __vki_kernel_mode_t mode;
527 unsigned short seq;
528 unsigned short __pad1;
529 unsigned long __unused1;
530 unsigned long __unused2;
533 struct vki_semid64_ds {
534 struct vki_ipc64_perm sem_perm; /* permissions .. see ipc.h */
535 __vki_kernel_time_t sem_otime; /* last semop time */
536 __vki_kernel_time_t sem_ctime; /* last change time */
537 unsigned long sem_nsems; /* no. of semaphores in array */
538 unsigned long __unused1;
539 unsigned long __unused2;
542 struct vki_msqid64_ds {
543 struct vki_ipc64_perm msg_perm;
544 __vki_kernel_time_t msg_stime; /* last msgsnd time */
545 unsigned long __unused1;
546 __vki_kernel_time_t msg_rtime; /* last msgrcv time */
547 unsigned long __unused2;
548 __vki_kernel_time_t msg_ctime; /* last change time */
549 unsigned long __unused3;
550 unsigned long msg_cbytes; /* current number of bytes on queue */
551 unsigned long msg_qnum; /* number of messages in queue */
552 unsigned long msg_qbytes; /* max number of bytes on queue */
553 __vki_kernel_pid_t msg_lspid; /* pid of last msgsnd */
554 __vki_kernel_pid_t msg_lrpid; /* last receive pid */
555 unsigned long __unused4;
556 unsigned long __unused5;
559 struct vki_ipc_kludge {
560 struct vki_msgbuf __user *msgp;
561 long msgtyp;
564 struct vki_shmid64_ds {
565 struct vki_ipc64_perm shm_perm; /* operation perms */
566 vki_size_t shm_segsz; /* size of segment (bytes) */
567 __vki_kernel_time_t shm_atime; /* last attach time */
568 __vki_kernel_time_t shm_dtime; /* last detach time */
569 __vki_kernel_time_t shm_ctime; /* last change time */
570 __vki_kernel_pid_t shm_cpid; /* pid of creator */
571 __vki_kernel_pid_t shm_lpid; /* pid of last operator */
572 unsigned long shm_nattch; /* no. of current attaches */
573 unsigned long __unused1;
574 unsigned long __unused2;
577 struct vki_shminfo64 {
578 unsigned long shmmax;
579 unsigned long shmmin;
580 unsigned long shmmni;
581 unsigned long shmseg;
582 unsigned long shmall;
583 unsigned long __unused1;
584 unsigned long __unused2;
585 unsigned long __unused3;
586 unsigned long __unused4;
589 typedef unsigned long vki_elf_greg_t;
591 typedef vki_elf_greg_t vki_elf_gregset_t[VKI_ELF_NGREG];
593 typedef double vki_elf_fpreg_t;
595 typedef vki_elf_fpreg_t vki_elf_fpregset_t[VKI_ELF_NFPREG];
597 typedef struct vki_user_fxsr_struct vki_elf_fpxregset_t;
599 typedef union vki_sigval {
600 int sival_int;
601 void __user *sival_ptr;
602 } vki_sigval_t;
604 typedef struct vki_siginfo {
605 int si_signo;
606 int si_errno;
607 int si_code;
608 int __pad0[VKI_SI_MAX_SIZE / sizeof(int) - VKI_SI_PAD_SIZE - 3];
610 union {
611 int _pad[VKI_SI_PAD_SIZE];
613 /* kill() */
614 struct {
615 vki_pid_t _pid; /* sender's pid */
616 __VKI_ARCH_SI_UID_T _uid; /* sender's uid */
617 } _kill;
619 /* POSIX.1b timers */
620 struct {
621 vki_timer_t _tid; /* timer id */
622 int _overrun; /* overrun count */
623 char _pad[sizeof( __VKI_ARCH_SI_UID_T) - sizeof(int)];
624 vki_sigval_t _sigval; /* same as below */
625 int _sys_private; /* not to be passed to user */
626 } _timer;
628 /* POSIX.1b signals */
629 struct {
630 vki_pid_t _pid; /* sender's pid */
631 __VKI_ARCH_SI_UID_T _uid; /* sender's uid */
632 vki_sigval_t _sigval;
633 } _rt;
635 /* SIGCHLD */
636 struct {
637 vki_pid_t _pid; /* which child */
638 __VKI_ARCH_SI_UID_T _uid; /* sender's uid */
639 int _status; /* exit code */
640 vki_clock_t _utime;
641 vki_clock_t _stime;
642 } _sigchld;
644 /* IRIX SIGCHLD */
645 struct {
646 vki_pid_t _pid; /* which child */
647 vki_clock_t _utime;
648 int _status; /* exit code */
649 vki_clock_t _stime;
650 } _irix_sigchld;
652 /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
653 struct {
654 void __user *_addr; /* faulting insn/memory ref. */
655 #ifdef __ARCH_SI_TRAPNO
656 int _trapno; /* TRAP # which caused the signal */
657 #endif
658 } _sigfault;
660 /* SIGPOLL, SIGXFSZ (To do ...) */
661 struct {
662 __VKI_ARCH_SI_BAND_T _band; /* POLL_IN, POLL_OUT, POLL_MSG */
663 int _fd;
664 } _sigpoll;
665 } _sifields;
666 } vki_siginfo_t;
668 enum vki_sock_type {
669 VKI_SOCK_STREAM = 2,
672 /* nanoMIPS uses runtime pagesize detection */
673 extern UWord VKI_PAGE_SHIFT;
674 extern UWord VKI_PAGE_SIZE;
676 #endif
678 /*--------------------------------------------------------------------*/
679 /*--- end vki-nanomips-linux.h ---*/
680 /*--------------------------------------------------------------------*/