2 /*--------------------------------------------------------------------*/
3 /*-- nanoMIPS/Linux-specific kernel interface vki-nanomips-linux.h --*/
4 /*--------------------------------------------------------------------*/
7 This file is part of Valgrind, a dynamic binary instrumentation
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
27 The GNU General Public License is contained in the file COPYING.
30 #ifndef __VKI_NANOMIPS_LINUX_H
31 #define __VKI_NANOMIPS_LINUX_H
36 #define VKI_LITTLE_ENDIAN 1
37 #elif defined (_MIPSEB)
38 #define VKI_BIG_ENDIAN 1
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)
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
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
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)
86 #define VKI_SIG_IGN ((__vki_sighandler_t)1)
88 #define VKI_SIGRTMAX _VKI_NSIG
89 #define VKI_MINSIGSTKSZ 2048
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
114 #define VKI_PROT_GROWSUP 0x2000000 /* mprotect flag: extend change to end
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 */
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
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
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))
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) \
383 #ifndef __VKI_ARCH_SI_UID_T
384 #define __VKI_ARCH_SI_UID_T vki_uid_t
387 #ifndef __VKI_ARCH_SI_BAND_T
388 #define __VKI_ARCH_SI_BAND_T long
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
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
;
435 unsigned long sig
[_VKI_NSIG_WORDS
];
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
{
463 struct vki_sigcontext
{
464 __vki_u64 sc_regs
[32];
466 __vki_u32 sc_used_math
;
467 __vki_u32 sc_reserved
;
471 unsigned short ws_row
;
472 unsigned short ws_col
;
473 unsigned short ws_xpixel
;
474 unsigned short ws_ypixel
;
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
;
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
{
501 __vki_kernel_pid_t pid
;
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
;
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
;
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
{
601 void __user
*sival_ptr
;
604 typedef struct vki_siginfo
{
608 int __pad0
[VKI_SI_MAX_SIZE
/ sizeof(int) - VKI_SI_PAD_SIZE
- 3];
611 int _pad
[VKI_SI_PAD_SIZE
];
615 vki_pid_t _pid
; /* sender's pid */
616 __VKI_ARCH_SI_UID_T _uid
; /* sender's uid */
619 /* POSIX.1b timers */
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 */
628 /* POSIX.1b signals */
630 vki_pid_t _pid
; /* sender's pid */
631 __VKI_ARCH_SI_UID_T _uid
; /* sender's uid */
632 vki_sigval_t _sigval
;
637 vki_pid_t _pid
; /* which child */
638 __VKI_ARCH_SI_UID_T _uid
; /* sender's uid */
639 int _status
; /* exit code */
646 vki_pid_t _pid
; /* which child */
648 int _status
; /* exit code */
652 /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
654 void __user
*_addr
; /* faulting insn/memory ref. */
655 #ifdef __ARCH_SI_TRAPNO
656 int _trapno
; /* TRAP # which caused the signal */
660 /* SIGPOLL, SIGXFSZ (To do ...) */
662 __VKI_ARCH_SI_BAND_T _band
; /* POLL_IN, POLL_OUT, POLL_MSG */
672 /* nanoMIPS uses runtime pagesize detection */
673 extern UWord VKI_PAGE_SHIFT
;
674 extern UWord VKI_PAGE_SIZE
;
678 /*--------------------------------------------------------------------*/
679 /*--- end vki-nanomips-linux.h ---*/
680 /*--------------------------------------------------------------------*/