File indexing completed on 2026-05-20 08:25:19
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073 #ifndef __VKI_LINUX_H
0074 #define __VKI_LINUX_H
0075
0076
0077
0078
0079
0080 #if defined(VGA_x86)
0081 # include "vki-posixtypes-x86-linux.h"
0082 #elif defined(VGA_amd64)
0083 # include "vki-posixtypes-amd64-linux.h"
0084 #elif defined(VGA_ppc32)
0085 # include "vki-posixtypes-ppc32-linux.h"
0086 #elif defined(VGA_ppc64be) || defined(VGA_ppc64le)
0087 # include "vki-posixtypes-ppc64-linux.h"
0088 #elif defined(VGA_arm)
0089 # include "vki-posixtypes-arm-linux.h"
0090 #elif defined(VGA_arm64)
0091 # include "vki-posixtypes-arm64-linux.h"
0092 #elif defined(VGA_s390x)
0093 # include "vki-posixtypes-s390x-linux.h"
0094 #elif defined(VGA_mips32)
0095 # include "vki-posixtypes-mips32-linux.h"
0096 #elif defined(VGA_mips64)
0097 # include "vki-posixtypes-mips64-linux.h"
0098 #elif defined(VGA_nanomips)
0099 # include "vki-posixtypes-nanomips-linux.h"
0100 #elif defined(VGA_riscv64)
0101 # include "vki-posixtypes-riscv64-linux.h"
0102 #else
0103 # error Unknown platform
0104 #endif
0105
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116 #ifdef __cplusplus
0117 template <bool b> struct vki_static_assert { int m_bitfield:(2*b-1); };
0118 #define VKI_STATIC_ASSERT(expr) \
0119 (sizeof(vki_static_assert<(expr)>) - sizeof(int))
0120 #else
0121 #define VKI_STATIC_ASSERT(expr) (sizeof(struct { int:-!(expr); }))
0122 #endif
0123
0124
0125
0126
0127
0128
0129 #define _VKI_IOC_TYPECHECK(t) \
0130 (VKI_STATIC_ASSERT((sizeof(t) == sizeof(t[1]) \
0131 && sizeof(t) < (1 << _VKI_IOC_SIZEBITS))) \
0132 + sizeof(t))
0133
0134
0135
0136
0137
0138 # define __user
0139
0140
0141
0142
0143
0144 #ifdef __GNUC__
0145 #define __vki_packed __attribute__((packed))
0146 #endif
0147
0148
0149
0150
0151
0152 #undef __VKI_NFDBITS
0153 #define __VKI_NFDBITS (8 * sizeof(unsigned long))
0154
0155 #undef __VKI_FD_SETSIZE
0156 #define __VKI_FD_SETSIZE 1024
0157
0158 #undef __VKI_FDSET_LONGS
0159 #define __VKI_FDSET_LONGS (__VKI_FD_SETSIZE/__VKI_NFDBITS)
0160
0161 #undef __VKI_FDELT
0162 #define __VKI_FDELT(d) ((d) / __VKI_NFDBITS)
0163
0164 #undef __VKI_FDMASK
0165 #define __VKI_FDMASK(d) (1UL << ((d) % __VKI_NFDBITS))
0166
0167 typedef struct {
0168 unsigned long fds_bits [__VKI_FDSET_LONGS];
0169 } __vki_kernel_fd_set;
0170
0171 typedef int __vki_kernel_key_t;
0172 typedef int __vki_kernel_mqd_t;
0173
0174
0175
0176
0177
0178 struct vki_ustat {
0179 #if defined(VGA_mips32) || defined(VGA_mips64) || defined(VGA_nanomips)
0180 long f_tfree;
0181 #else
0182 int f_tfree;
0183 #endif
0184 #if defined(VGA_s390x)
0185 unsigned int f_tinode;
0186 #else
0187 unsigned long f_tinode;
0188 #endif
0189 char f_fname[6];
0190 char f_fpack[6];
0191 };
0192
0193
0194
0195
0196
0197 typedef __vki_kernel_fd_set vki_fd_set;
0198 typedef __vki_kernel_mode_t vki_mode_t;
0199 typedef __vki_kernel_off_t vki_off_t;
0200 typedef __vki_kernel_pid_t vki_pid_t;
0201 typedef __vki_kernel_key_t vki_key_t;
0202 typedef __vki_kernel_suseconds_t vki_suseconds_t;
0203 typedef __vki_kernel_timer_t vki_timer_t;
0204 typedef __vki_kernel_clockid_t vki_clockid_t;
0205 typedef __vki_kernel_mqd_t vki_mqd_t;
0206
0207
0208 typedef __vki_kernel_uid32_t vki_uid_t;
0209 typedef __vki_kernel_gid32_t vki_gid_t;
0210
0211 typedef __vki_kernel_old_uid_t vki_old_uid_t;
0212 typedef __vki_kernel_old_gid_t vki_old_gid_t;
0213
0214 typedef __vki_kernel_loff_t vki_loff_t;
0215
0216 typedef __vki_kernel_size_t vki_size_t;
0217 typedef __vki_kernel_time_t vki_time_t;
0218 typedef __vki_kernel_clock_t vki_clock_t;
0219 typedef __vki_kernel_caddr_t vki_caddr_t;
0220
0221 typedef unsigned long vki_u_long;
0222
0223 typedef unsigned int vki_uint;
0224
0225
0226
0227
0228
0229 #if defined(VGA_x86)
0230 # include "vki-x86-linux.h"
0231 #elif defined(VGA_amd64)
0232 # include "vki-amd64-linux.h"
0233 #elif defined(VGA_ppc32)
0234 # include "vki-ppc32-linux.h"
0235 #elif defined(VGA_ppc64be) || defined(VGA_ppc64le)
0236 # include "vki-ppc64-linux.h"
0237 #elif defined(VGA_arm)
0238 # include "vki-arm-linux.h"
0239 #elif defined(VGA_arm64)
0240 # include "vki-arm64-linux.h"
0241 #elif defined(VGA_s390x)
0242 # include "vki-s390x-linux.h"
0243 #elif defined(VGA_mips32)
0244 # include "vki-mips32-linux.h"
0245 #elif defined(VGA_mips64)
0246 # include "vki-mips64-linux.h"
0247 #elif defined(VGA_nanomips)
0248 # include "vki-nanomips-linux.h"
0249 #elif defined(VGA_riscv64)
0250 # include "vki-riscv64-linux.h"
0251 #else
0252 # error Unknown platform
0253 #endif
0254
0255
0256
0257
0258
0259 typedef __vki_s32 vki_int32_t;
0260 typedef __vki_s16 vki_int16_t;
0261 typedef __vki_s64 vki_int64_t;
0262
0263 typedef __vki_u8 vki_uint8_t;
0264 typedef __vki_u16 vki_uint16_t;
0265 typedef __vki_u32 vki_uint32_t;
0266 typedef __vki_u64 vki_uint64_t;
0267
0268 typedef __vki_u16 __vki_le16;
0269
0270 #define __vki_aligned_u64 __vki_u64 __attribute__((aligned(8)))
0271
0272
0273
0274
0275
0276 #define VKI_PATH_MAX 4096
0277
0278
0279
0280
0281
0282 struct vki_sysinfo {
0283 long uptime;
0284 unsigned long loads[3];
0285 unsigned long totalram;
0286 unsigned long freeram;
0287 unsigned long sharedram;
0288 unsigned long bufferram;
0289 unsigned long totalswap;
0290 unsigned long freeswap;
0291 unsigned short procs;
0292 unsigned short pad;
0293 unsigned long totalhigh;
0294 unsigned long freehigh;
0295 unsigned int mem_unit;
0296 char _f[20-2*sizeof(long)-sizeof(int)];
0297 };
0298
0299
0300
0301
0302
0303 #define VKI_CLOCK_REALTIME 0
0304 #define VKI_CLOCK_MONOTONIC 1
0305 #define VKI_CLOCK_PROCESS_CPUTIME_ID 2
0306 #define VKI_CLOCK_THREAD_CPUTIME_ID 3
0307
0308 struct vki_timespec {
0309 vki_time_t tv_sec;
0310 long tv_nsec;
0311 };
0312
0313
0314 #define VKI_UTIME_NOW ((1l << 30) - 1l)
0315 #define VKI_UTIME_OMIT ((1l << 30) - 2l)
0316
0317 struct vki_timeval {
0318 vki_time_t tv_sec;
0319 vki_suseconds_t tv_usec;
0320 };
0321
0322 struct vki_timezone {
0323 int tz_minuteswest;
0324 int tz_dsttime;
0325 };
0326
0327 struct vki_itimerspec {
0328 struct vki_timespec it_interval;
0329 struct vki_timespec it_value;
0330 };
0331
0332 struct vki_itimerval {
0333 struct vki_timeval it_interval;
0334 struct vki_timeval it_value;
0335 };
0336
0337
0338
0339
0340
0341 struct vki_timex {
0342 unsigned int modes;
0343 long offset;
0344 long freq;
0345 long maxerror;
0346 long esterror;
0347 int status;
0348 long constant;
0349 long precision;
0350 long tolerance;
0351
0352
0353 struct vki_timeval time;
0354 long tick;
0355
0356 long ppsfreq;
0357 long jitter;
0358 int shift;
0359 long stabil;
0360 long jitcnt;
0361 long calcnt;
0362 long errcnt;
0363 long stbcnt;
0364
0365 int :32; int :32; int :32; int :32;
0366 int :32; int :32; int :32; int :32;
0367 int :32; int :32; int :32; int :32;
0368 };
0369
0370 #define VKI_ADJ_OFFSET 0x0001
0371 #define VKI_ADJ_FREQUENCY 0x0002
0372 #define VKI_ADJ_MAXERROR 0x0004
0373 #define VKI_ADJ_ESTERROR 0x0008
0374 #define VKI_ADJ_STATUS 0x0010
0375 #define VKI_ADJ_TIMECONST 0x0020
0376 #define VKI_ADJ_TAI 0x0080
0377 #define VKI_ADJ_TICK 0x4000
0378 #define VKI_ADJ_ADJTIME 0x8000
0379
0380 #define VKI_ADJ_OFFSET_READONLY 0x2000
0381
0382
0383
0384
0385
0386 struct vki_tms {
0387 vki_clock_t tms_utime;
0388 vki_clock_t tms_stime;
0389 vki_clock_t tms_cutime;
0390 vki_clock_t tms_cstime;
0391 };
0392
0393
0394
0395
0396
0397 struct vki_utimbuf {
0398 vki_time_t actime;
0399 vki_time_t modtime;
0400 };
0401
0402
0403
0404
0405
0406 #define VKI_CSIGNAL 0x000000ff
0407 #define VKI_CLONE_VM 0x00000100
0408 #define VKI_CLONE_FS 0x00000200
0409 #define VKI_CLONE_FILES 0x00000400
0410 #define VKI_CLONE_SIGHAND 0x00000800
0411 #define VKI_CLONE_PIDFD 0x00001000
0412 #define VKI_CLONE_PTRACE 0x00002000
0413 #define VKI_CLONE_VFORK 0x00004000
0414 #define VKI_CLONE_PARENT 0x00008000
0415 #define VKI_CLONE_THREAD 0x00010000
0416 #define VKI_CLONE_NEWNS 0x00020000
0417 #define VKI_CLONE_SYSVSEM 0x00040000
0418 #define VKI_CLONE_SETTLS 0x00080000
0419 #define VKI_CLONE_PARENT_SETTID 0x00100000
0420 #define VKI_CLONE_CHILD_CLEARTID 0x00200000
0421 #define VKI_CLONE_DETACHED 0x00400000
0422 #define VKI_CLONE_UNTRACED 0x00800000
0423 #define VKI_CLONE_CHILD_SETTID 0x01000000
0424 #define VKI_CLONE_NEWCGROUP 0x02000000
0425 #define VKI_CLONE_NEWUTS 0x04000000
0426 #define VKI_CLONE_NEWIPC 0x08000000
0427 #define VKI_CLONE_NEWUSER 0x10000000
0428 #define VKI_CLONE_NEWPID 0x20000000
0429 #define VKI_CLONE_NEWNET 0x40000000
0430 #define VKI_CLONE_IO 0x80000000
0431
0432 struct vki_sched_param {
0433 int sched_priority;
0434 };
0435
0436 struct vki_sched_attr {
0437 vki_uint32_t size;
0438 vki_uint32_t sched_policy;
0439 vki_uint64_t sched_flags;
0440
0441
0442 vki_int32_t sched_nice;
0443
0444
0445 vki_uint32_t sched_priority;
0446
0447
0448 vki_uint64_t sched_runtime;
0449 vki_uint64_t sched_deadline;
0450 vki_uint64_t sched_period;
0451 };
0452
0453 #define VKI_TASK_COMM_LEN 16
0454
0455
0456
0457
0458
0459
0460 #ifndef HAVE_ARCH_SIGINFO_T
0461 typedef union vki_sigval {
0462 int sival_int;
0463 void __user *sival_ptr;
0464 } vki_sigval_t;
0465
0466 #ifndef __VKI_ARCH_SI_PREAMBLE_SIZE
0467 #define __VKI_ARCH_SI_PREAMBLE_SIZE (3 * sizeof(int))
0468 #endif
0469
0470 #define VKI_SI_MAX_SIZE 128
0471
0472 #ifndef VKI_SI_PAD_SIZE
0473 #define VKI_SI_PAD_SIZE ((VKI_SI_MAX_SIZE - __VKI_ARCH_SI_PREAMBLE_SIZE) / sizeof(int))
0474 #endif
0475
0476 #ifndef __VKI_ARCH_SI_UID_T
0477 #define __VKI_ARCH_SI_UID_T vki_uid_t
0478 #endif
0479
0480 #ifndef __VKI_ARCH_SI_BAND_T
0481 #define __VKI_ARCH_SI_BAND_T long
0482 #endif
0483
0484 #ifndef __VKI_ARCH_SI_CLOCK_T
0485 #define __VKI_ARCH_SI_CLOCK_T vki_clock_t
0486 #endif
0487
0488 #ifndef __VKI_ARCH_SI_ATTRIBUTES
0489 #define __VKI_ARCH_SI_ATTRIBUTES
0490 #endif
0491
0492
0493
0494 typedef struct vki_siginfo {
0495 int si_signo;
0496 int si_errno;
0497 int si_code;
0498
0499 union {
0500 int _pad[VKI_SI_PAD_SIZE];
0501
0502
0503 struct {
0504 vki_pid_t _pid;
0505 __VKI_ARCH_SI_UID_T _uid;
0506 } _kill;
0507
0508
0509 struct {
0510 vki_timer_t _tid;
0511 int _overrun;
0512 char _pad[sizeof( __VKI_ARCH_SI_UID_T) - sizeof(int)];
0513 vki_sigval_t _sigval;
0514 int _sys_private;
0515 } _timer;
0516
0517
0518 struct {
0519 vki_pid_t _pid;
0520 __VKI_ARCH_SI_UID_T _uid;
0521 vki_sigval_t _sigval;
0522 } _rt;
0523
0524
0525 struct {
0526 vki_pid_t _pid;
0527 __VKI_ARCH_SI_UID_T _uid;
0528 int _status;
0529 __VKI_ARCH_SI_CLOCK_T _utime;
0530 __VKI_ARCH_SI_CLOCK_T _stime;
0531 } _sigchld;
0532
0533
0534 struct {
0535 void __user *_addr;
0536 #ifdef __ARCH_SI_TRAPNO
0537 int _trapno;
0538 #endif
0539 } _sigfault;
0540
0541
0542 struct {
0543 __VKI_ARCH_SI_BAND_T _band;
0544 int _fd;
0545 } _sigpoll;
0546 } _sifields;
0547 } __VKI_ARCH_SI_ATTRIBUTES vki_siginfo_t;
0548 #endif
0549
0550 #define __VKI_SI_FAULT 0
0551
0552
0553
0554
0555
0556 #define VKI_SI_USER 0
0557 #define VKI_SI_TKILL -6
0558
0559
0560
0561
0562 #define VKI_ILL_ILLOPC (__VKI_SI_FAULT|1)
0563 #define VKI_ILL_ILLOPN (__VKI_SI_FAULT|2)
0564 #define VKI_ILL_ILLADR (__VKI_SI_FAULT|3)
0565 #define VKI_ILL_ILLTRP (__VKI_SI_FAULT|4)
0566 #define VKI_ILL_PRVOPC (__VKI_SI_FAULT|5)
0567 #define VKI_ILL_PRVREG (__VKI_SI_FAULT|6)
0568 #define VKI_ILL_COPROC (__VKI_SI_FAULT|7)
0569 #define VKI_ILL_BADSTK (__VKI_SI_FAULT|8)
0570
0571
0572
0573
0574 #define VKI_FPE_INTDIV (__VKI_SI_FAULT|1)
0575 #define VKI_FPE_INTOVF (__VKI_SI_FAULT|2)
0576 #define VKI_FPE_FLTDIV (__VKI_SI_FAULT|3)
0577 #define VKI_FPE_FLTOVF (__VKI_SI_FAULT|4)
0578 #define VKI_FPE_FLTUND (__VKI_SI_FAULT|5)
0579 #define VKI_FPE_FLTRES (__VKI_SI_FAULT|6)
0580 #define VKI_FPE_FLTINV (__VKI_SI_FAULT|7)
0581 #define VKI_FPE_FLTSUB (__VKI_SI_FAULT|8)
0582
0583
0584
0585
0586 #define VKI_SEGV_MAPERR (__VKI_SI_FAULT|1)
0587 #define VKI_SEGV_ACCERR (__VKI_SI_FAULT|2)
0588
0589
0590
0591
0592 #define VKI_BUS_ADRALN (__VKI_SI_FAULT|1)
0593 #define VKI_BUS_ADRERR (__VKI_SI_FAULT|2)
0594 #define VKI_BUS_OBJERR (__VKI_SI_FAULT|3)
0595
0596
0597
0598
0599 #define VKI_TRAP_BRKPT (__VKI_SI_FAULT|1)
0600 #define VKI_TRAP_TRACE (__VKI_SI_FAULT|2)
0601
0602
0603
0604
0605 #define VKI_CLD_EXITED (__VKI_SI_FAULT|1)
0606 #define VKI_CLD_KILLED (__VKI_SI_FAULT|2)
0607 #define VKI_CLD_DUMPED (__VKI_SI_FAULT|3)
0608 #define VKI_CLD_TRAPPED (__VKI_SI_FAULT|4)
0609 #define VKI_CLD_STOPPED (__VKI_SI_FAULT|5)
0610 #define VKI_CLD_CONTINUED (__VKI_SI_FAULT|6)
0611
0612
0613
0614
0615
0616 #ifndef VKI___ARCH_SIGEV_PREAMBLE_SIZE
0617 #define VKI___ARCH_SIGEV_PREAMBLE_SIZE (sizeof(int) * 2 + sizeof(vki_sigval_t))
0618 #endif
0619
0620 #define VKI_SIGEV_MAX_SIZE 64
0621 #define VKI_SIGEV_PAD_SIZE ((VKI_SIGEV_MAX_SIZE - VKI___ARCH_SIGEV_PREAMBLE_SIZE) \
0622 / sizeof(int))
0623
0624
0625 #define VKI_SIGEV_THREAD_ID 4
0626
0627 typedef struct vki_sigevent {
0628 vki_sigval_t sigev_value;
0629 int sigev_signo;
0630 int sigev_notify;
0631 union {
0632 int _pad[VKI_SIGEV_PAD_SIZE];
0633 int _tid;
0634
0635 struct {
0636 void (*_function)(vki_sigval_t);
0637 void *_attribute;
0638 } _sigev_thread;
0639 } _sigev_un;
0640 } vki_sigevent_t;
0641
0642 #define vki_sigev_notify_thread_id _sigev_un._tid
0643
0644
0645
0646
0647
0648
0649
0650 #define VKI_SEEK_SET 0
0651 #define VKI_SEEK_CUR 1
0652 #define VKI_SEEK_END 2
0653
0654
0655
0656
0657
0658 #define VKI_SYS_SOCKET 1
0659 #define VKI_SYS_BIND 2
0660 #define VKI_SYS_CONNECT 3
0661 #define VKI_SYS_LISTEN 4
0662 #define VKI_SYS_ACCEPT 5
0663 #define VKI_SYS_GETSOCKNAME 6
0664 #define VKI_SYS_GETPEERNAME 7
0665 #define VKI_SYS_SOCKETPAIR 8
0666 #define VKI_SYS_SEND 9
0667 #define VKI_SYS_RECV 10
0668 #define VKI_SYS_SENDTO 11
0669 #define VKI_SYS_RECVFROM 12
0670 #define VKI_SYS_SHUTDOWN 13
0671 #define VKI_SYS_SETSOCKOPT 14
0672 #define VKI_SYS_GETSOCKOPT 15
0673 #define VKI_SYS_SENDMSG 16
0674 #define VKI_SYS_RECVMSG 17
0675 #define VKI_SYS_ACCEPT4 18
0676 #define VKI_SYS_RECVMMSG 19
0677 #define VKI_SYS_SENDMMSG 20
0678
0679 #ifndef ARCH_HAS_SOCKET_TYPES
0680 enum vki_sock_type {
0681 VKI_SOCK_STREAM = 1,
0682
0683 };
0684 #endif
0685
0686
0687
0688
0689
0690 struct vki_iovec
0691 {
0692 void __user *iov_base;
0693 __vki_kernel_size_t iov_len;
0694 };
0695
0696
0697
0698
0699
0700
0701
0702 #define __KINLINE static __inline__
0703
0704 typedef unsigned short vki_sa_family_t;
0705
0706 struct vki_sockaddr {
0707 vki_sa_family_t sa_family;
0708 char sa_data[14];
0709 };
0710
0711 struct vki_msghdr {
0712 void * msg_name;
0713 int msg_namelen;
0714 struct vki_iovec * msg_iov;
0715 __vki_kernel_size_t msg_iovlen;
0716 void * msg_control;
0717 __vki_kernel_size_t msg_controllen;
0718 unsigned msg_flags;
0719 };
0720
0721 struct vki_mmsghdr {
0722 struct vki_msghdr msg_hdr;
0723 unsigned msg_len;
0724 };
0725
0726 struct vki_cmsghdr {
0727 __vki_kernel_size_t cmsg_len;
0728 int cmsg_level;
0729 int cmsg_type;
0730 };
0731
0732 #define __VKI_CMSG_NXTHDR(ctl, len, cmsg) __vki_cmsg_nxthdr((ctl),(len),(cmsg))
0733 #define VKI_CMSG_NXTHDR(mhdr, cmsg) vki_cmsg_nxthdr((mhdr), (cmsg))
0734
0735 #define VKI_CMSG_ALIGN(len) ( ((len)+sizeof(long)-1) & ~(sizeof(long)-1) )
0736
0737 #define VKI_CMSG_DATA(cmsg) ((void *)((char *)(cmsg) + VKI_CMSG_ALIGN(sizeof(struct vki_cmsghdr))))
0738
0739 #define __VKI_CMSG_FIRSTHDR(ctl,len) ((len) >= sizeof(struct vki_cmsghdr) ? \
0740 (struct vki_cmsghdr *)(ctl) : \
0741 (struct vki_cmsghdr *)NULL)
0742 #define VKI_CMSG_FIRSTHDR(msg) __VKI_CMSG_FIRSTHDR((msg)->msg_control, (msg)->msg_controllen)
0743
0744
0745 __KINLINE struct vki_cmsghdr * __vki_cmsg_nxthdr(void *__ctl, __vki_kernel_size_t __size,
0746 struct vki_cmsghdr *__cmsg)
0747 {
0748 struct vki_cmsghdr * __ptr;
0749
0750 __ptr = ASSUME_ALIGNED(struct vki_cmsghdr *,
0751 ((unsigned char *) __cmsg) + VKI_CMSG_ALIGN(__cmsg->cmsg_len));
0752 if ((unsigned long)((char*)(__ptr+1) - (char *) __ctl) > __size)
0753 return (struct vki_cmsghdr *)0;
0754
0755 return __ptr;
0756 }
0757
0758 __KINLINE struct vki_cmsghdr * vki_cmsg_nxthdr (struct vki_msghdr *__msg, struct vki_cmsghdr *__cmsg)
0759 {
0760 return __vki_cmsg_nxthdr(__msg->msg_control, __msg->msg_controllen, __cmsg);
0761 }
0762
0763 #define VKI_SCM_RIGHTS 0x01
0764
0765 #define VKI_AF_UNSPEC 0
0766 #define VKI_AF_UNIX 1
0767 #define VKI_AF_INET 2
0768 #define VKI_AF_INET6 10
0769 #define VKI_AF_NETLINK 16
0770 #define VKI_AF_BLUETOOTH 31
0771
0772 #define VKI_MSG_NOSIGNAL 0x4000
0773
0774 #define VKI_SOL_SCTP 132
0775
0776
0777
0778
0779
0780 struct vki_in_addr {
0781 __vki_u32 s_addr;
0782 };
0783
0784
0785 #define __VKI_SOCK_SIZE__ 16
0786 struct vki_sockaddr_in {
0787 vki_sa_family_t sin_family;
0788 unsigned short int sin_port;
0789 struct vki_in_addr sin_addr;
0790
0791
0792 unsigned char __pad[__VKI_SOCK_SIZE__ - sizeof(short int) -
0793 sizeof(unsigned short int) - sizeof(struct vki_in_addr)];
0794 };
0795
0796 #define VKI_IPPROTO_TCP 6
0797
0798
0799
0800
0801
0802 struct vki_in6_addr
0803 {
0804 union
0805 {
0806 __vki_u8 u6_addr8[16];
0807 __vki_u16 u6_addr16[8];
0808 __vki_u32 u6_addr32[4];
0809 } vki_in6_u;
0810 #define vki_s6_addr vki_in6_u.u6_addr8
0811 #define vki_s6_addr16 vki_in6_u.u6_addr16
0812 #define vki_s6_addr32 vki_in6_u.u6_addr32
0813 };
0814
0815 struct vki_sockaddr_in6 {
0816 unsigned short int sin6_family;
0817 __vki_u16 sin6_port;
0818 __vki_u32 sin6_flowinfo;
0819 struct vki_in6_addr sin6_addr;
0820 __vki_u32 sin6_scope_id;
0821 };
0822
0823
0824
0825
0826
0827 #define VKI_TCP_NODELAY 1
0828
0829
0830
0831
0832
0833
0834 #define VKI_UNIX_PATH_MAX 108
0835
0836 struct vki_sockaddr_un {
0837 vki_sa_family_t sun_family;
0838 char sun_path[VKI_UNIX_PATH_MAX];
0839 };
0840
0841
0842
0843
0844
0845 struct vki_sockaddr_nl {
0846 vki_sa_family_t nl_family;
0847 unsigned short nl_pad;
0848 __vki_u32 nl_pid;
0849 __vki_u32 nl_groups;
0850 };
0851
0852
0853
0854
0855
0856 #define VKI_IFNAMSIZ 16
0857
0858 struct vki_ifmap
0859 {
0860 unsigned long mem_start;
0861 unsigned long mem_end;
0862 unsigned short base_addr;
0863 unsigned char irq;
0864 unsigned char dma;
0865 unsigned char port;
0866
0867 };
0868
0869 struct vki_if_settings
0870 {
0871 unsigned int type;
0872 unsigned int size;
0873 union {
0874
0875
0876
0877 void __user *raw_hdlc;
0878 void __user *cisco;
0879 void __user *fr;
0880 void __user *fr_pvc;
0881 void __user *fr_pvc_info;
0882
0883
0884 void __user *sync;
0885 void __user *te1;
0886 } ifs_ifsu;
0887 };
0888
0889 struct vki_ifreq
0890 {
0891 #define VKI_IFHWADDRLEN 6
0892 union
0893 {
0894 char ifrn_name[VKI_IFNAMSIZ];
0895 } ifr_ifrn;
0896
0897 union {
0898 struct vki_sockaddr ifru_addr;
0899 struct vki_sockaddr ifru_dstaddr;
0900 struct vki_sockaddr ifru_broadaddr;
0901 struct vki_sockaddr ifru_netmask;
0902 struct vki_sockaddr ifru_hwaddr;
0903 short ifru_flags;
0904 int ifru_ivalue;
0905 int ifru_mtu;
0906 struct vki_ifmap ifru_map;
0907 char ifru_slave[VKI_IFNAMSIZ];
0908 char ifru_newname[VKI_IFNAMSIZ];
0909 void __user * ifru_data;
0910 struct vki_if_settings ifru_settings;
0911 } ifr_ifru;
0912 };
0913
0914 #define vki_ifr_name ifr_ifrn.ifrn_name
0915 #define vki_ifr_hwaddr ifr_ifru.ifru_hwaddr
0916 #define vki_ifr_addr ifr_ifru.ifru_addr
0917 #define vki_ifr_dstaddr ifr_ifru.ifru_dstaddr
0918 #define vki_ifr_broadaddr ifr_ifru.ifru_broadaddr
0919 #define vki_ifr_netmask ifr_ifru.ifru_netmask
0920 #define vki_ifr_flags ifr_ifru.ifru_flags
0921 #define vki_ifr_metric ifr_ifru.ifru_ivalue
0922 #define vki_ifr_mtu ifr_ifru.ifru_mtu
0923 #define vki_ifr_map ifr_ifru.ifru_map
0924 #define vki_ifr_slave ifr_ifru.ifru_slave
0925 #define vki_ifr_data ifr_ifru.ifru_data
0926 #define vki_ifr_ifindex ifr_ifru.ifru_ivalue
0927 #define vki_ifr_bandwidth ifr_ifru.ifru_ivalue
0928 #define vki_ifr_qlen ifr_ifru.ifru_ivalue
0929 #define vki_ifr_newname ifr_ifru.ifru_newname
0930 #define vki_ifr_settings ifr_ifru.ifru_settings
0931
0932 struct vki_ifconf
0933 {
0934 int ifc_len;
0935 union
0936 {
0937 char __user *ifcu_buf;
0938 struct vki_ifreq __user *ifcu_req;
0939 } ifc_ifcu;
0940 };
0941 #define vki_ifc_buf ifc_ifcu.ifcu_buf
0942
0943
0944
0945
0946
0947 struct vki_arpreq {
0948 struct vki_sockaddr arp_pa;
0949 struct vki_sockaddr arp_ha;
0950 int arp_flags;
0951 struct vki_sockaddr arp_netmask;
0952 char arp_dev[16];
0953 };
0954
0955
0956
0957
0958
0959 struct vki_rtentry
0960 {
0961 unsigned long rt_pad1;
0962 struct vki_sockaddr rt_dst;
0963 struct vki_sockaddr rt_gateway;
0964 struct vki_sockaddr rt_genmask;
0965 unsigned short rt_flags;
0966 short rt_pad2;
0967 unsigned long rt_pad3;
0968 void *rt_pad4;
0969 short rt_metric;
0970 char __user *rt_dev;
0971 unsigned long rt_mtu;
0972
0973
0974
0975
0976 unsigned long rt_window;
0977 unsigned short rt_irtt;
0978 };
0979
0980
0981
0982
0983
0984 typedef __vki_s32 vki_sctp_assoc_t;
0985
0986 enum vki_sctp_optname {
0987 VKI_SCTP_RTOINFO,
0988 #define VKI_SCTP_RTOINFO VKI_SCTP_RTOINFO
0989 VKI_SCTP_ASSOCINFO,
0990 #define VKI_SCTP_ASSOCINFO VKI_SCTP_ASSOCINFO
0991 VKI_SCTP_INITMSG,
0992 #define VKI_SCTP_INITMSG VKI_SCTP_INITMSG
0993 VKI_SCTP_NODELAY,
0994 #define VKI_SCTP_NODELAY VKI_SCTP_NODELAY
0995 VKI_SCTP_AUTOCLOSE,
0996 #define VKI_SCTP_AUTOCLOSE VKI_SCTP_AUTOCLOSE
0997 VKI_SCTP_SET_PEER_PRIMARY_ADDR,
0998 #define VKI_SCTP_SET_PEER_PRIMARY_ADDR VKI_SCTP_SET_PEER_PRIMARY_ADDR
0999 VKI_SCTP_PRIMARY_ADDR,
1000 #define VKI_SCTP_PRIMARY_ADDR VKI_SCTP_PRIMARY_ADDR
1001 VKI_SCTP_ADAPTION_LAYER,
1002 #define VKI_SCTP_ADAPTION_LAYER VKI_SCTP_ADAPTION_LAYER
1003 VKI_SCTP_DISABLE_FRAGMENTS,
1004 #define VKI_SCTP_DISABLE_FRAGMENTS VKI_SCTP_DISABLE_FRAGMENTS
1005 VKI_SCTP_PEER_ADDR_PARAMS,
1006 #define VKI_SCTP_PEER_ADDR_PARAMS VKI_SCTP_PEER_ADDR_PARAMS
1007 VKI_SCTP_DEFAULT_SEND_PARAM,
1008 #define VKI_SCTP_DEFAULT_SEND_PARAM VKI_SCTP_DEFAULT_SEND_PARAM
1009 VKI_SCTP_EVENTS,
1010 #define VKI_SCTP_EVENTS VKI_SCTP_EVENTS
1011 VKI_SCTP_I_WANT_MAPPED_V4_ADDR,
1012 #define VKI_SCTP_I_WANT_MAPPED_V4_ADDR VKI_SCTP_I_WANT_MAPPED_V4_ADDR
1013 VKI_SCTP_MAXSEG,
1014 #define VKI_SCTP_MAXSEG VKI_SCTP_MAXSEG
1015 VKI_SCTP_STATUS,
1016 #define VKI_SCTP_STATUS VKI_SCTP_STATUS
1017 VKI_SCTP_GET_PEER_ADDR_INFO,
1018 #define VKI_SCTP_GET_PEER_ADDR_INFO VKI_SCTP_GET_PEER_ADDR_INFO
1019
1020
1021
1022
1023 VKI_SCTP_SOCKOPT_BINDX_ADD = 100,
1024 #define VKI_SCTP_SOCKOPT_BINDX_ADD VKI_SCTP_SOCKOPT_BINDX_ADD
1025 VKI_SCTP_SOCKOPT_BINDX_REM,
1026 #define VKI_SCTP_SOCKOPT_BINDX_REM VKI_SCTP_SOCKOPT_BINDX_REM
1027 VKI_SCTP_SOCKOPT_PEELOFF,
1028 #define VKI_SCTP_SOCKOPT_PEELOFF VKI_SCTP_SOCKOPT_PEELOFF
1029 VKI_SCTP_GET_PEER_ADDRS_NUM,
1030 #define VKI_SCTP_GET_PEER_ADDRS_NUM VKI_SCTP_GET_PEER_ADDRS_NUM
1031 VKI_SCTP_GET_PEER_ADDRS,
1032 #define VKI_SCTP_GET_PEER_ADDRS VKI_SCTP_GET_PEER_ADDRS
1033 VKI_SCTP_GET_LOCAL_ADDRS_NUM,
1034 #define VKI_SCTP_GET_LOCAL_ADDRS_NUM VKI_SCTP_GET_LOCAL_ADDRS_NUM
1035 VKI_SCTP_GET_LOCAL_ADDRS,
1036 #define VKI_SCTP_GET_LOCAL_ADDRS VKI_SCTP_GET_LOCAL_ADDRS
1037 VKI_SCTP_SOCKOPT_CONNECTX,
1038 #define VKI_SCTP_SOCKOPT_CONNECTX VKI_SCTP_SOCKOPT_CONNECTX
1039 };
1040
1041 struct vki_sctp_getaddrs {
1042 vki_sctp_assoc_t assoc_id;
1043 int addr_num;
1044 struct vki_sockaddr *addrs;
1045 };
1046
1047
1048
1049
1050
1051 #define VKI_RUSAGE_SELF 0
1052 #define VKI_RUSAGE_CHILDREN (-1)
1053 #define VKI_RUSAGE_BOTH (-2)
1054 #define VKI_RUSAGE_THREAD 1
1055
1056 struct vki_rusage {
1057 struct vki_timeval ru_utime;
1058 struct vki_timeval ru_stime;
1059 long ru_maxrss;
1060 long ru_ixrss;
1061 long ru_idrss;
1062 long ru_isrss;
1063 long ru_minflt;
1064 long ru_majflt;
1065 long ru_nswap;
1066 long ru_inblock;
1067 long ru_oublock;
1068 long ru_msgsnd;
1069 long ru_msgrcv;
1070 long ru_nsignals;
1071 long ru_nvcsw;
1072 long ru_nivcsw;
1073 };
1074
1075 struct vki_rlimit {
1076 unsigned long rlim_cur;
1077 unsigned long rlim_max;
1078 };
1079
1080 struct vki_rlimit64 {
1081 __vki_u64 rlim_cur;
1082 __vki_u64 rlim_max;
1083 };
1084
1085
1086
1087
1088
1089 struct vki_elf_siginfo
1090 {
1091 int si_signo;
1092 int si_code;
1093 int si_errno;
1094 };
1095
1096
1097 struct vki_elf_prstatus
1098 {
1099 struct vki_elf_siginfo pr_info;
1100 short pr_cursig;
1101 unsigned long pr_sigpend;
1102 unsigned long pr_sighold;
1103 vki_pid_t pr_pid;
1104 vki_pid_t pr_ppid;
1105 vki_pid_t pr_pgrp;
1106 vki_pid_t pr_sid;
1107 struct vki_timeval pr_utime;
1108 struct vki_timeval pr_stime;
1109 struct vki_timeval pr_cutime;
1110 struct vki_timeval pr_cstime;
1111 vki_elf_gregset_t pr_reg;
1112 int pr_fpvalid;
1113 };
1114
1115 #define VKI_ELF_PRARGSZ (80)
1116
1117 struct vki_elf_prpsinfo
1118 {
1119 char pr_state;
1120 char pr_sname;
1121 char pr_zomb;
1122 char pr_nice;
1123 unsigned long pr_flag;
1124 __vki_kernel_uid_t pr_uid;
1125 __vki_kernel_gid_t pr_gid;
1126 vki_pid_t pr_pid, pr_ppid, pr_pgrp, pr_sid;
1127
1128 char pr_fname[16];
1129 char pr_psargs[VKI_ELF_PRARGSZ];
1130 };
1131
1132
1133
1134
1135
1136
1137 #define VKI_EPOLL_CTL_ADD 1
1138 #define VKI_EPOLL_CTL_DEL 2
1139 #define VKI_EPOLL_CTL_MOD 3
1140
1141 #ifdef __x86_64__
1142 #define VKI_EPOLL_PACKED __attribute__((packed))
1143 #else
1144 #define VKI_EPOLL_PACKED
1145 #endif
1146
1147 struct vki_epoll_event {
1148 __vki_u32 events;
1149 __vki_u64 data;
1150 } VKI_EPOLL_PACKED;
1151
1152
1153
1154
1155
1156
1157 struct vki_mq_attr {
1158 long mq_flags;
1159 long mq_maxmsg;
1160 long mq_msgsize;
1161 long mq_curmsgs;
1162 long __reserved[4];
1163 };
1164
1165
1166
1167
1168
1169 struct vki_new_utsname {
1170 char sysname[65];
1171 char nodename[65];
1172 char release[65];
1173 char version[65];
1174 char machine[65];
1175 char domainname[65];
1176 };
1177
1178
1179
1180
1181
1182
1183 struct vki_mii_ioctl_data {
1184 vki_u16 phy_id;
1185 vki_u16 reg_num;
1186 vki_u16 val_in;
1187 vki_u16 val_out;
1188 };
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202 typedef struct __vki_user_cap_header_struct {
1203 __vki_u32 version;
1204 int pid;
1205 } __user *vki_cap_user_header_t;
1206
1207 typedef struct __vki_user_cap_data_struct {
1208 __vki_u32 effective;
1209 __vki_u32 permitted;
1210 __vki_u32 inheritable;
1211 } __user *vki_cap_user_data_t;
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226 struct vki_ipc_perm
1227 {
1228 __vki_kernel_key_t key;
1229 __vki_kernel_uid_t uid;
1230 __vki_kernel_gid_t gid;
1231 __vki_kernel_uid_t cuid;
1232 __vki_kernel_gid_t cgid;
1233 __vki_kernel_mode_t mode;
1234 unsigned short seq;
1235 };
1236
1237 #define VKI_IPC_CREAT 00001000
1238 #define VKI_IPC_EXCL 00002000
1239 #define VKI_IPC_NOWAIT 00004000
1240
1241
1242 #define VKI_IPC_SET 1
1243 #define VKI_IPC_STAT 2
1244 #define VKI_IPC_INFO 3
1245
1246 #define VKI_IPC_64 0x0100
1247
1248
1249 # define VKI_SHM_HUGETLB 04000
1250
1251
1252
1253
1254
1255
1256 #define VKI_GETALL 13
1257 #define VKI_SETVAL 16
1258 #define VKI_SETALL 17
1259
1260 #define VKI_SEM_STAT 18
1261 #define VKI_SEM_INFO 19
1262
1263
1264 struct vki_semid_ds {
1265 struct vki_ipc_perm sem_perm;
1266 __vki_kernel_time_t sem_otime;
1267 __vki_kernel_time_t sem_ctime;
1268
1269 void*sem_base;
1270 void*sem_pending;
1271 void**sem_pending_last;
1272 void*undo;
1273 unsigned short sem_nsems;
1274 };
1275
1276 struct vki_sembuf {
1277 unsigned short sem_num;
1278 short sem_op;
1279 short sem_flg;
1280 };
1281
1282 union vki_semun {
1283 int val;
1284 struct vki_semid_ds __user *buf;
1285 struct vki_semid64_ds __user *buf64;
1286 unsigned short __user *array;
1287 struct vki_seminfo __user *__buf;
1288 void __user *__pad;
1289 };
1290
1291 struct vki_seminfo {
1292 int semmap;
1293 int semmni;
1294 int semmns;
1295 int semmnu;
1296 int semmsl;
1297 int semopm;
1298 int semume;
1299 int semusz;
1300 int semvmx;
1301 int semaem;
1302 };
1303
1304
1305
1306
1307
1308 #define VKI_EPERM 1
1309 #define VKI_ENOENT 2
1310 #define VKI_ESRCH 3
1311 #define VKI_EINTR 4
1312 #define VKI_EIO 5
1313 #define VKI_ENXIO 6
1314 #define VKI_E2BIG 7
1315 #define VKI_ENOEXEC 8
1316 #define VKI_EBADF 9
1317 #define VKI_ECHILD 10
1318 #define VKI_EAGAIN 11
1319 #define VKI_ENOMEM 12
1320 #define VKI_EACCES 13
1321 #define VKI_EFAULT 14
1322 #define VKI_ENOTBLK 15
1323 #define VKI_EBUSY 16
1324 #define VKI_EEXIST 17
1325 #define VKI_EXDEV 18
1326 #define VKI_ENODEV 19
1327 #define VKI_ENOTDIR 20
1328 #define VKI_EISDIR 21
1329 #define VKI_EINVAL 22
1330 #define VKI_ENFILE 23
1331 #define VKI_EMFILE 24
1332 #define VKI_ENOTTY 25
1333 #define VKI_ETXTBSY 26
1334 #define VKI_EFBIG 27
1335 #define VKI_ENOSPC 28
1336 #define VKI_ESPIPE 29
1337 #define VKI_EROFS 30
1338 #define VKI_EMLINK 31
1339 #define VKI_EPIPE 32
1340 #define VKI_EDOM 33
1341 #define VKI_ERANGE 34
1342
1343
1344
1345
1346
1347 #define VKI_EWOULDBLOCK VKI_EAGAIN
1348
1349 #define VKI_ELOOP 40
1350
1351
1352
1353
1354
1355 #define VKI_WNOHANG 0x00000001
1356
1357 #define __VKI_WALL 0x40000000
1358 #define __VKI_WCLONE 0x80000000
1359
1360
1361
1362
1363
1364 #define VKI_MREMAP_MAYMOVE 1
1365 #define VKI_MREMAP_FIXED 2
1366
1367
1368
1369
1370
1371 #define VKI_FUTEX_WAIT (0)
1372 #define VKI_FUTEX_WAKE (1)
1373 #define VKI_FUTEX_FD (2)
1374 #define VKI_FUTEX_REQUEUE (3)
1375 #define VKI_FUTEX_CMP_REQUEUE (4)
1376 #define VKI_FUTEX_WAKE_OP (5)
1377 #define VKI_FUTEX_LOCK_PI (6)
1378 #define VKI_FUTEX_UNLOCK_PI (7)
1379 #define VKI_FUTEX_TRYLOCK_PI (8)
1380 #define VKI_FUTEX_WAIT_BITSET (9)
1381 #define VKI_FUTEX_WAKE_BITSET (10)
1382 #define VKI_FUTEX_WAIT_REQUEUE_PI (11)
1383 #define VKI_FUTEX_CMP_REQUEUE_PI (12)
1384 #define VKI_FUTEX_PRIVATE_FLAG (128)
1385 #define VKI_FUTEX_CLOCK_REALTIME (256)
1386
1387 struct vki_robust_list {
1388 struct vki_robust_list __user *next;
1389 };
1390
1391 struct vki_robust_list_head {
1392
1393
1394
1395 struct vki_robust_list list;
1396
1397
1398
1399
1400
1401
1402
1403 long futex_offset;
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415 struct vki_robust_list __user *list_op_pending;
1416 };
1417
1418
1419 struct vki_futex_waitv {
1420 __vki_u64 val;
1421 __vki_u64 uaddr;
1422 __vki_u32 flags;
1423 __vki_u32 __reserved;
1424 };
1425
1426 struct vki__kernel_timespec {
1427 long long tv_sec;
1428 long long tv_nsec;
1429 };
1430
1431
1432
1433
1434
1435 #define VKI_ERESTARTSYS 512
1436
1437
1438
1439
1440
1441 #define VKI_S_IFMT 00170000
1442 #define VKI_S_IFSOCK 0140000
1443 #define VKI_S_IFLNK 0120000
1444 #define VKI_S_IFREG 0100000
1445 #define VKI_S_IFBLK 0060000
1446 #define VKI_S_IFDIR 0040000
1447 #define VKI_S_IFCHR 0020000
1448 #define VKI_S_IFIFO 0010000
1449 #define VKI_S_ISUID 0004000
1450 #define VKI_S_ISGID 0002000
1451 #define VKI_S_ISVTX 0001000
1452
1453 #define VKI_S_ISLNK(m) (((m) & VKI_S_IFMT) == VKI_S_IFLNK)
1454 #define VKI_S_ISREG(m) (((m) & VKI_S_IFMT) == VKI_S_IFREG)
1455 #define VKI_S_ISDIR(m) (((m) & VKI_S_IFMT) == VKI_S_IFDIR)
1456 #define VKI_S_ISCHR(m) (((m) & VKI_S_IFMT) == VKI_S_IFCHR)
1457 #define VKI_S_ISBLK(m) (((m) & VKI_S_IFMT) == VKI_S_IFBLK)
1458 #define VKI_S_ISFIFO(m) (((m) & VKI_S_IFMT) == VKI_S_IFIFO)
1459 #define VKI_S_ISSOCK(m) (((m) & VKI_S_IFMT) == VKI_S_IFSOCK)
1460
1461 #define VKI_S_IRWXU 00700
1462 #define VKI_S_IRUSR 00400
1463 #define VKI_S_IWUSR 00200
1464 #define VKI_S_IXUSR 00100
1465
1466 #define VKI_S_IRWXG 00070
1467 #define VKI_S_IRGRP 00040
1468 #define VKI_S_IWGRP 00020
1469 #define VKI_S_IXGRP 00010
1470
1471 #define VKI_S_IRWXO 00007
1472 #define VKI_S_IROTH 00004
1473 #define VKI_S_IWOTH 00002
1474 #define VKI_S_IXOTH 00001
1475
1476 #define VKI_STATX_ALL 0x00000FFFU
1477
1478 struct vki_statx_timestamp {
1479 __vki_s64 tv_sec;
1480 __vki_u32 tv_nsec;
1481 __vki_s32 __reserved;
1482 };
1483
1484 struct vki_statx {
1485
1486 __vki_u32 stx_mask;
1487 __vki_u32 stx_blksize;
1488 __vki_u64 stx_attributes;
1489
1490 __vki_u32 stx_nlink;
1491 __vki_u32 stx_uid;
1492 __vki_u32 stx_gid;
1493 __vki_u16 stx_mode;
1494 __vki_u16 __spare0[1];
1495
1496 __vki_u64 stx_ino;
1497 __vki_u64 stx_size;
1498 __vki_u64 stx_blocks;
1499 __vki_u64 stx_attributes_mask;
1500
1501 struct vki_statx_timestamp stx_atime;
1502 struct vki_statx_timestamp stx_btime;
1503 struct vki_statx_timestamp stx_ctime;
1504 struct vki_statx_timestamp stx_mtime;
1505
1506 __vki_u32 stx_rdev_major;
1507 __vki_u32 stx_rdev_minor;
1508 __vki_u32 stx_dev_major;
1509 __vki_u32 stx_dev_minor;
1510
1511 __vki_u64 stx_mnt_id;
1512 __vki_u32 stx_dio_mem_align;
1513 __vki_u32 stx_dio_offset_align;
1514
1515
1516 __vki_u64 __spare2[12];
1517
1518 };
1519
1520
1521
1522
1523
1524
1525
1526 struct vki_dirent {
1527 long d_ino;
1528 __vki_kernel_off_t d_off;
1529 unsigned short d_reclen;
1530 char d_name[256];
1531 };
1532
1533
1534 struct vki_dirent64 {
1535 __vki_u64 d_ino;
1536 __vki_s64 d_off;
1537 unsigned short d_reclen;
1538 unsigned char d_type;
1539 char d_name[256];
1540 };
1541
1542
1543
1544
1545
1546 #define VKI_F_SETLEASE (VKI_F_LINUX_SPECIFIC_BASE + 0)
1547 #define VKI_F_GETLEASE (VKI_F_LINUX_SPECIFIC_BASE + 1)
1548
1549 #define VKI_F_CREATED_QUERY (VKI_F_LINUX_SPECIFIC_BASE + 4)
1550 #define VKI_F_CANCELLK (VKI_F_LINUX_SPECIFIC_BASE + 5)
1551
1552 #define VKI_F_DUPFD_CLOEXEC (VKI_F_LINUX_SPECIFIC_BASE + 6)
1553
1554 #define VKI_F_NOTIFY (VKI_F_LINUX_SPECIFIC_BASE + 2)
1555
1556 #define VKI_F_SETPIPE_SZ (VKI_F_LINUX_SPECIFIC_BASE + 7)
1557 #define VKI_F_GETPIPE_SZ (VKI_F_LINUX_SPECIFIC_BASE + 8)
1558
1559 #define VKI_F_ADD_SEALS (VKI_F_LINUX_SPECIFIC_BASE + 9)
1560 #define VKI_F_GET_SEALS (VKI_F_LINUX_SPECIFIC_BASE + 10)
1561
1562 struct vki_flock {
1563 short l_type;
1564 short l_whence;
1565 __vki_kernel_off_t l_start;
1566 __vki_kernel_off_t l_len;
1567 __vki_kernel_pid_t l_pid;
1568 };
1569
1570 struct vki_flock64 {
1571 short l_type;
1572 short l_whence;
1573 __vki_kernel_loff_t l_start;
1574 __vki_kernel_loff_t l_len;
1575 __vki_kernel_pid_t l_pid;
1576 };
1577
1578 #define VKI_AT_EMPTY_PATH 0x1000
1579 #define VKI_AT_SYMLINK_NOFOLLOW 0x100
1580
1581
1582
1583
1584
1585 struct __vki_sysctl_args {
1586 int __user *name;
1587 int nlen;
1588 void __user *oldval;
1589 vki_size_t __user *oldlenp;
1590 void __user *newval;
1591 vki_size_t newlen;
1592 unsigned long __unused0[4];
1593 };
1594
1595
1596
1597
1598
1599 typedef unsigned long vki_aio_context_t;
1600
1601 enum {
1602 VKI_IOCB_CMD_PREAD = 0,
1603 VKI_IOCB_CMD_PWRITE = 1,
1604 VKI_IOCB_CMD_FSYNC = 2,
1605 VKI_IOCB_CMD_FDSYNC = 3,
1606 VKI_IOCB_CMD_PREADV = 7,
1607 VKI_IOCB_CMD_PWRITEV = 8,
1608 };
1609
1610
1611 struct vki_io_event {
1612 __vki_u64 data;
1613 __vki_u64 obj;
1614
1615
1616 __vki_s64 result;
1617 __vki_s64 result2;
1618 };
1619
1620 #if defined(VKI_LITTLE_ENDIAN)
1621 # define VKI_PADDED(x,y) x, y
1622 #elif defined(VKI_BIG_ENDIAN)
1623 # define VKI_PADDED(x,y) y, x
1624 #else
1625 #error edit for your odd byteorder.
1626 #endif
1627
1628 struct vki_iocb {
1629
1630 __vki_u64 aio_data;
1631 __vki_u32 VKI_PADDED(aio_key, aio_reserved1);
1632
1633
1634
1635 __vki_u16 aio_lio_opcode;
1636 __vki_s16 aio_reqprio;
1637 __vki_u32 aio_fildes;
1638
1639 __vki_u64 aio_buf;
1640 __vki_u64 aio_nbytes;
1641 __vki_s64 aio_offset;
1642
1643
1644 __vki_u64 aio_reserved2;
1645 __vki_u64 aio_reserved3;
1646 };
1647
1648
1649
1650
1651
1652 struct vki_aio_ring {
1653 unsigned id;
1654 unsigned nr;
1655 unsigned head;
1656 unsigned tail;
1657
1658 unsigned magic;
1659 unsigned compat_features;
1660 unsigned incompat_features;
1661 unsigned header_length;
1662
1663 struct vki_io_event io_events[0];
1664 };
1665
1666
1667
1668
1669
1670 #define VKI_MSG_STAT 11
1671 #define VKI_MSG_INFO 12
1672
1673 struct vki_msqid_ds {
1674 struct vki_ipc_perm msg_perm;
1675 struct vki_msg *msg_first;
1676 struct vki_msg *msg_last;
1677 __vki_kernel_time_t msg_stime;
1678 __vki_kernel_time_t msg_rtime;
1679 __vki_kernel_time_t msg_ctime;
1680 unsigned long msg_lcbytes;
1681 unsigned long msg_lqbytes;
1682 unsigned short msg_cbytes;
1683 unsigned short msg_qnum;
1684 unsigned short msg_qbytes;
1685 __vki_kernel_ipc_pid_t msg_lspid;
1686 __vki_kernel_ipc_pid_t msg_lrpid;
1687 };
1688
1689 struct vki_msgbuf {
1690 long mtype;
1691 char mtext[1];
1692 };
1693
1694 struct vki_msginfo {
1695 int msgpool;
1696 int msgmap;
1697 int msgmax;
1698 int msgmnb;
1699 int msgmni;
1700 int msgssz;
1701 int msgtql;
1702 unsigned short msgseg;
1703 };
1704
1705
1706
1707
1708
1709 struct vki_shmid_ds {
1710 struct vki_ipc_perm shm_perm;
1711 int shm_segsz;
1712 __vki_kernel_time_t shm_atime;
1713 __vki_kernel_time_t shm_dtime;
1714 __vki_kernel_time_t shm_ctime;
1715 __vki_kernel_ipc_pid_t shm_cpid;
1716 __vki_kernel_ipc_pid_t shm_lpid;
1717 unsigned short shm_nattch;
1718 unsigned short shm_unused;
1719 void *shm_unused2;
1720 void *shm_unused3;
1721 };
1722
1723 #define VKI_SHM_RDONLY 010000
1724 #define VKI_SHM_RND 020000
1725
1726 #define VKI_SHM_STAT 13
1727 #define VKI_SHM_INFO 14
1728
1729
1730 struct vki_shminfo {
1731 int shmmax;
1732 int shmmin;
1733 int shmmni;
1734 int shmseg;
1735 int shmall;
1736 };
1737
1738 struct vki_shm_info {
1739 int used_ids;
1740 unsigned long shm_tot;
1741 unsigned long shm_rss;
1742 unsigned long shm_swp;
1743 unsigned long swap_attempts;
1744 unsigned long swap_successes;
1745 };
1746
1747
1748
1749
1750
1751 struct vki_rtc_time {
1752 int tm_sec;
1753 int tm_min;
1754 int tm_hour;
1755 int tm_mday;
1756 int tm_mon;
1757 int tm_year;
1758 int tm_wday;
1759 int tm_yday;
1760 int tm_isdst;
1761 };
1762
1763 #define VKI_RTC_AIE_ON _VKI_IO('p', 0x01)
1764 #define VKI_RTC_AIE_OFF _VKI_IO('p', 0x02)
1765 #define VKI_RTC_UIE_ON _VKI_IO('p', 0x03)
1766 #define VKI_RTC_UIE_OFF _VKI_IO('p', 0x04)
1767 #define VKI_RTC_PIE_ON _VKI_IO('p', 0x05)
1768 #define VKI_RTC_PIE_OFF _VKI_IO('p', 0x06)
1769
1770 #define VKI_RTC_ALM_SET _VKI_IOW('p', 0x07, struct vki_rtc_time)
1771 #define VKI_RTC_ALM_READ _VKI_IOR('p', 0x08, struct vki_rtc_time)
1772 #define VKI_RTC_RD_TIME _VKI_IOR('p', 0x09, struct vki_rtc_time)
1773
1774 #define VKI_RTC_IRQP_READ _VKI_IOR('p', 0x0b, unsigned long)
1775 #define VKI_RTC_IRQP_SET _VKI_IOW('p', 0x0c, unsigned long)
1776
1777
1778
1779
1780
1781
1782
1783 #define VKI_ISDN_MAX_CHANNELS 64
1784
1785 #define VKI_IIOCGETCPS _VKI_IO('I',21)
1786
1787 #define VKI_IIOCNETGPN _VKI_IO('I',34)
1788
1789 #define VKI_ISDN_MSNLEN 32
1790
1791 typedef struct {
1792 char name[10];
1793 char phone[VKI_ISDN_MSNLEN];
1794 int outgoing;
1795 } vki_isdn_net_ioctl_phone;
1796
1797
1798
1799
1800
1801 #define VKI_SIOCOUTQ VKI_TIOCOUTQ
1802
1803 #define VKI_SIOCADDRT 0x890B
1804 #define VKI_SIOCDELRT 0x890C
1805
1806 #define VKI_SIOCGIFNAME 0x8910
1807 #define VKI_SIOCGIFCONF 0x8912
1808 #define VKI_SIOCGIFFLAGS 0x8913
1809 #define VKI_SIOCSIFFLAGS 0x8914
1810 #define VKI_SIOCGIFADDR 0x8915
1811 #define VKI_SIOCSIFADDR 0x8916
1812 #define VKI_SIOCGIFDSTADDR 0x8917
1813 #define VKI_SIOCSIFDSTADDR 0x8918
1814 #define VKI_SIOCGIFBRDADDR 0x8919
1815 #define VKI_SIOCSIFBRDADDR 0x891a
1816 #define VKI_SIOCGIFNETMASK 0x891b
1817 #define VKI_SIOCSIFNETMASK 0x891c
1818 #define VKI_SIOCGIFMETRIC 0x891d
1819 #define VKI_SIOCSIFMETRIC 0x891e
1820 #define VKI_SIOCGIFMTU 0x8921
1821 #define VKI_SIOCSIFMTU 0x8922
1822 #define VKI_SIOCSIFHWADDR 0x8924
1823 #define VKI_SIOCGIFHWADDR 0x8927
1824 #define VKI_SIOCGIFINDEX 0x8933
1825
1826 #define VKI_SIOCGIFTXQLEN 0x8942
1827 #define VKI_SIOCSIFTXQLEN 0x8943
1828
1829 #define VKI_SIOCETHTOOL 0x8946
1830
1831 #define VKI_SIOCGMIIPHY 0x8947
1832 #define VKI_SIOCGMIIREG 0x8948
1833 #define VKI_SIOCSMIIREG 0x8949
1834
1835 #define VKI_SIOCDARP 0x8953
1836 #define VKI_SIOCGARP 0x8954
1837 #define VKI_SIOCSARP 0x8955
1838
1839 #define VKI_SIOCDRARP 0x8960
1840 #define VKI_SIOCGRARP 0x8961
1841 #define VKI_SIOCSRARP 0x8962
1842
1843 #define VKI_SIOCGIFMAP 0x8970
1844 #define VKI_SIOCSIFMAP 0x8971
1845
1846 #define VKI_SIOCSHWTSTAMP 0x89B0
1847
1848
1849
1850
1851
1852 #define VKI_PP_MAJOR 99
1853
1854 #define VKI_PP_IOCTL 'p'
1855
1856
1857 #define VKI_PPSETMODE _VKI_IOW(VKI_PP_IOCTL, 0x80, int)
1858
1859
1860 #define VKI_PPRSTATUS _VKI_IOR(VKI_PP_IOCTL, 0x81, unsigned char)
1861
1862
1863
1864 #define VKI_PPRCONTROL _VKI_IOR(VKI_PP_IOCTL, 0x83, unsigned char)
1865 #define VKI_PPWCONTROL _VKI_IOW(VKI_PP_IOCTL, 0x84, unsigned char)
1866
1867 struct vki_ppdev_frob_struct {
1868 unsigned char mask;
1869 unsigned char val;
1870 };
1871 #define VKI_PPFCONTROL _VKI_IOW(VKI_PP_IOCTL, 0x8e, struct vki_ppdev_frob_struct)
1872
1873
1874 #define VKI_PPRDATA _VKI_IOR(VKI_PP_IOCTL, 0x85, unsigned char)
1875 #define VKI_PPWDATA _VKI_IOW(VKI_PP_IOCTL, 0x86, unsigned char)
1876
1877
1878 #define VKI_PPCLAIM _VKI_IO(VKI_PP_IOCTL, 0x8b)
1879
1880
1881 #define VKI_PPRELEASE _VKI_IO(VKI_PP_IOCTL, 0x8c)
1882
1883
1884
1885 #define VKI_PPYIELD _VKI_IO(VKI_PP_IOCTL, 0x8d)
1886
1887
1888 #define VKI_PPEXCL _VKI_IO(VKI_PP_IOCTL, 0x8f)
1889
1890
1891 #define VKI_PPDATADIR _VKI_IOW(VKI_PP_IOCTL, 0x90, int)
1892
1893
1894 #define VKI_PPNEGOT _VKI_IOW(VKI_PP_IOCTL, 0x91, int)
1895
1896
1897 #define VKI_PPWCTLONIRQ _VKI_IOW(VKI_PP_IOCTL, 0x92, unsigned char)
1898
1899
1900 #define VKI_PPCLRIRQ _VKI_IOR(VKI_PP_IOCTL, 0x93, int)
1901
1902
1903 #define VKI_PPSETPHASE _VKI_IOW(VKI_PP_IOCTL, 0x94, int)
1904
1905
1906 #define VKI_PPGETTIME _VKI_IOR(VKI_PP_IOCTL, 0x95, struct vki_timeval)
1907 #define VKI_PPSETTIME _VKI_IOW(VKI_PP_IOCTL, 0x96, struct vki_timeval)
1908
1909 #define VKI_PPGETMODES _VKI_IOR(VKI_PP_IOCTL, 0x97, unsigned int)
1910
1911 #define VKI_PPGETMODE _VKI_IOR(VKI_PP_IOCTL, 0x98, int)
1912 #define VKI_PPGETPHASE _VKI_IOR(VKI_PP_IOCTL, 0x99, int)
1913
1914 #define VKI_PPGETFLAGS _VKI_IOR(VKI_PP_IOCTL, 0x9a, int)
1915 #define VKI_PPSETFLAGS _VKI_IOW(VKI_PP_IOCTL, 0x9b, int)
1916
1917
1918
1919
1920
1921 #define VKI_LO_NAME_SIZE 64
1922 #define VKI_LO_KEY_SIZE 32
1923
1924 struct vki_loop_info {
1925
1926 int lo_number;
1927 unsigned short lo_device;
1928 unsigned long lo_inode;
1929 unsigned short lo_rdevice;
1930 int lo_offset;
1931 int lo_encrypt_type;
1932 int lo_encrypt_key_size;
1933 int lo_flags;
1934 char lo_name[VKI_LO_NAME_SIZE];
1935 unsigned char lo_encrypt_key[VKI_LO_KEY_SIZE];
1936 unsigned long lo_init[2];
1937 char reserved[4];
1938 };
1939
1940 struct vki_loop_info64 {
1941 __vki_u64 lo_device;
1942 __vki_u64 lo_inode;
1943 __vki_u64 lo_rdevice;
1944 __vki_u64 lo_offset;
1945 __vki_u64 lo_sizelimit;
1946 __vki_u32 lo_number;
1947 __vki_u32 lo_encrypt_type;
1948 __vki_u32 lo_encrypt_key_size;
1949 __vki_u32 lo_flags;
1950 __vki_u8 lo_file_name[VKI_LO_NAME_SIZE];
1951 __vki_u8 lo_crypt_name[VKI_LO_NAME_SIZE];
1952 __vki_u8 lo_encrypt_key[VKI_LO_KEY_SIZE];
1953 __vki_u64 lo_init[2];
1954 };
1955
1956
1957 #define VKI_LOOP_SET_FD 0x4C00
1958 #define VKI_LOOP_CLR_FD 0x4C01
1959 #define VKI_LOOP_SET_STATUS 0x4C02
1960 #define VKI_LOOP_GET_STATUS 0x4C03
1961 #define VKI_LOOP_SET_STATUS64 0x4C04
1962 #define VKI_LOOP_GET_STATUS64 0x4C05
1963 #define VKI_LOOP_CHANGE_FD 0x4C06
1964 #define VKI_LOOP_SET_CAPACITY 0x4C07
1965 #define VKI_LOOP_SET_DIRECT_IO 0x4C08
1966 #define VKI_LOOP_SET_BLOCK_SIZE 0x4C09
1967
1968
1969 #define VKI_LOOP_CTL_ADD 0x4C80
1970 #define VKI_LOOP_CTL_REMOVE 0x4C81
1971 #define VKI_LOOP_CTL_GET_FREE 0x4C82
1972
1973
1974
1975
1976
1977 #define VKI_BLKROSET _VKI_IO(0x12,93)
1978 #define VKI_BLKROGET _VKI_IO(0x12,94)
1979 #define VKI_BLKRRPART _VKI_IO(0x12,95)
1980 #define VKI_BLKGETSIZE _VKI_IO(0x12,96)
1981 #define VKI_BLKFLSBUF _VKI_IO(0x12,97)
1982 #define VKI_BLKRASET _VKI_IO(0x12,98)
1983 #define VKI_BLKRAGET _VKI_IO(0x12,99)
1984 #define VKI_BLKFRASET _VKI_IO(0x12,100)
1985 #define VKI_BLKFRAGET _VKI_IO(0x12,101)
1986 #define VKI_BLKSECTSET _VKI_IO(0x12,102)
1987 #define VKI_BLKSECTGET _VKI_IO(0x12,103)
1988 #define VKI_BLKSSZGET _VKI_IO(0x12,104)
1989 #define VKI_BLKBSZGET _VKI_IOR(0x12,112,vki_size_t)
1990 #define VKI_BLKBSZSET _VKI_IOW(0x12,113,vki_size_t)
1991 #define VKI_BLKGETSIZE64 _VKI_IOR(0x12,114,vki_size_t)
1992 #define VKI_BLKDISCARD _VKI_IO(0x12,119)
1993 #define VKI_BLKIOMIN _VKI_IO(0x12,120)
1994 #define VKI_BLKIOOPT _VKI_IO(0x12,121)
1995 #define VKI_BLKALIGNOFF _VKI_IO(0x12,122)
1996 #define VKI_BLKPBSZGET _VKI_IO(0x12,123)
1997 #define VKI_BLKDISCARDZEROES _VKI_IO(0x12,124)
1998 #define VKI_BLKZEROOUT _VKI_IO(0x12,127)
1999
2000 #define VKI_FIBMAP _VKI_IO(0x00,1)
2001 #define VKI_FIGETBSZ _VKI_IO(0x00,2)
2002 #define VKI_FICLONE _VKI_IOW(0x94, 9, int)
2003
2004
2005
2006
2007
2008 typedef struct vki_sg_io_hdr
2009 {
2010 int interface_id;
2011 int dxfer_direction;
2012 unsigned char cmd_len;
2013 unsigned char mx_sb_len;
2014 unsigned short iovec_count;
2015 unsigned int dxfer_len;
2016 void __user *dxferp;
2017
2018 unsigned char __user *cmdp;
2019 void __user *sbp;
2020 unsigned int timeout;
2021 unsigned int flags;
2022 int pack_id;
2023 void __user * usr_ptr;
2024 unsigned char status;
2025 unsigned char masked_status;
2026 unsigned char msg_status;
2027 unsigned char sb_len_wr;
2028 unsigned short host_status;
2029 unsigned short driver_status;
2030 int resid;
2031 unsigned int duration;
2032 unsigned int info;
2033 } vki_sg_io_hdr_t;
2034
2035 #define VKI_SG_DXFER_NONE -1
2036 #define VKI_SG_DXFER_TO_DEV -2
2037 #define VKI_SG_DXFER_FROM_DEV -3
2038 #define VKI_SG_DXFER_TO_FROM_DEV -4
2039
2040
2041
2042
2043 typedef struct vki_sg_scsi_id {
2044 int host_no;
2045 int channel;
2046 int scsi_id;
2047 int lun;
2048 int scsi_type;
2049 short h_cmd_per_lun;
2050 short d_queue_depth;
2051 int unused[2];
2052 } vki_sg_scsi_id_t;
2053
2054 #define VKI_SG_EMULATED_HOST 0x2203
2055
2056 #define VKI_SG_SET_RESERVED_SIZE 0x2275
2057 #define VKI_SG_GET_RESERVED_SIZE 0x2272
2058
2059 #define VKI_SG_GET_SCSI_ID 0x2276
2060
2061 #define VKI_SG_GET_SG_TABLESIZE 0x227F
2062
2063 #define VKI_SG_GET_VERSION_NUM 0x2282
2064
2065 #define VKI_SG_IO 0x2285
2066
2067 #define VKI_SG_SET_TIMEOUT 0x2201
2068 #define VKI_SG_GET_TIMEOUT 0x2202
2069
2070
2071 #define VKI_SG_SET_COMMAND_Q 0x2271
2072
2073
2074
2075
2076
2077 #define VKI_SCSI_IOCTL_DOORLOCK 0x5380
2078 #define VKI_SCSI_IOCTL_DOORUNLOCK 0x5381
2079 #define VKI_SCSI_IOCTL_GET_IDLUN 0x5382
2080 #define VKI_SCSI_IOCTL_GET_BUS_NUMBER 0x5386
2081
2082 struct vki_scsi_idlun {
2083 __vki_u32 dev_id;
2084 __vki_u32 host_unique_id;
2085 };
2086
2087
2088
2089
2090
2091 #define VKI_CDROMPLAYMSF 0x5303
2092 #define VKI_CDROMREADTOCHDR 0x5305
2093
2094 #define VKI_CDROMREADTOCENTRY 0x5306
2095
2096 #define VKI_CDROMSTOP 0x5307
2097 #define VKI_CDROMSUBCHNL 0x530b
2098
2099 #define VKI_CDROMREADMODE2 0x530c
2100
2101 #define VKI_CDROMREADMODE1 0x530d
2102
2103 #define VKI_CDROMREADAUDIO 0x530e
2104 #define VKI_CDROMMULTISESSION 0x5310
2105
2106
2107 #define VKI_CDROM_GET_MCN 0x5311
2108
2109 #define VKI_CDROMVOLREAD 0x5313
2110
2111 #define VKI_CDROMREADRAW 0x5314
2112
2113 #define VKI_CDROM_CLEAR_OPTIONS 0x5321
2114 #define VKI_CDROM_DRIVE_STATUS 0x5326
2115 #define VKI_CDROM_DISC_STATUS 0x5327
2116 #define VKI_CDROM_GET_CAPABILITY 0x5331
2117
2118 #define VKI_DVD_READ_STRUCT 0x5390
2119 #define VKI_CDROM_SEND_PACKET 0x5393
2120
2121 struct vki_cdrom_msf0
2122 {
2123 __vki_u8 minute;
2124 __vki_u8 second;
2125 __vki_u8 frame;
2126 };
2127
2128 union vki_cdrom_addr
2129 {
2130 struct vki_cdrom_msf0 msf;
2131 int lba;
2132 };
2133
2134 struct vki_cdrom_msf
2135 {
2136 __vki_u8 cdmsf_min0;
2137 __vki_u8 cdmsf_sec0;
2138 __vki_u8 cdmsf_frame0;
2139 __vki_u8 cdmsf_min1;
2140 __vki_u8 cdmsf_sec1;
2141 __vki_u8 cdmsf_frame1;
2142 };
2143
2144 struct vki_cdrom_tochdr
2145 {
2146 __vki_u8 cdth_trk0;
2147 __vki_u8 cdth_trk1;
2148 };
2149
2150 struct vki_cdrom_volctrl
2151 {
2152 __vki_u8 channel0;
2153 __vki_u8 channel1;
2154 __vki_u8 channel2;
2155 __vki_u8 channel3;
2156 };
2157
2158 struct vki_cdrom_subchnl
2159 {
2160 __vki_u8 cdsc_format;
2161 __vki_u8 cdsc_audiostatus;
2162 __vki_u8 cdsc_adr: 4;
2163 __vki_u8 cdsc_ctrl: 4;
2164 __vki_u8 cdsc_trk;
2165 __vki_u8 cdsc_ind;
2166 union vki_cdrom_addr cdsc_absaddr;
2167 union vki_cdrom_addr cdsc_reladdr;
2168 };
2169
2170 struct vki_cdrom_tocentry
2171 {
2172 __vki_u8 cdte_track;
2173 __vki_u8 cdte_adr :4;
2174 __vki_u8 cdte_ctrl :4;
2175 __vki_u8 cdte_format;
2176 union vki_cdrom_addr cdte_addr;
2177 __vki_u8 cdte_datamode;
2178 };
2179
2180 struct vki_cdrom_read
2181 {
2182 int cdread_lba;
2183 char *cdread_bufaddr;
2184 int cdread_buflen;
2185 };
2186
2187 struct vki_cdrom_read_audio
2188 {
2189 union vki_cdrom_addr addr;
2190 __vki_u8 addr_format;
2191 int nframes;
2192 __vki_u8 __user *buf;
2193 };
2194
2195 struct vki_cdrom_multisession
2196 {
2197 union vki_cdrom_addr addr;
2198
2199
2200 __vki_u8 xa_flag;
2201 __vki_u8 addr_format;
2202 };
2203
2204 struct vki_cdrom_mcn
2205 {
2206 __vki_u8 medium_catalog_number[14];
2207 };
2208
2209 #define VKI_CDROM_PACKET_SIZE 12
2210
2211 struct vki_cdrom_generic_command
2212 {
2213 unsigned char cmd[VKI_CDROM_PACKET_SIZE];
2214 unsigned char __user *buffer;
2215 unsigned int buflen;
2216 int stat;
2217
2218 void__user *sense;
2219 unsigned char data_direction;
2220 int quiet;
2221 int timeout;
2222 void __user *reserved[1];
2223 };
2224
2225 #define VKI_CD_SYNC_SIZE 12
2226 #define VKI_CD_HEAD_SIZE 4
2227 #define VKI_CD_FRAMESIZE_RAW 2352
2228 #define VKI_CD_FRAMESIZE_RAW0 (VKI_CD_FRAMESIZE_RAW-VKI_CD_SYNC_SIZE-VKI_CD_HEAD_SIZE)
2229 #define VKI_CD_FRAMESIZE_RAW1 2048
2230
2231
2232
2233
2234
2235 #ifndef _VKI_SIOWR
2236 #if defined(_VKI_IOWR) && (defined(_AIX) || (!defined(sun) && !defined(sparc) && !defined(__sparc__) && !defined(__INCioctlh) && !defined(__Lynx__)))
2237
2238 #define _VKI_SIO _VKI_IO
2239 #define _VKI_SIOR _VKI_IOR
2240 #define _VKI_SIOW _VKI_IOW
2241 #define _VKI_SIOWR _VKI_IOWR
2242 #else
2243
2244 #error Valgrind: Cannot handle sparc/sun case yet...
2245 # endif
2246 #endif
2247
2248 #define VKI_SNDCTL_SEQ_CTRLRATE _VKI_SIOWR('Q', 3, int)
2249 #define VKI_SNDCTL_SEQ_GETOUTCOUNT _VKI_SIOR ('Q', 4, int)
2250 #define VKI_SNDCTL_SEQ_GETINCOUNT _VKI_SIOR ('Q', 5, int)
2251 #define VKI_SNDCTL_SEQ_PERCMODE _VKI_SIOW ('Q', 6, int)
2252 #define VKI_SNDCTL_SEQ_TESTMIDI _VKI_SIOW ('Q', 8, int)
2253 #define VKI_SNDCTL_SEQ_RESETSAMPLES _VKI_SIOW ('Q', 9, int)
2254 #define VKI_SNDCTL_SEQ_NRSYNTHS _VKI_SIOR ('Q',10, int)
2255 #define VKI_SNDCTL_SEQ_NRMIDIS _VKI_SIOR ('Q',11, int)
2256 #define VKI_SNDCTL_SEQ_GETTIME _VKI_SIOR ('Q',19, int)
2257
2258 #define VKI_SNDCTL_TMR_TIMEBASE _VKI_SIOWR('T', 1, int)
2259 #define VKI_SNDCTL_TMR_TEMPO _VKI_SIOWR('T', 5, int)
2260 #define VKI_SNDCTL_TMR_SOURCE _VKI_SIOWR('T', 6, int)
2261
2262 #define VKI_SNDCTL_MIDI_PRETIME _VKI_SIOWR('m', 0, int)
2263 #define VKI_SNDCTL_MIDI_MPUMODE _VKI_SIOWR('m', 1, int)
2264
2265 #define VKI_SNDCTL_DSP_RESET _VKI_SIO ('P', 0)
2266 #define VKI_SNDCTL_DSP_SYNC _VKI_SIO ('P', 1)
2267 #define VKI_SNDCTL_DSP_SPEED _VKI_SIOWR('P', 2, int)
2268 #define VKI_SNDCTL_DSP_STEREO _VKI_SIOWR('P', 3, int)
2269 #define VKI_SNDCTL_DSP_GETBLKSIZE _VKI_SIOWR('P', 4, int)
2270 #define VKI_SNDCTL_DSP_CHANNELS _VKI_SIOWR('P', 6, int)
2271 #define VKI_SOUND_PCM_WRITE_FILTER _VKI_SIOWR('P', 7, int)
2272 #define VKI_SNDCTL_DSP_POST _VKI_SIO ('P', 8)
2273 #define VKI_SNDCTL_DSP_SUBDIVIDE _VKI_SIOWR('P', 9, int)
2274 #define VKI_SNDCTL_DSP_SETFRAGMENT _VKI_SIOWR('P',10, int)
2275
2276 #define VKI_SNDCTL_DSP_GETFMTS _VKI_SIOR ('P',11, int)
2277 #define VKI_SNDCTL_DSP_SETFMT _VKI_SIOWR('P', 5, int)
2278
2279 typedef struct vki_audio_buf_info {
2280 int fragments;
2281 int fragstotal;
2282 int fragsize;
2283
2284 int bytes;
2285
2286 } vki_audio_buf_info;
2287
2288 #define VKI_SNDCTL_DSP_GETOSPACE _VKI_SIOR ('P',12, vki_audio_buf_info)
2289 #define VKI_SNDCTL_DSP_GETISPACE _VKI_SIOR ('P',13, vki_audio_buf_info)
2290 #define VKI_SNDCTL_DSP_NONBLOCK _VKI_SIO ('P',14)
2291 #define VKI_SNDCTL_DSP_GETCAPS _VKI_SIOR ('P',15, int)
2292
2293 #define VKI_SNDCTL_DSP_GETTRIGGER _VKI_SIOR ('P',16, int)
2294 #define VKI_SNDCTL_DSP_SETTRIGGER _VKI_SIOW ('P',16, int)
2295
2296 #define VKI_SNDCTL_DSP_SETSYNCRO _VKI_SIO ('P', 21)
2297 #define VKI_SNDCTL_DSP_SETDUPLEX _VKI_SIO ('P', 22)
2298 #define VKI_SNDCTL_DSP_GETODELAY _VKI_SIOR ('P', 23, int)
2299
2300 #define VKI_SNDCTL_DSP_GETCHANNELMASK _VKI_SIOWR('P', 64, int)
2301 #define VKI_SNDCTL_DSP_BIND_CHANNEL _VKI_SIOWR('P', 65, int)
2302
2303 #define VKI_SNDCTL_DSP_SETSPDIF _VKI_SIOW ('P', 66, int)
2304 #define VKI_SNDCTL_DSP_GETSPDIF _VKI_SIOR ('P', 67, int)
2305
2306 #define VKI_SOUND_PCM_READ_RATE _VKI_SIOR ('P', 2, int)
2307 #define VKI_SOUND_PCM_READ_CHANNELS _VKI_SIOR ('P', 6, int)
2308 #define VKI_SOUND_PCM_READ_BITS _VKI_SIOR ('P', 5, int)
2309 #define VKI_SOUND_PCM_READ_FILTER _VKI_SIOR ('P', 7, int)
2310
2311
2312
2313
2314
2315
2316 struct vki_hd_geometry {
2317 unsigned char heads;
2318 unsigned char sectors;
2319 unsigned short cylinders;
2320 unsigned long start;
2321 };
2322
2323 #define VKI_HDIO_GETGEO 0x0301
2324 #define VKI_HDIO_GET_DMA 0x030b
2325 #define VKI_HDIO_GET_IDENTITY 0x030d
2326
2327
2328
2329 #define VKI_SIZEOF_STRUCT_HD_DRIVEID 512
2330
2331
2332
2333
2334
2335 #define VKI_FBIOGET_VSCREENINFO 0x4600
2336 #define VKI_FBIOPUT_VSCREENINFO 0x4601
2337 #define VKI_FBIOGET_FSCREENINFO 0x4602
2338 #define VKI_FBIOPAN_DISPLAY 0x4606
2339
2340 struct vki_fb_fix_screeninfo {
2341 char id[16];
2342 unsigned long smem_start;
2343
2344 __vki_u32 smem_len;
2345 __vki_u32 type;
2346 __vki_u32 type_aux;
2347 __vki_u32 visual;
2348 __vki_u16 xpanstep;
2349 __vki_u16 ypanstep;
2350 __vki_u16 ywrapstep;
2351 __vki_u32 line_length;
2352 unsigned long mmio_start;
2353
2354 __vki_u32 mmio_len;
2355 __vki_u32 accel;
2356
2357 __vki_u16 reserved[3];
2358 };
2359
2360 struct vki_fb_bitfield {
2361 __vki_u32 offset;
2362 __vki_u32 length;
2363 __vki_u32 msb_right;
2364
2365 };
2366
2367 struct vki_fb_var_screeninfo {
2368 __vki_u32 xres;
2369 __vki_u32 yres;
2370 __vki_u32 xres_virtual;
2371 __vki_u32 yres_virtual;
2372 __vki_u32 xoffset;
2373 __vki_u32 yoffset;
2374
2375 __vki_u32 bits_per_pixel;
2376 __vki_u32 grayscale;
2377
2378 struct vki_fb_bitfield red;
2379 struct vki_fb_bitfield green;
2380 struct vki_fb_bitfield blue;
2381 struct vki_fb_bitfield transp;
2382
2383 __vki_u32 nonstd;
2384
2385 __vki_u32 activate;
2386
2387 __vki_u32 height;
2388 __vki_u32 width;
2389
2390 __vki_u32 accel_flags;
2391
2392
2393 __vki_u32 pixclock;
2394 __vki_u32 left_margin;
2395 __vki_u32 right_margin;
2396 __vki_u32 upper_margin;
2397 __vki_u32 lower_margin;
2398 __vki_u32 hsync_len;
2399 __vki_u32 vsync_len;
2400 __vki_u32 sync;
2401 __vki_u32 vmode;
2402 __vki_u32 rotate;
2403 __vki_u32 reserved[5];
2404 };
2405
2406
2407
2408
2409
2410 #define VKI_GIO_FONT 0x4B60
2411 #define VKI_PIO_FONT 0x4B61
2412
2413 #define VKI_GIO_FONTX 0x4B6B
2414 #define VKI_PIO_FONTX 0x4B6C
2415 struct vki_consolefontdesc {
2416 unsigned short charcount;
2417 unsigned short charheight;
2418 char __user *chardata;
2419 };
2420
2421 #define VKI_PIO_FONTRESET 0x4B6D
2422
2423 #define VKI_GIO_CMAP 0x4B70
2424 #define VKI_PIO_CMAP 0x4B71
2425
2426 #define VKI_KIOCSOUND 0x4B2F
2427 #define VKI_KDMKTONE 0x4B30
2428
2429 #define VKI_KDGETLED 0x4B31
2430 #define VKI_KDSETLED 0x4B32
2431
2432 #define VKI_KDGKBTYPE 0x4B33
2433
2434 #define VKI_KDADDIO 0x4B34
2435 #define VKI_KDDELIO 0x4B35
2436 #define VKI_KDENABIO 0x4B36
2437 #define VKI_KDDISABIO 0x4B37
2438
2439 #define VKI_KDSETMODE 0x4B3A
2440 #define VKI_KDGETMODE 0x4B3B
2441
2442 #define VKI_KDMAPDISP 0x4B3C
2443 #define VKI_KDUNMAPDISP 0x4B3D
2444
2445 #define VKI_E_TABSZ 256
2446 #define VKI_GIO_SCRNMAP 0x4B40
2447 #define VKI_PIO_SCRNMAP 0x4B41
2448 #define VKI_GIO_UNISCRNMAP 0x4B69
2449 #define VKI_PIO_UNISCRNMAP 0x4B6A
2450
2451 #define VKI_GIO_UNIMAP 0x4B66
2452 struct vki_unipair {
2453 unsigned short unicode;
2454 unsigned short fontpos;
2455 };
2456 struct vki_unimapdesc {
2457 unsigned short entry_ct;
2458 struct vki_unipair __user *entries;
2459 };
2460 #define VKI_PIO_UNIMAP 0x4B67
2461 #define VKI_PIO_UNIMAPCLR 0x4B68
2462 struct vki_unimapinit {
2463 unsigned short advised_hashsize;
2464 unsigned short advised_hashstep;
2465 unsigned short advised_hashlevel;
2466 };
2467
2468 #define VKI_KDGKBMODE 0x4B44
2469 #define VKI_KDSKBMODE 0x4B45
2470
2471 #define VKI_KDGKBMETA 0x4B62
2472 #define VKI_KDSKBMETA 0x4B63
2473
2474 #define VKI_KDGKBLED 0x4B64
2475 #define VKI_KDSKBLED 0x4B65
2476
2477 struct vki_kbentry {
2478 unsigned char kb_table;
2479 unsigned char kb_index;
2480 unsigned short kb_value;
2481 };
2482 #define VKI_KDGKBENT 0x4B46
2483 #define VKI_KDSKBENT 0x4B47
2484
2485 struct vki_kbsentry {
2486 unsigned char kb_func;
2487 unsigned char kb_string[512];
2488 };
2489 #define VKI_KDGKBSENT 0x4B48
2490 #define VKI_KDSKBSENT 0x4B49
2491
2492 struct vki_kbdiacr {
2493 unsigned char diacr, base, result;
2494 };
2495 struct vki_kbdiacrs {
2496 unsigned int kb_cnt;
2497 struct vki_kbdiacr kbdiacr[256];
2498 };
2499 #define VKI_KDGKBDIACR 0x4B4A
2500 #define VKI_KDSKBDIACR 0x4B4B
2501
2502 struct vki_kbkeycode {
2503 unsigned int scancode, keycode;
2504 };
2505 #define VKI_KDGETKEYCODE 0x4B4C
2506 #define VKI_KDSETKEYCODE 0x4B4D
2507
2508 #define VKI_KDSIGACCEPT 0x4B4E
2509
2510 struct vki_kbd_repeat {
2511 int delay;
2512 int period;
2513
2514 };
2515 #define VKI_KDKBDREP 0x4B52
2516
2517
2518 #define VKI_KDFONTOP 0x4B72
2519
2520 struct vki_console_font_op {
2521 unsigned int op;
2522 unsigned int flags;
2523 unsigned int width, height;
2524 unsigned int charcount;
2525 unsigned char __user *data;
2526 };
2527
2528 #define VKI_KD_FONT_OP_SET 0
2529 #define VKI_KD_FONT_OP_GET 1
2530 #define VKI_KD_FONT_OP_SET_DEFAULT 2
2531 #define VKI_KD_FONT_OP_COPY 3
2532
2533
2534
2535
2536
2537 typedef __vki_kernel_uid32_t vki_qid_t;
2538
2539
2540
2541
2542
2543 #define VKI_PTRACE_TRACEME 0
2544 #define VKI_PTRACE_PEEKTEXT 1
2545 #define VKI_PTRACE_PEEKDATA 2
2546 #define VKI_PTRACE_PEEKUSR 3
2547 #define VKI_PTRACE_POKEUSR 6
2548
2549 #define VKI_PTRACE_DETACH 17
2550
2551 #define VKI_PTRACE_GETEVENTMSG 0x4201
2552 #define VKI_PTRACE_GETSIGINFO 0x4202
2553 #define VKI_PTRACE_SETSIGINFO 0x4203
2554 #define VKI_PTRACE_GETREGSET 0x4204
2555 #define VKI_PTRACE_SETREGSET 0x4205
2556
2557 #define VKI_PT_PTRACED 0x00000001
2558
2559
2560
2561
2562
2563 enum {
2564 VKI_SNDRV_PCM_IOCTL_HW_FREE = _VKI_IO('A', 0x12),
2565 VKI_SNDRV_PCM_IOCTL_HWSYNC = _VKI_IO('A', 0x22),
2566 VKI_SNDRV_PCM_IOCTL_PREPARE = _VKI_IO('A', 0x40),
2567 VKI_SNDRV_PCM_IOCTL_RESET = _VKI_IO('A', 0x41),
2568 VKI_SNDRV_PCM_IOCTL_START = _VKI_IO('A', 0x42),
2569 VKI_SNDRV_PCM_IOCTL_DROP = _VKI_IO('A', 0x43),
2570 VKI_SNDRV_PCM_IOCTL_DRAIN = _VKI_IO('A', 0x44),
2571 VKI_SNDRV_PCM_IOCTL_PAUSE = _VKI_IOW('A', 0x45, int),
2572 VKI_SNDRV_PCM_IOCTL_RESUME = _VKI_IO('A', 0x47),
2573 VKI_SNDRV_PCM_IOCTL_XRUN = _VKI_IO('A', 0x48),
2574 VKI_SNDRV_PCM_IOCTL_LINK = _VKI_IOW('A', 0x60, int),
2575 VKI_SNDRV_PCM_IOCTL_UNLINK = _VKI_IO('A', 0x61),
2576 };
2577
2578 enum {
2579 VKI_SNDRV_TIMER_IOCTL_START = _VKI_IO('T', 0xa0),
2580 VKI_SNDRV_TIMER_IOCTL_STOP = _VKI_IO('T', 0xa1),
2581 VKI_SNDRV_TIMER_IOCTL_CONTINUE = _VKI_IO('T', 0xa2),
2582 VKI_SNDRV_TIMER_IOCTL_PAUSE = _VKI_IO('T', 0xa3),
2583 };
2584
2585 struct vki_snd_ctl_card_info {
2586 int card;
2587 int pad;
2588 unsigned char id[16];
2589 unsigned char driver[16];
2590 unsigned char name[32];
2591 unsigned char longname[80];
2592 unsigned char reserved_[16];
2593 unsigned char mixername[80];
2594 unsigned char components[128];
2595 };
2596
2597 typedef int vki_snd_ctl_elem_iface_t;
2598 #define VKI_SNDRV_CTL_ELEM_IFACE_CARD ((vki_snd_ctl_elem_iface_t) 0)
2599 #define VKI_SNDRV_CTL_ELEM_IFACE_HWDEP ((vki_snd_ctl_elem_iface_t) 1)
2600 #define VKI_SNDRV_CTL_ELEM_IFACE_MIXER ((vki_snd_ctl_elem_iface_t) 2)
2601 #define VKI_SNDRV_CTL_ELEM_IFACE_PCM ((vki_snd_ctl_elem_iface_t) 3)
2602 #define VKI_SNDRV_CTL_ELEM_IFACE_RAWMIDI ((vki_snd_ctl_elem_iface_t) 4)
2603 #define VKI_SNDRV_CTL_ELEM_IFACE_TIMER ((vki_snd_ctl_elem_iface_t) 5)
2604 #define VKI_SNDRV_CTL_ELEM_IFACE_SEQUENCER ((vki_snd_ctl_elem_iface_t) 6)
2605 #define VKI_SNDRV_CTL_ELEM_IFACE_LAST VKI_SNDRV_CTL_ELEM_IFACE_SEQUENCER
2606
2607 struct vki_snd_ctl_elem_id {
2608 unsigned int numid;
2609 vki_snd_ctl_elem_iface_t iface;
2610 unsigned int device;
2611 unsigned int subdevice;
2612 unsigned char name[44];
2613 unsigned int index;
2614 };
2615
2616 struct vki_snd_ctl_elem_list {
2617 unsigned int offset;
2618 unsigned int space;
2619 unsigned int used;
2620 unsigned int count;
2621 struct vki_snd_ctl_elem_id __user *pids;
2622 unsigned char reserved[50];
2623 };
2624
2625 struct vki_snd_ctl_tlv {
2626 unsigned int numid;
2627 unsigned int length;
2628 unsigned int tlv[0];
2629 };
2630
2631 #define VKI_SNDRV_CTL_IOCTL_PVERSION _VKI_IOR('U', 0x00, int)
2632 #define VKI_SNDRV_CTL_IOCTL_CARD_INFO _VKI_IOR('U', 0x01, struct vki_snd_ctl_card_info)
2633 #define VKI_SNDRV_CTL_IOCTL_ELEM_LIST _VKI_IOWR('U', 0x10, struct vki_snd_ctl_elem_list)
2634 #define VKI_SNDRV_CTL_IOCTL_TLV_READ _VKI_IOWR('U', 0x1a, struct vki_snd_ctl_tlv)
2635 #define VKI_SNDRV_CTL_IOCTL_TLV_WRITE _VKI_IOWR('U', 0x1b, struct vki_snd_ctl_tlv)
2636 #define VKI_SNDRV_CTL_IOCTL_TLV_COMMAND _VKI_IOWR('U', 0x1c, struct vki_snd_ctl_tlv)
2637
2638
2639
2640
2641
2642 struct vki_serial_icounter_struct {
2643 int cts, dsr, rng, dcd;
2644 int rx, tx;
2645 int frame, overrun, parity, brk;
2646 int buf_overrun;
2647 int reserved[9];
2648 };
2649
2650
2651
2652
2653
2654 #define VKI_VT_OPENQRY 0x5600
2655
2656 struct vki_vt_mode {
2657 char mode;
2658 char waitv;
2659 short relsig;
2660 short acqsig;
2661 short frsig;
2662 };
2663 #define VKI_VT_GETMODE 0x5601
2664 #define VKI_VT_SETMODE 0x5602
2665
2666 struct vki_vt_stat {
2667 unsigned short v_active;
2668 unsigned short v_signal;
2669 unsigned short v_state;
2670 };
2671 #define VKI_VT_GETSTATE 0x5603
2672 #define VKI_VT_SENDSIG 0x5604
2673
2674 #define VKI_VT_RELDISP 0x5605
2675
2676 #define VKI_VT_ACTIVATE 0x5606
2677 #define VKI_VT_WAITACTIVE 0x5607
2678 #define VKI_VT_DISALLOCATE 0x5608
2679
2680 struct vki_vt_sizes {
2681 unsigned short v_rows;
2682 unsigned short v_cols;
2683 unsigned short v_scrollsize;
2684 };
2685 #define VKI_VT_RESIZE 0x5609
2686
2687 struct vki_vt_consize {
2688 unsigned short v_rows;
2689 unsigned short v_cols;
2690 unsigned short v_vlin;
2691 unsigned short v_clin;
2692 unsigned short v_vcol;
2693 unsigned short v_ccol;
2694 };
2695 #define VKI_VT_RESIZEX 0x560A
2696 #define VKI_VT_LOCKSWITCH 0x560B
2697 #define VKI_VT_UNLOCKSWITCH 0x560C
2698
2699
2700
2701
2702
2703 #define VKI_PR_SET_PDEATHSIG 1
2704 #define VKI_PR_GET_PDEATHSIG 2
2705
2706 #define VKI_PR_GET_DUMPABLE 3
2707 #define VKI_PR_SET_DUMPABLE 4
2708
2709 #define VKI_PR_GET_UNALIGN 5
2710 #define VKI_PR_SET_UNALIGN 6
2711 # define VKI_PR_UNALIGN_NOPRINT 1
2712 # define VKI_PR_UNALIGN_SIGBUS 2
2713
2714 #define VKI_PR_GET_KEEPCAPS 7
2715 #define VKI_PR_SET_KEEPCAPS 8
2716
2717 #define VKI_PR_GET_FPEMU 9
2718 #define VKI_PR_SET_FPEMU 10
2719 # define VKI_PR_FPEMU_NOPRINT 1
2720 # define VKI_PR_FPEMU_SIGFPE 2
2721
2722 #define VKI_PR_GET_FPEXC 11
2723 #define VKI_PR_SET_FPEXC 12
2724 # define VKI_PR_FP_EXC_SW_ENABLE 0x80
2725 # define VKI_PR_FP_EXC_DIV 0x010000
2726 # define VKI_PR_FP_EXC_OVF 0x020000
2727 # define VKI_PR_FP_EXC_UND 0x040000
2728 # define VKI_PR_FP_EXC_RES 0x080000
2729 # define VKI_PR_FP_EXC_INV 0x100000
2730 # define VKI_PR_FP_EXC_DISABLED 0
2731 # define VKI_PR_FP_EXC_NONRECOV 1
2732 # define VKI_PR_FP_EXC_ASYNC 2
2733 # define VKI_PR_FP_EXC_PRECISE 3
2734
2735 #define VKI_PR_GET_TIMING 13
2736 #define VKI_PR_SET_TIMING 14
2737 # define VKI_PR_TIMING_STATISTICAL 0
2738
2739 # define VKI_PR_TIMING_TIMESTAMP 1
2740
2741
2742 #define VKI_PR_SET_NAME 15
2743 #define VKI_PR_GET_NAME 16
2744
2745 #define VKI_PR_GET_ENDIAN 19
2746 #define VKI_PR_SET_ENDIAN 20
2747 # define VKI_PR_ENDIAN_BIG 0
2748 # define VKI_PR_ENDIAN_LITTLE 1
2749 # define VKI_PR_ENDIAN_PPC_LITTLE 2
2750
2751 #define VKI_PR_SET_SECCOMP 22
2752
2753 #define VKI_PR_CAPBSET_READ 23
2754 #define VKI_PR_CAPBSET_DROP 24
2755
2756 #define VKI_PR_GET_TSC 25
2757 #define VKI_PR_SET_TSC 26
2758
2759 #define VKI_PR_GET_SECUREBITS 27
2760 #define VKI_PR_SET_SECUREBITS 28
2761
2762 #define VKI_PR_SET_TIMERSLACK 29
2763 #define VKI_PR_GET_TIMERSLACK 30
2764
2765 #define VKI_PR_TASK_PERF_EVENTS_DISABLE 31
2766 #define VKI_PR_TASK_PERF_EVENTS_ENABLE 32
2767
2768 #define VKI_PR_MCE_KILL 33
2769 #define VKI_PR_MCE_KILL_GET 34
2770
2771 #define VKI_PR_SET_PTRACER 0x59616d61
2772
2773 #define VKI_PR_SET_CHILD_SUBREAPER 36
2774 #define VKI_PR_GET_CHILD_SUBREAPER 37
2775
2776 #define VKI_PR_SET_NO_NEW_PRIVS 38
2777 #define VKI_PR_GET_NO_NEW_PRIVS 39
2778
2779 #define VKI_PR_GET_TID_ADDRESS 40
2780
2781 #define VKI_PR_SET_THP_DISABLE 41
2782 #define VKI_PR_GET_THP_DISABLE 42
2783
2784 #define VKI_PR_MPX_ENABLE_MANAGEMENT 43
2785 #define VKI_PR_MPX_DISABLE_MANAGEMENT 44
2786
2787 #define VKI_PR_SET_FP_MODE 45
2788 #define VKI_PR_GET_FP_MODE 46
2789
2790 #define VKI_PR_CAP_AMBIENT 47
2791
2792 #define VKI_PR_SVE_SET_VL 50
2793 #define VKI_PR_SVE_GET_VL 51
2794 #define VKI_PR_GET_SPECULATION_CTRL 52
2795 #define VKI_PR_SET_SPECULATION_CTRL 53
2796 #define VKI_PR_PAC_RESET_KEYS 54
2797 #define VKI_PR_SET_TAGGED_ADDR_CTRL 55
2798 #define VKI_PR_GET_TAGGED_ADDR_CTRL 56
2799
2800
2801
2802
2803
2804 struct vki_usbdevfs_ctrltransfer {
2805 __vki_u8 bRequestType;
2806 __vki_u8 bRequest;
2807 __vki_u16 wValue;
2808 __vki_u16 wIndex;
2809 __vki_u16 wLength;
2810 __vki_u32 timeout;
2811 void __user *data;
2812 };
2813
2814 struct vki_usbdevfs_bulktransfer {
2815 unsigned int ep;
2816 unsigned int len;
2817 unsigned int timeout;
2818 void __user *data;
2819 };
2820
2821 #define VKI_USBDEVFS_MAXDRIVERNAME 255
2822
2823 struct vki_usbdevfs_getdriver {
2824 unsigned int interface;
2825 char driver[VKI_USBDEVFS_MAXDRIVERNAME + 1];
2826 };
2827
2828 struct vki_usbdevfs_connectinfo {
2829 unsigned int devnum;
2830 unsigned char slow;
2831 };
2832
2833 struct vki_usbdevfs_iso_packet_desc {
2834 unsigned int length;
2835 unsigned int actual_length;
2836 unsigned int status;
2837 };
2838
2839 struct vki_usbdevfs_urb {
2840 unsigned char type;
2841 unsigned char endpoint;
2842 int status;
2843 unsigned int flags;
2844 void __user *buffer;
2845 int buffer_length;
2846 int actual_length;
2847 int start_frame;
2848 int number_of_packets;
2849 int error_count;
2850 unsigned int signr;
2851 void *usercontext;
2852 struct vki_usbdevfs_iso_packet_desc iso_frame_desc[0];
2853 };
2854
2855 struct vki_usbdevfs_ioctl {
2856 int ifno;
2857 int ioctl_code;
2858
2859 void __user *data;
2860 };
2861
2862 #define VKI_USBDEVFS_CONTROL _VKI_IOWR('U', 0, struct vki_usbdevfs_ctrltransfer)
2863 #define VKI_USBDEVFS_BULK _VKI_IOWR('U', 2, struct vki_usbdevfs_bulktransfer)
2864 #define VKI_USBDEVFS_GETDRIVER _VKI_IOW('U', 8, struct vki_usbdevfs_getdriver)
2865 #define VKI_USBDEVFS_SUBMITURB _VKI_IOR('U', 10, struct vki_usbdevfs_urb)
2866 #define VKI_USBDEVFS_DISCARDURB _VKI_IO('U', 11)
2867 #define VKI_USBDEVFS_REAPURB _VKI_IOW('U', 12, void *)
2868 #define VKI_USBDEVFS_REAPURBNDELAY _VKI_IOW('U', 13, void *)
2869 #define VKI_USBDEVFS_CONNECTINFO _VKI_IOW('U', 17, struct vki_usbdevfs_connectinfo)
2870 #define VKI_USBDEVFS_IOCTL _VKI_IOWR('U', 18, struct vki_usbdevfs_ioctl)
2871 #define VKI_USBDEVFS_RESET _VKI_IO('U', 20)
2872
2873 #define VKI_USBDEVFS_URB_TYPE_ISO 0
2874 #define VKI_USBDEVFS_URB_TYPE_INTERRUPT 1
2875 #define VKI_USBDEVFS_URB_TYPE_CONTROL 2
2876 #define VKI_USBDEVFS_URB_TYPE_BULK 3
2877
2878
2879 struct vki_usbdevfs_setuppacket {
2880 __vki_u8 bRequestType;
2881 __vki_u8 bRequest;
2882 __vki_u16 wValue;
2883 __vki_u16 wIndex;
2884 __vki_u16 wLength;
2885 };
2886
2887
2888
2889
2890
2891 #define VKI_I2C_SMBUS_QUICK 0
2892 #define VKI_I2C_SMBUS_BYTE 1
2893 #define VKI_I2C_SMBUS_BYTE_DATA 2
2894 #define VKI_I2C_SMBUS_WORD_DATA 3
2895 #define VKI_I2C_SMBUS_PROC_CALL 4
2896 #define VKI_I2C_SMBUS_BLOCK_DATA 5
2897 #define VKI_I2C_SMBUS_I2C_BLOCK_BROKEN 6
2898 #define VKI_I2C_SMBUS_BLOCK_PROC_CALL 7
2899 #define VKI_I2C_SMBUS_I2C_BLOCK_DATA 8
2900
2901
2902 #define VKI_I2C_SMBUS_READ 1
2903 #define VKI_I2C_SMBUS_WRITE 0
2904
2905 #define VKI_I2C_SLAVE 0x0703
2906
2907 #define VKI_I2C_SLAVE_FORCE 0x0706
2908
2909
2910
2911 #define VKI_I2C_TENBIT 0x0704
2912 #define VKI_I2C_FUNCS 0x0705
2913 #define VKI_I2C_RDWR 0x0707
2914 #define VKI_I2C_PEC 0x0708
2915 #define VKI_I2C_SMBUS 0x0720
2916
2917 #define VKI_I2C_SMBUS_BLOCK_MAX 32
2918 union vki_i2c_smbus_data {
2919 __vki_u8 byte;
2920 __vki_u16 word;
2921 __vki_u8 block[VKI_I2C_SMBUS_BLOCK_MAX + 2];
2922
2923
2924 };
2925
2926
2927 struct vki_i2c_smbus_ioctl_data {
2928 __vki_u8 read_write;
2929 __vki_u8 command;
2930 __vki_u32 size;
2931 union vki_i2c_smbus_data __user *data;
2932 };
2933
2934 struct vki_i2c_msg {
2935 __vki_u16 addr;
2936 __vki_u16 flags;
2937 #define VKI_I2C_M_TEN 0x0010
2938 #define VKI_I2C_M_RD 0x0001
2939 #define VKI_I2C_M_NOSTART 0x4000
2940 #define VKI_I2C_M_REV_DIR_ADDR 0x2000
2941 #define VKI_I2C_M_IGNORE_NAK 0x1000
2942 #define VKI_I2C_M_NO_RD_ACK 0x0800
2943 #define VKI_I2C_M_RECV_LEN 0x0400
2944 __vki_u16 len;
2945 __vki_u8 *buf;
2946 };
2947
2948 struct vki_i2c_rdwr_ioctl_data {
2949 struct vki_i2c_msg *msgs;
2950 __vki_u32 nmsgs;
2951 };
2952
2953
2954
2955
2956
2957
2958 #define VKI_KEYCTL_GET_KEYRING_ID 0
2959 #define VKI_KEYCTL_JOIN_SESSION_KEYRING 1
2960 #define VKI_KEYCTL_UPDATE 2
2961 #define VKI_KEYCTL_REVOKE 3
2962 #define VKI_KEYCTL_CHOWN 4
2963 #define VKI_KEYCTL_SETPERM 5
2964 #define VKI_KEYCTL_DESCRIBE 6
2965 #define VKI_KEYCTL_CLEAR 7
2966 #define VKI_KEYCTL_LINK 8
2967 #define VKI_KEYCTL_UNLINK 9
2968 #define VKI_KEYCTL_SEARCH 10
2969 #define VKI_KEYCTL_READ 11
2970 #define VKI_KEYCTL_INSTANTIATE 12
2971 #define VKI_KEYCTL_NEGATE 13
2972 #define VKI_KEYCTL_SET_REQKEY_KEYRING 14
2973 #define VKI_KEYCTL_SET_TIMEOUT 15
2974 #define VKI_KEYCTL_ASSUME_AUTHORITY 16
2975
2976
2977
2978
2979
2980
2981 typedef vki_int32_t vki_key_serial_t;
2982
2983
2984 typedef vki_uint32_t vki_key_perm_t;
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996 #define VKI_SIOCSIWCOMMIT 0x8B00
2997 #define VKI_SIOCGIWNAME 0x8B01
2998
2999
3000 #define VKI_SIOCSIWNWID 0x8B02
3001 #define VKI_SIOCGIWNWID 0x8B03
3002 #define VKI_SIOCSIWFREQ 0x8B04
3003 #define VKI_SIOCGIWFREQ 0x8B05
3004 #define VKI_SIOCSIWMODE 0x8B06
3005 #define VKI_SIOCGIWMODE 0x8B07
3006 #define VKI_SIOCSIWSENS 0x8B08
3007 #define VKI_SIOCGIWSENS 0x8B09
3008
3009
3010 #define VKI_SIOCSIWRANGE 0x8B0A
3011 #define VKI_SIOCGIWRANGE 0x8B0B
3012 #define VKI_SIOCSIWPRIV 0x8B0C
3013 #define VKI_SIOCGIWPRIV 0x8B0D
3014 #define VKI_SIOCSIWSTATS 0x8B0E
3015 #define VKI_SIOCGIWSTATS 0x8B0F
3016
3017
3018 #define VKI_SIOCSIWSPY 0x8B10
3019 #define VKI_SIOCGIWSPY 0x8B11
3020 #define VKI_SIOCSIWTHRSPY 0x8B12
3021 #define VKI_SIOCGIWTHRSPY 0x8B13
3022
3023
3024 #define VKI_SIOCSIWAP 0x8B14
3025 #define VKI_SIOCGIWAP 0x8B15
3026 #define VKI_SIOCGIWAPLIST 0x8B17
3027 #define VKI_SIOCSIWSCAN 0x8B18
3028 #define VKI_SIOCGIWSCAN 0x8B19
3029
3030
3031 #define VKI_SIOCSIWESSID 0x8B1A
3032 #define VKI_SIOCGIWESSID 0x8B1B
3033 #define VKI_SIOCSIWNICKN 0x8B1C
3034 #define VKI_SIOCGIWNICKN 0x8B1D
3035
3036
3037 #define VKI_SIOCSIWRATE 0x8B20
3038 #define VKI_SIOCGIWRATE 0x8B21
3039 #define VKI_SIOCSIWRTS 0x8B22
3040 #define VKI_SIOCGIWRTS 0x8B23
3041 #define VKI_SIOCSIWFRAG 0x8B24
3042 #define VKI_SIOCGIWFRAG 0x8B25
3043 #define VKI_SIOCSIWTXPOW 0x8B26
3044 #define VKI_SIOCGIWTXPOW 0x8B27
3045 #define VKI_SIOCSIWRETRY 0x8B28
3046 #define VKI_SIOCGIWRETRY 0x8B29
3047
3048
3049 #define VKI_SIOCSIWENCODE 0x8B2A
3050 #define VKI_SIOCGIWENCODE 0x8B2B
3051
3052
3053 #define VKI_SIOCSIWPOWER 0x8B2C
3054 #define VKI_SIOCGIWPOWER 0x8B2D
3055
3056
3057 #define VKI_SIOCSIWGENIE 0x8B30
3058 #define VKI_SIOCGIWGENIE 0x8B31
3059
3060
3061 #define VKI_SIOCSIWMLME 0x8B16
3062
3063
3064 #define VKI_SIOCSIWAUTH 0x8B32
3065 #define VKI_SIOCGIWAUTH 0x8B33
3066
3067
3068 #define VKI_SIOCSIWENCODEEXT 0x8B34
3069 #define VKI_SIOCGIWENCODEEXT 0x8B35
3070
3071
3072 #define VKI_SIOCSIWPMKSA 0x8B36
3073
3074
3075
3076
3077
3078 struct vki_iw_param
3079 {
3080 __vki_s32 value;
3081 __vki_u8 fixed;
3082 __vki_u8 disabled;
3083 __vki_u16 flags;
3084 };
3085
3086 struct vki_iw_point
3087 {
3088 void __user *pointer;
3089 __vki_u16 length;
3090 __vki_u16 flags;
3091 };
3092
3093 struct vki_iw_freq
3094 {
3095 __vki_s32 m;
3096 __vki_s16 e;
3097 __vki_u8 i;
3098 __vki_u8 flags;
3099 };
3100
3101 struct vki_iw_quality
3102 {
3103 __vki_u8 qual;
3104
3105 __vki_u8 level;
3106 __vki_u8 noise;
3107 __vki_u8 updated;
3108 };
3109
3110 union vki_iwreq_data
3111 {
3112
3113 char name[VKI_IFNAMSIZ];
3114
3115
3116
3117 struct vki_iw_point essid;
3118 struct vki_iw_param nwid;
3119 struct vki_iw_freq freq;
3120
3121
3122
3123 struct vki_iw_param sens;
3124 struct vki_iw_param bitrate;
3125 struct vki_iw_param txpower;
3126 struct vki_iw_param rts;
3127 struct vki_iw_param frag;
3128 __vki_u32 mode;
3129 struct vki_iw_param retry;
3130
3131 struct vki_iw_point encoding;
3132 struct vki_iw_param power;
3133 struct vki_iw_quality qual;
3134
3135 struct vki_sockaddr ap_addr;
3136 struct vki_sockaddr addr;
3137
3138 struct vki_iw_param param;
3139 struct vki_iw_point data;
3140 };
3141
3142 struct vki_iwreq
3143 {
3144 union
3145 {
3146 char ifrn_name[VKI_IFNAMSIZ];
3147 } ifr_ifrn;
3148
3149
3150 union vki_iwreq_data u;
3151 };
3152
3153
3154
3155
3156
3157 struct vki_perf_event_attr {
3158
3159
3160
3161
3162 __vki_u32 type;
3163
3164
3165
3166
3167 __vki_u32 size;
3168
3169
3170
3171
3172 __vki_u64 config;
3173
3174 union {
3175 __vki_u64 sample_period;
3176 __vki_u64 sample_freq;
3177 };
3178
3179 __vki_u64 sample_type;
3180 __vki_u64 read_format;
3181
3182 __vki_u64 disabled : 1,
3183 inherit : 1,
3184 pinned : 1,
3185 exclusive : 1,
3186 exclude_user : 1,
3187 exclude_kernel : 1,
3188 exclude_hv : 1,
3189 exclude_idle : 1,
3190 mmap : 1,
3191 comm : 1,
3192 freq : 1,
3193 inherit_stat : 1,
3194 enable_on_exec : 1,
3195 task : 1,
3196 watermark : 1,
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207 precise_ip : 2,
3208 mmap_data : 1,
3209 sample_id_all : 1,
3210
3211 __reserved_1 : 45;
3212
3213 union {
3214 __vki_u32 wakeup_events;
3215 __vki_u32 wakeup_watermark;
3216 };
3217
3218 __vki_u32 bp_type;
3219 union {
3220 __vki_u64 bp_addr;
3221 __vki_u64 config1;
3222 };
3223 union {
3224 __vki_u64 bp_len;
3225 __vki_u64 config2;
3226 };
3227 };
3228
3229 #define VKI_PERF_EVENT_IOC_ENABLE _VKI_IO ('$', 0)
3230 #define VKI_PERF_EVENT_IOC_DISABLE _VKI_IO ('$', 1)
3231 #define VKI_PERF_EVENT_IOC_REFRESH _VKI_IO ('$', 2)
3232 #define VKI_PERF_EVENT_IOC_RESET _VKI_IO ('$', 3)
3233 #define VKI_PERF_EVENT_IOC_PERIOD _VKI_IOW('$', 4, __vki_u64)
3234 #define VKI_PERF_EVENT_IOC_SET_OUTPUT _VKI_IO ('$', 5)
3235 #define VKI_PERF_EVENT_IOC_SET_FILTER _VKI_IOW('$', 6, char *)
3236 #define VKI_PERF_EVENT_IOC_ID _VKI_IOR('$', 7, __vki_u64 *)
3237 #define VKI_PERF_EVENT_IOC_SET_BPF _VKI_IOW('$', 8, __vki_u32)
3238
3239 #define VKI_PERF_FLAG_FD_NO_GROUP (1UL << 0)
3240
3241
3242
3243
3244
3245 struct vki_getcpu_cache {
3246 unsigned long blob[128 / sizeof(long)];
3247 };
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257 #define VKI_EVIOCGNAME(len) _VKI_IOC(_VKI_IOC_READ, 'E', 0x06, len)
3258 #define VKI_EVIOCGPHYS(len) _VKI_IOC(_VKI_IOC_READ, 'E', 0x07, len)
3259 #define VKI_EVIOCGUNIQ(len) _VKI_IOC(_VKI_IOC_READ, 'E', 0x08, len)
3260
3261 #define VKI_EVIOCGKEY(len) _VKI_IOC(_VKI_IOC_READ, 'E', 0x18, len)
3262 #define VKI_EVIOCGLED(len) _VKI_IOC(_VKI_IOC_READ, 'E', 0x19, len)
3263 #define VKI_EVIOCGSND(len) _VKI_IOC(_VKI_IOC_READ, 'E', 0x1a, len)
3264 #define VKI_EVIOCGSW(len) _VKI_IOC(_VKI_IOC_READ, 'E', 0x1b, len)
3265
3266 #define VKI_EVIOCGBIT(ev,len) _VKI_IOC(_VKI_IOC_READ, 'E', 0x20 + ev, len)
3267
3268 #define VKI_EVIOCGRAB _VKI_IOW('E', 0x90, int)
3269
3270
3271
3272
3273
3274
3275 #define VKI_EV_SYN 0x00
3276 #define VKI_EV_KEY 0x01
3277 #define VKI_EV_REL 0x02
3278 #define VKI_EV_ABS 0x03
3279 #define VKI_EV_MSC 0x04
3280 #define VKI_EV_SW 0x05
3281 #define VKI_EV_LED 0x11
3282 #define VKI_EV_SND 0x12
3283 #define VKI_EV_REP 0x14
3284 #define VKI_EV_FF 0x15
3285 #define VKI_EV_PWR 0x16
3286 #define VKI_EV_FF_STATUS 0x17
3287 #define VKI_EV_MAX 0x1f
3288 #define VKI_EV_CNT (VKI_EV_MAX+1)
3289
3290
3291
3292
3293
3294 #ifndef VKI_FIOQSIZE
3295 #define VKI_FIOQSIZE 0x5460
3296 #endif
3297
3298 #ifndef VKI_TIOCSIG
3299 #define VKI_TIOCSIG _VKI_IOW('T', 0x36, int)
3300 #endif
3301
3302
3303
3304
3305
3306 #if defined(VGPV_arm_linux_android) || defined(VGPV_x86_linux_android) \
3307 || defined(VGPV_mips32_linux_android) \
3308 || defined(VGPV_arm64_linux_android)
3309
3310 #define VKI_ASHMEM_NAME_LEN 256
3311
3312 #define VKI_ASHMEM_NAME_DEF "dev/ashmem"
3313
3314 #define VKI_ASHMEM_NOT_PURGED 0
3315 #define VKI_ASHMEM_WAS_PURGED 1
3316
3317 #define VKI_ASHMEM_IS_UNPINNED 0
3318 #define VKI_ASHMEM_IS_PINNED 1
3319
3320 struct vki_ashmem_pin {
3321 vki_uint32_t offset;
3322 vki_uint32_t len;
3323 };
3324
3325 #define __VKI_ASHMEMIOC 0x77
3326
3327 #define VKI_ASHMEM_SET_NAME _VKI_IOW(__VKI_ASHMEMIOC, 1, char[VKI_ASHMEM_NAME_LEN])
3328 #define VKI_ASHMEM_GET_NAME _VKI_IOR(__VKI_ASHMEMIOC, 2, char[VKI_ASHMEM_NAME_LEN])
3329 #define VKI_ASHMEM_SET_SIZE _VKI_IOW(__VKI_ASHMEMIOC, 3, vki_size_t)
3330 #define VKI_ASHMEM_GET_SIZE _VKI_IO(__VKI_ASHMEMIOC, 4)
3331 #define VKI_ASHMEM_SET_PROT_MASK _VKI_IOW(__VKI_ASHMEMIOC, 5, unsigned long)
3332 #define VKI_ASHMEM_GET_PROT_MASK _VKI_IO(__VKI_ASHMEMIOC, 6)
3333 #define VKI_ASHMEM_PIN _VKI_IOW(__VKI_ASHMEMIOC, 7, struct vki_ashmem_pin)
3334 #define VKI_ASHMEM_UNPIN _VKI_IOW(__VKI_ASHMEMIOC, 8, struct vki_ashmem_pin)
3335 #define VKI_ASHMEM_GET_PIN_STATUS _VKI_IO(__VKI_ASHMEMIOC, 9)
3336 #define VKI_ASHMEM_PURGE_ALL_CACHES _VKI_IO(__VKI_ASHMEMIOC, 10)
3337
3338
3339
3340
3341
3342 struct vki_binder_write_read {
3343 signed long write_size;
3344 signed long write_consumed;
3345 unsigned long write_buffer;
3346 signed long read_size;
3347 signed long read_consumed;
3348 unsigned long read_buffer;
3349 };
3350
3351 struct vki_binder_version {
3352 signed long protocol_version;
3353 };
3354
3355 #define VKI_BINDER_WRITE_READ _VKI_IOWR('b', 1, struct vki_binder_write_read)
3356 #define VKI_BINDER_SET_IDLE_TIMEOUT _VKI_IOW('b', 3, vki_int64_t)
3357 #define VKI_BINDER_SET_MAX_THREADS _VKI_IOW('b', 5, vki_size_t)
3358 #define VKI_BINDER_SET_IDLE_PRIORITY _VKI_IOW('b', 6, int)
3359 #define VKI_BINDER_SET_CONTEXT_MGR _VKI_IOW('b', 7, int)
3360 #define VKI_BINDER_THREAD_EXIT _VKI_IOW('b', 8, int)
3361 #define VKI_BINDER_VERSION _VKI_IOWR('b', 9, struct vki_binder_version)
3362
3363 #endif
3364
3365
3366
3367
3368
3369 typedef struct {
3370 __vki_u8 b[6];
3371 } __vki_packed vki_bdaddr_t;
3372
3373
3374
3375
3376
3377 #define VKI_HCIDEVUP _VKI_IOW('H', 201, int)
3378 #define VKI_HCIDEVDOWN _VKI_IOW('H', 202, int)
3379 #define VKI_HCIDEVRESET _VKI_IOW('H', 203, int)
3380 #define VKI_HCIDEVRESTAT _VKI_IOW('H', 204, int)
3381
3382 #define VKI_HCIGETDEVLIST _VKI_IOR('H', 210, int)
3383
3384 struct vki_hci_dev_req {
3385 __vki_u16 dev_id;
3386 __vki_u32 dev_opt;
3387 };
3388
3389 struct vki_hci_dev_list_req {
3390 __vki_u16 dev_num;
3391 struct vki_hci_dev_req dev_req[0];
3392 };
3393
3394 #define VKI_HCIGETDEVINFO _VKI_IOR('H', 211, int)
3395 #define VKI_HCIGETCONNLIST _VKI_IOR('H', 212, int)
3396 #define VKI_HCIGETCONNINFO _VKI_IOR('H', 213, int)
3397 #define VKI_HCIGETAUTHINFO _VKI_IOR('H', 215, int)
3398
3399 #define VKI_HCISETRAW _VKI_IOW('H', 220, int)
3400 #define VKI_HCISETSCAN _VKI_IOW('H', 221, int)
3401 #define VKI_HCISETAUTH _VKI_IOW('H', 222, int)
3402 #define VKI_HCISETENCRYPT _VKI_IOW('H', 223, int)
3403 #define VKI_HCISETPTYPE _VKI_IOW('H', 224, int)
3404 #define VKI_HCISETLINKPOL _VKI_IOW('H', 225, int)
3405 #define VKI_HCISETLINKMODE _VKI_IOW('H', 226, int)
3406 #define VKI_HCISETACLMTU _VKI_IOW('H', 227, int)
3407 #define VKI_HCISETSCOMTU _VKI_IOW('H', 228, int)
3408
3409 #define VKI_HCIBLOCKADDR _VKI_IOW('H', 230, int)
3410 #define VKI_HCIUNBLOCKADDR _VKI_IOW('H', 231, int)
3411
3412 #define VKI_HCIINQUIRY _VKI_IOR('H', 240, int)
3413
3414 struct vki_inquiry_info {
3415 vki_bdaddr_t bdaddr;
3416 __vki_u8 pscan_rep_mode;
3417 __vki_u8 pscan_period_mode;
3418 __vki_u8 pscan_mode;
3419 __vki_u8 dev_class[3];
3420 __vki_le16 clock_offset;
3421 } __vki_packed;
3422
3423 struct vki_hci_inquiry_req {
3424 __vki_u16 dev_id;
3425 __vki_u16 flags;
3426 __vki_u8 lap[3];
3427 __vki_u8 length;
3428 __vki_u8 num_rsp;
3429 };
3430
3431
3432
3433
3434
3435 struct vki_sockaddr_rc {
3436 vki_sa_family_t rc_family;
3437 vki_bdaddr_t rc_bdaddr;
3438 __vki_u8 rc_channel;
3439 };
3440
3441
3442
3443
3444 #define KVMIO 0xAE
3445
3446 #define VKI_KVM_GET_API_VERSION _VKI_IO(KVMIO, 0x00)
3447 #define VKI_KVM_CREATE_VM _VKI_IO(KVMIO, 0x01)
3448 #define VKI_KVM_CHECK_EXTENSION _VKI_IO(KVMIO, 0x03)
3449 #define VKI_KVM_GET_VCPU_MMAP_SIZE _VKI_IO(KVMIO, 0x04)
3450 #define VKI_KVM_S390_ENABLE_SIE _VKI_IO(KVMIO, 0x06)
3451 #define VKI_KVM_CREATE_VCPU _VKI_IO(KVMIO, 0x41)
3452 #define VKI_KVM_SET_NR_MMU_PAGES _VKI_IO(KVMIO, 0x44)
3453 #define VKI_KVM_GET_NR_MMU_PAGES _VKI_IO(KVMIO, 0x45)
3454 #define VKI_KVM_SET_TSS_ADDR _VKI_IO(KVMIO, 0x47)
3455 #define VKI_KVM_CREATE_IRQCHIP _VKI_IO(KVMIO, 0x60)
3456 #define VKI_KVM_CREATE_PIT _VKI_IO(KVMIO, 0x64)
3457 #define VKI_KVM_REINJECT_CONTROL _VKI_IO(KVMIO, 0x71)
3458 #define VKI_KVM_SET_BOOT_CPU_ID _VKI_IO(KVMIO, 0x78)
3459 #define VKI_KVM_SET_TSC_KHZ _VKI_IO(KVMIO, 0xa2)
3460 #define VKI_KVM_GET_TSC_KHZ _VKI_IO(KVMIO, 0xa3)
3461 #define VKI_KVM_RUN _VKI_IO(KVMIO, 0x80)
3462 #define VKI_KVM_S390_INITIAL_RESET _VKI_IO(KVMIO, 0x97)
3463 #define VKI_KVM_NMI _VKI_IO(KVMIO, 0x9a)
3464 #define VKI_KVM_KVMCLOCK_CTRL _VKI_IO(KVMIO, 0xad)
3465
3466 struct vki_kvm_s390_mem_op {
3467
3468 __vki_u64 gaddr;
3469 __vki_u64 flags;
3470 __vki_u32 size;
3471 __vki_u32 op;
3472 __vki_u64 buf;
3473 __vki_u8 ar;
3474 __vki_u8 reserved[31];
3475 };
3476
3477 #define VKI_KVM_S390_MEMOP_LOGICAL_READ 0
3478 #define VKI_KVM_S390_MEMOP_LOGICAL_WRITE 1
3479 #define VKI_KVM_S390_MEMOP_F_CHECK_ONLY (1ULL << 0)
3480 #define VKI_KVM_S390_MEMOP_F_INJECT_EXCEPTION (1ULL << 1)
3481
3482 #define VKI_KVM_S390_MEM_OP _VKI_IOW(KVMIO, 0xb1, struct vki_kvm_s390_mem_op)
3483
3484
3485
3486
3487
3488 struct vki_hwtstamp_config {
3489 int flags;
3490 int tx_type;
3491 int rx_filter;
3492 };
3493
3494
3495
3496
3497
3498 #define VKI_UINPUT_IOCTL_BASE 'U'
3499 #define VKI_UI_DEV_CREATE _VKI_IO(VKI_UINPUT_IOCTL_BASE, 1)
3500 #define VKI_UI_DEV_DESTROY _VKI_IO(VKI_UINPUT_IOCTL_BASE, 2)
3501
3502 #define VKI_UI_SET_EVBIT _VKI_IOW(VKI_UINPUT_IOCTL_BASE, 100, int)
3503 #define VKI_UI_SET_KEYBIT _VKI_IOW(VKI_UINPUT_IOCTL_BASE, 101, int)
3504 #define VKI_UI_SET_RELBIT _VKI_IOW(VKI_UINPUT_IOCTL_BASE, 102, int)
3505 #define VKI_UI_SET_ABSBIT _VKI_IOW(VKI_UINPUT_IOCTL_BASE, 103, int)
3506 #define VKI_UI_SET_MSCBIT _VKI_IOW(VKI_UINPUT_IOCTL_BASE, 104, int)
3507 #define VKI_UI_SET_LEDBIT _VKI_IOW(VKI_UINPUT_IOCTL_BASE, 105, int)
3508 #define VKI_UI_SET_SNDBIT _VKI_IOW(VKI_UINPUT_IOCTL_BASE, 106, int)
3509 #define VKI_UI_SET_FFBIT _VKI_IOW(VKI_UINPUT_IOCTL_BASE, 107, int)
3510 #define VKI_UI_SET_SWBIT _VKI_IOW(VKI_UINPUT_IOCTL_BASE, 109, int)
3511 #define VKI_UI_SET_PROPBIT _VKI_IOW(VKI_UINPUT_IOCTL_BASE, 110, int)
3512
3513
3514
3515
3516
3517 #define VKI_IB_IOCTL_MAGIC 0x1b
3518
3519 #define VKI_IB_USER_MAD_REGISTER_AGENT _VKI_IOWR(VKI_IB_IOCTL_MAGIC, 1, \
3520 struct ib_user_mad_reg_req)
3521
3522 #define VKI_IB_USER_MAD_UNREGISTER_AGENT _VKI_IOW(VKI_IB_IOCTL_MAGIC, 2, __u32)
3523
3524 #define VKI_IB_USER_MAD_ENABLE_PKEY _VKI_IO(VKI_IB_IOCTL_MAGIC, 3)
3525
3526
3527
3528
3529
3530 #define VKI_TUNSETNOCSUM _VKI_IOW('T', 200, int)
3531 #define VKI_TUNSETDEBUG _VKI_IOW('T', 201, int)
3532 #define VKI_TUNSETIFF _VKI_IOW('T', 202, int)
3533 #define VKI_TUNSETPERSIST _VKI_IOW('T', 203, int)
3534 #define VKI_TUNSETOWNER _VKI_IOW('T', 204, int)
3535 #define VKI_TUNSETLINK _VKI_IOW('T', 205, int)
3536 #define VKI_TUNSETGROUP _VKI_IOW('T', 206, int)
3537 #define VKI_TUNGETFEATURES _VKI_IOR('T', 207, unsigned int)
3538 #define VKI_TUNSETOFFLOAD _VKI_IOW('T', 208, unsigned int)
3539 #define VKI_TUNSETTXFILTER _VKI_IOW('T', 209, unsigned int)
3540 #define VKI_TUNGETIFF _VKI_IOR('T', 210, unsigned int)
3541 #define VKI_TUNGETSNDBUF _VKI_IOR('T', 211, int)
3542 #define VKI_TUNSETSNDBUF _VKI_IOW('T', 212, int)
3543
3544
3545 #define VKI_TUNGETVNETHDRSZ _VKI_IOR('T', 215, int)
3546 #define VKI_TUNSETVNETHDRSZ _VKI_IOW('T', 216, int)
3547 #define VKI_TUNSETQUEUE _VKI_IOW('T', 217, int)
3548 #define VKI_TUNSETIFINDEX _VKI_IOW('T', 218, unsigned int)
3549
3550
3551
3552
3553
3554
3555 #define VKI_VHOST_VIRTIO 0xAF
3556 #define VKI_VHOST_SET_OWNER _VKI_IO(VKI_VHOST_VIRTIO, 0x01)
3557 #define VKI_VHOST_RESET_OWNER _VKI_IO(VKI_VHOST_VIRTIO, 0x02)
3558
3559
3560
3561
3562
3563 typedef unsigned long __vki_xen_pfn_t;
3564
3565 struct vki_xen_privcmd_hypercall {
3566 __vki_u64 op;
3567 __vki_u64 arg[5];
3568 };
3569
3570 struct vki_xen_privcmd_mmap_entry {
3571 __vki_u64 va;
3572 __vki_u64 mfn;
3573 __vki_u64 npages;
3574 };
3575
3576 struct vki_xen_privcmd_mmap {
3577 int num;
3578 __vki_u16 dom;
3579 struct vki_xen_privcmd_mmap_entry *entry;
3580 };
3581
3582 struct vki_xen_privcmd_mmapbatch {
3583 int num;
3584 __vki_u16 dom;
3585 __vki_u64 addr;
3586 __vki_xen_pfn_t *arr;
3587 };
3588
3589 struct vki_xen_privcmd_mmapbatch_v2 {
3590 unsigned int num;
3591 __vki_u16 dom;
3592 __vki_u64 addr;
3593 const __vki_xen_pfn_t *arr;
3594 int __user *err;
3595 };
3596
3597 #define VKI_XEN_IOCTL_PRIVCMD_HYPERCALL _VKI_IOC(_VKI_IOC_NONE, 'P', 0, sizeof(struct vki_xen_privcmd_hypercall))
3598 #define VKI_XEN_IOCTL_PRIVCMD_MMAP _VKI_IOC(_VKI_IOC_NONE, 'P', 2, sizeof(struct vki_xen_privcmd_mmap))
3599
3600 #define VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH _VKI_IOC(_VKI_IOC_NONE, 'P', 3, sizeof(struct vki_xen_privcmd_mmapbatch))
3601 #define VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH_V2 _VKI_IOC(_VKI_IOC_NONE, 'P', 4, sizeof(struct vki_xen_privcmd_mmapbatch_v2))
3602
3603
3604
3605
3606
3607 #define VKI_XEN_IOCTL_EVTCHN_BIND_VIRQ \
3608 _VKI_IOC(_VKI_IOC_NONE, 'E', 0, sizeof(struct vki_xen_ioctl_evtchn_bind_virq))
3609 struct vki_xen_ioctl_evtchn_bind_virq {
3610 vki_uint32_t virq;
3611 };
3612
3613 #define VKI_XEN_IOCTL_EVTCHN_BIND_INTERDOMAIN \
3614 _VKI_IOC(_VKI_IOC_NONE, 'E', 1, sizeof(struct vki_xen_ioctl_evtchn_bind_interdomain))
3615 struct vki_xen_ioctl_evtchn_bind_interdomain {
3616 vki_uint32_t remote_domain;
3617 vki_uint32_t remote_port;
3618 };
3619
3620 #define VKI_XEN_IOCTL_EVTCHN_BIND_UNBOUND_PORT \
3621 _VKI_IOC(_VKI_IOC_NONE, 'E', 2, sizeof(struct vki_xen_ioctl_evtchn_bind_unbound_port))
3622 struct vki_xen_ioctl_evtchn_bind_unbound_port {
3623 vki_uint32_t remote_domain;
3624 };
3625
3626 #define VKI_XEN_IOCTL_EVTCHN_UNBIND \
3627 _VKI_IOC(_VKI_IOC_NONE, 'E', 3, sizeof(struct vki_xen_ioctl_evtchn_unbind))
3628 struct vki_xen_ioctl_evtchn_unbind {
3629 vki_uint32_t port;
3630 };
3631
3632 #define VKI_XEN_IOCTL_EVTCHN_NOTIFY \
3633 _VKI_IOC(_VKI_IOC_NONE, 'E', 4, sizeof(struct vki_xen_ioctl_evtchn_notify))
3634 struct vki_xen_ioctl_evtchn_notify {
3635 vki_uint32_t port;
3636 };
3637
3638 #define VKI_XEN_IOCTL_EVTCHN_RESET \
3639 _VKI_IOC(_VKI_IOC_NONE, 'E', 5, 0)
3640
3641
3642
3643
3644
3645
3646 struct vki_file_handle {
3647 __vki_u32 handle_bytes;
3648 int handle_type;
3649
3650 unsigned char f_handle[0];
3651 };
3652
3653
3654
3655
3656
3657 struct vki_sock_filter {
3658 __vki_u16 code;
3659 __vki_u8 jt;
3660 __vki_u8 jf;
3661 __vki_u32 k;
3662 };
3663
3664 struct vki_sock_fprog {
3665 __vki_u16 len;
3666 struct vki_sock_filter *filter;
3667 };
3668
3669
3670
3671
3672
3673 struct vki_ethtool_cmd {
3674 __vki_u32 cmd;
3675 __vki_u32 supported;
3676 __vki_u32 advertising;
3677 __vki_u16 speed;
3678 __vki_u8 duplex;
3679 __vki_u8 port;
3680 __vki_u8 phy_address;
3681 __vki_u8 transceiver;
3682 __vki_u8 autoneg;
3683 __vki_u8 mdio_support;
3684 __vki_u32 maxtxpkt;
3685 __vki_u32 maxrxpkt;
3686 __vki_u16 speed_hi;
3687 __vki_u8 eth_tp_mdix;
3688 __vki_u8 eth_tp_mdix_ctrl;
3689 __vki_u32 lp_advertising;
3690 __vki_u32 reserved[2];
3691 };
3692
3693 #define VKI_ETHTOOL_FWVERS_LEN 32
3694 #define VKI_ETHTOOL_BUSINFO_LEN 32
3695
3696 struct vki_ethtool_drvinfo {
3697 __vki_u32 cmd;
3698 char driver[32];
3699 char version[32];
3700 char fw_version[VKI_ETHTOOL_FWVERS_LEN];
3701 char bus_info[VKI_ETHTOOL_BUSINFO_LEN];
3702 char reserved1[32];
3703 char reserved2[12];
3704 __vki_u32 n_priv_flags;
3705 __vki_u32 n_stats;
3706 __vki_u32 testinfo_len;
3707 __vki_u32 eedump_len;
3708 __vki_u32 regdump_len;
3709 };
3710
3711 #define VKI_SOPASS_MAX 6
3712
3713 struct vki_ethtool_wolinfo {
3714 __vki_u32 cmd;
3715 __vki_u32 supported;
3716 __vki_u32 wolopts;
3717 __vki_u8 sopass[VKI_SOPASS_MAX];
3718 };
3719
3720 struct vki_ethtool_value {
3721 __vki_u32 cmd;
3722 __vki_u32 data;
3723 };
3724
3725 struct vki_ethtool_regs {
3726 __vki_u32 cmd;
3727 __vki_u32 version;
3728 __vki_u32 len;
3729 __vki_u8 data[0];
3730 };
3731
3732 struct vki_ethtool_ringparam {
3733 __vki_u32 cmd;
3734 __vki_u32 rx_max_pending;
3735 __vki_u32 rx_mini_max_pending;
3736 __vki_u32 rx_jumbo_max_pending;
3737 __vki_u32 tx_max_pending;
3738 __vki_u32 rx_pending;
3739 __vki_u32 rx_mini_pending;
3740 __vki_u32 rx_jumbo_pending;
3741 __vki_u32 tx_pending;
3742 };
3743
3744 struct vki_ethtool_channels {
3745 __vki_u32 cmd;
3746 __vki_u32 max_rx;
3747 __vki_u32 max_tx;
3748 __vki_u32 max_other;
3749 __vki_u32 max_combined;
3750 __vki_u32 rx_count;
3751 __vki_u32 tx_count;
3752 __vki_u32 other_count;
3753 __vki_u32 combined_count;
3754 };
3755
3756 struct vki_ethtool_sset_info {
3757 __vki_u32 cmd;
3758 __vki_u32 reserved;
3759 __vki_u64 sset_mask;
3760 __vki_u32 data[0];
3761 };
3762
3763 struct vki_ethtool_test {
3764 __vki_u32 cmd;
3765 __vki_u32 flags;
3766 __vki_u32 reserved;
3767 __vki_u32 len;
3768 __vki_u64 data[0];
3769 };
3770
3771 struct vki_ethtool_perm_addr {
3772 __vki_u32 cmd;
3773 __vki_u32 size;
3774 __vki_u8 data[0];
3775 };
3776
3777 struct vki_ethtool_get_features_block {
3778 __vki_u32 available;
3779 __vki_u32 requested;
3780 __vki_u32 active;
3781 __vki_u32 never_changed;
3782 };
3783
3784 struct vki_ethtool_gfeatures {
3785 __vki_u32 cmd;
3786 __vki_u32 size;
3787 struct vki_ethtool_get_features_block features[0];
3788 };
3789
3790 struct vki_ethtool_set_features_block {
3791 __vki_u32 valid;
3792 __vki_u32 requested;
3793 };
3794
3795 struct vki_ethtool_sfeatures {
3796 __vki_u32 cmd;
3797 __vki_u32 size;
3798 struct vki_ethtool_set_features_block features[0];
3799 };
3800
3801 struct vki_ethtool_ts_info {
3802 __vki_u32 cmd;
3803 __vki_u32 so_timestamping;
3804 __vki_s32 phc_index;
3805 __vki_u32 tx_types;
3806 __vki_u32 tx_reserved[3];
3807 __vki_u32 rx_filters;
3808 __vki_u32 rx_reserved[3];
3809 };
3810
3811 #define VKI_ETHTOOL_GSET 0x00000001
3812 #define VKI_ETHTOOL_SSET 0x00000002
3813 #define VKI_ETHTOOL_GDRVINFO 0x00000003
3814 #define VKI_ETHTOOL_GREGS 0x00000004
3815 #define VKI_ETHTOOL_GWOL 0x00000005
3816 #define VKI_ETHTOOL_SWOL 0x00000006
3817 #define VKI_ETHTOOL_GMSGLVL 0x00000007
3818 #define VKI_ETHTOOL_SMSGLVL 0x00000008
3819 #define VKI_ETHTOOL_NWAY_RST 0x00000009
3820 #define VKI_ETHTOOL_GLINK 0x0000000a
3821 #define VKI_ETHTOOL_GRINGPARAM 0x00000010
3822 #define VKI_ETHTOOL_SRINGPARAM 0x00000011
3823 #define VKI_ETHTOOL_GRXCSUM 0x00000014
3824 #define VKI_ETHTOOL_SRXCSUM 0x00000015
3825 #define VKI_ETHTOOL_GTXCSUM 0x00000016
3826 #define VKI_ETHTOOL_STXCSUM 0x00000017
3827 #define VKI_ETHTOOL_GSG 0x00000018
3828
3829 #define VKI_ETHTOOL_SSG 0x00000019
3830
3831 #define VKI_ETHTOOL_TEST 0x0000001a
3832 #define VKI_ETHTOOL_PHYS_ID 0x0000001c
3833 #define VKI_ETHTOOL_GTSO 0x0000001e
3834 #define VKI_ETHTOOL_STSO 0x0000001f
3835 #define VKI_ETHTOOL_GPERMADDR 0x00000020
3836 #define VKI_ETHTOOL_GUFO 0x00000021
3837 #define VKI_ETHTOOL_SUFO 0x00000022
3838 #define VKI_ETHTOOL_GGSO 0x00000023
3839 #define VKI_ETHTOOL_SGSO 0x00000024
3840 #define VKI_ETHTOOL_GFLAGS 0x00000025
3841 #define VKI_ETHTOOL_SFLAGS 0x00000026
3842 #define VKI_ETHTOOL_GGRO 0x0000002b
3843 #define VKI_ETHTOOL_SGRO 0x0000002c
3844 #define VKI_ETHTOOL_RESET 0x00000034
3845 #define VKI_ETHTOOL_GSSET_INFO 0x00000037
3846 #define VKI_ETHTOOL_GFEATURES 0x0000003a
3847 #define VKI_ETHTOOL_SFEATURES 0x0000003b
3848 #define VKI_ETHTOOL_GCHANNELS 0x0000003c
3849 #define VKI_ETHTOOL_SCHANNELS 0x0000003d
3850 #define VKI_ETHTOOL_GET_TS_INFO 0x00000041
3851
3852
3853
3854
3855
3856 typedef int vki_ion_user_handle_t;
3857
3858 struct vki_ion_allocation_data {
3859 vki_size_t len;
3860 vki_size_t align;
3861 unsigned int heap_id_mask;
3862 unsigned int flags;
3863 vki_ion_user_handle_t handle;
3864 };
3865
3866 struct vki_ion_fd_data {
3867 vki_ion_user_handle_t handle;
3868 int fd;
3869 };
3870
3871 struct vki_ion_handle_data {
3872 vki_ion_user_handle_t handle;
3873 };
3874
3875 struct vki_ion_custom_data {
3876 unsigned int cmd;
3877 unsigned long arg;
3878 };
3879
3880 #define VKI_ION_IOC_MAGIC 'I'
3881
3882 #define VKI_ION_IOC_ALLOC \
3883 _VKI_IOWR(VKI_ION_IOC_MAGIC, 0, struct vki_ion_allocation_data)
3884
3885 #define VKI_ION_IOC_FREE \
3886 _VKI_IOWR(VKI_ION_IOC_MAGIC, 1, struct vki_ion_handle_data)
3887
3888 #define VKI_ION_IOC_MAP \
3889 _VKI_IOWR(VKI_ION_IOC_MAGIC, 2, struct vki_ion_fd_data)
3890
3891 #define VKI_ION_IOC_SHARE \
3892 _VKI_IOWR(VKI_ION_IOC_MAGIC, 4, struct vki_ion_fd_data)
3893
3894 #define VKI_ION_IOC_IMPORT \
3895 _VKI_IOWR(VKI_ION_IOC_MAGIC, 5, struct vki_ion_fd_data)
3896
3897 #define VKI_ION_IOC_SYNC \
3898 _VKI_IOWR(VKI_ION_IOC_MAGIC, 7, struct vki_ion_fd_data)
3899
3900 #define VKI_ION_IOC_CUSTOM \
3901 _VKI_IOWR(VKI_ION_IOC_MAGIC, 6, struct vki_ion_custom_data)
3902
3903
3904
3905
3906
3907 struct vki_sync_merge_data {
3908 char name[32];
3909 __vki_s32 fd2;
3910 __vki_s32 fence;
3911 __vki_u32 flags;
3912 __vki_u32 pad;
3913 };
3914
3915 struct vki_sync_fence_info {
3916 char obj_name[32];
3917 char driver_name[32];
3918 __vki_s32 status;
3919 __vki_u32 flags;
3920 __vki_u64 timestamp_ns;
3921 };
3922
3923 struct vki_sync_file_info {
3924 char name[32];
3925 __vki_s32 status;
3926 __vki_u32 flags;
3927 __vki_u32 num_fences;
3928 __vki_u32 pad;
3929 __vki_u64 sync_fence_info;
3930 };
3931
3932 struct vki_sync_set_deadline {
3933 __vki_u64 deadline_ns;
3934 __vki_u64 pad;
3935 };
3936
3937 #define VKI_SYNC_IOC_MAGIC '>'
3938
3939 #define VKI_SYNC_IOC_WAIT \
3940 _VKI_IOW(VKI_SYNC_IOC_MAGIC, 0, __vki_s32)
3941
3942 #define VKI_SYNC_IOC_MERGE \
3943 _VKI_IOWR(VKI_SYNC_IOC_MAGIC, 3, struct vki_sync_merge_data)
3944
3945 #define VKI_SYNC_IOC_FILE_INFO \
3946 _VKI_IOWR(VKI_SYNC_IOC_MAGIC, 4, struct vki_sync_file_info)
3947
3948 #define VKI_SYNC_IOC_SET_DEADLINE \
3949 _VKI_IOW(VKI_SYNC_IOC_MAGIC, 5, struct vki_sync_set_deadline)
3950
3951
3952
3953
3954
3955 struct vki_lu_fid {
3956 __vki_u64 f_seq;
3957 __vki_u32 f_oid;
3958 __vki_u32 f_ver;
3959 };
3960
3961
3962
3963
3964
3965 struct vki_getinfo_fid2path {
3966 struct vki_lu_fid gf_fid;
3967 __vki_u64 gf_recno;
3968 __vki_u32 gf_linkno;
3969 __vki_u32 gf_pathlen;
3970 char gf_path[0];
3971 } __attribute__((packed));
3972
3973
3974
3975
3976
3977 #define VKI_OBD_IOC_DATA_TYPE long
3978
3979
3980
3981
3982
3983 #define VKI_OBD_IOC_FID2PATH \
3984 _VKI_IOWR ('f', 150, VKI_OBD_IOC_DATA_TYPE)
3985 #define VKI_LL_IOC_PATH2FID \
3986 _VKI_IOR ('f', 173, long)
3987
3988
3989
3990
3991
3992 struct vki_getparent {
3993 struct vki_lu_fid gp_fid;
3994 __vki_u32 gp_linkno;
3995 __vki_u32 gp_name_size;
3996 char gp_name[0];
3997 } __attribute__((packed));
3998
3999
4000
4001
4002 #define VKI_LL_IOC_GROUP_LOCK \
4003 _VKI_IOW('f', 158, long)
4004 #define VKI_LL_IOC_GROUP_UNLOCK \
4005 _VKI_IOW('f', 159, long)
4006 #define VKI_LL_IOC_GETPARENT \
4007 _VKI_IOWR('f', 249, struct vki_getparent)
4008
4009
4010 struct vki_v4l2_rect {
4011 __vki_s32 left;
4012 __vki_s32 top;
4013 __vki_u32 width;
4014 __vki_u32 height;
4015 };
4016
4017 struct vki_v4l2_fract {
4018 __vki_u32 numerator;
4019 __vki_u32 denominator;
4020 };
4021
4022 struct vki_v4l2_capability {
4023 __vki_u8 driver[16];
4024 __vki_u8 card[32];
4025 __vki_u8 bus_info[32];
4026 __vki_u32 version;
4027 __vki_u32 capabilities;
4028 __vki_u32 device_caps;
4029 __vki_u32 reserved[3];
4030 };
4031
4032 struct vki_v4l2_pix_format {
4033 __vki_u32 width;
4034 __vki_u32 height;
4035 __vki_u32 pixelformat;
4036 __vki_u32 field;
4037 __vki_u32 bytesperline;
4038 __vki_u32 sizeimage;
4039 __vki_u32 colorspace;
4040 __vki_u32 priv;
4041 __vki_u32 flags;
4042 __vki_u32 ycbcr_enc;
4043 __vki_u32 quantization;
4044 };
4045
4046 struct vki_v4l2_fmtdesc {
4047 __vki_u32 index;
4048 __vki_u32 type;
4049 __vki_u32 flags;
4050 __vki_u8 description[32];
4051 __vki_u32 pixelformat;
4052 __vki_u32 reserved[4];
4053 };
4054
4055 struct vki_v4l2_frmsize_discrete {
4056 __vki_u32 width;
4057 __vki_u32 height;
4058 };
4059
4060 struct vki_v4l2_frmsize_stepwise {
4061 __vki_u32 min_width;
4062 __vki_u32 max_width;
4063 __vki_u32 step_width;
4064 __vki_u32 min_height;
4065 __vki_u32 max_height;
4066 __vki_u32 step_height;
4067 };
4068
4069 struct vki_v4l2_frmsizeenum {
4070 __vki_u32 index;
4071 __vki_u32 pixel_format;
4072 __vki_u32 type;
4073
4074 union {
4075 struct vki_v4l2_frmsize_discrete discrete;
4076 struct vki_v4l2_frmsize_stepwise stepwise;
4077 };
4078
4079 __vki_u32 reserved[2];
4080 };
4081
4082 struct vki_v4l2_frmival_stepwise {
4083 struct vki_v4l2_fract min;
4084 struct vki_v4l2_fract max;
4085 struct vki_v4l2_fract step;
4086 };
4087
4088 struct vki_v4l2_frmivalenum {
4089 __vki_u32 index;
4090 __vki_u32 pixel_format;
4091 __vki_u32 width;
4092 __vki_u32 height;
4093 __vki_u32 type;
4094
4095 union {
4096 struct vki_v4l2_fract discrete;
4097 struct vki_v4l2_frmival_stepwise stepwise;
4098 };
4099
4100 __vki_u32 reserved[2];
4101 };
4102
4103 struct vki_v4l2_timecode {
4104 __vki_u32 type;
4105 __vki_u32 flags;
4106 __vki_u8 frames;
4107 __vki_u8 seconds;
4108 __vki_u8 minutes;
4109 __vki_u8 hours;
4110 __vki_u8 userbits[4];
4111 };
4112
4113 struct vki_v4l2_jpegcompression {
4114 int quality;
4115 int APPn;
4116 int APP_len;
4117 char APP_data[60];
4118 int COM_len;
4119 char COM_data[60];
4120 __vki_u32 jpeg_markers;
4121 };
4122
4123 struct vki_v4l2_requestbuffers {
4124 __vki_u32 count;
4125 __vki_u32 type;
4126 __vki_u32 memory;
4127 __vki_u32 reserved[2];
4128 };
4129
4130 struct vki_v4l2_plane {
4131 __vki_u32 bytesused;
4132 __vki_u32 length;
4133 union {
4134 __vki_u32 mem_offset;
4135 unsigned long userptr;
4136 __vki_s32 fd;
4137 } m;
4138 __vki_u32 data_offset;
4139 __vki_u32 reserved[11];
4140 };
4141
4142 #define VKI_V4L2_MEMORY_MMAP 1
4143 #define VKI_V4L2_MEMORY_DMABUF 4
4144 #define VKI_V4L2_BUF_FLAG_TIMESTAMP_MASK 0x0000e000
4145 #define VKI_V4L2_BUF_FLAG_TIMESTAMP_COPY 0x00004000
4146 struct vki_v4l2_buffer {
4147 __vki_u32 index;
4148 __vki_u32 type;
4149 __vki_u32 bytesused;
4150 __vki_u32 flags;
4151 __vki_u32 field;
4152 struct vki_timeval timestamp;
4153 struct vki_v4l2_timecode timecode;
4154 __vki_u32 sequence;
4155
4156
4157 __vki_u32 memory;
4158 union {
4159 __vki_u32 offset;
4160 unsigned long userptr;
4161 struct vki_v4l2_plane *planes;
4162 __vki_s32 fd;
4163 } m;
4164 __vki_u32 length;
4165 __vki_u32 reserved2;
4166 __vki_u32 reserved;
4167 };
4168
4169 struct vki_v4l2_exportbuffer {
4170 __vki_u32 type;
4171 __vki_u32 index;
4172 __vki_u32 plane;
4173 __vki_u32 flags;
4174 __vki_s32 fd;
4175 __vki_u32 reserved[11];
4176 };
4177
4178 struct vki_v4l2_framebuffer {
4179 __vki_u32 capability;
4180 __vki_u32 flags;
4181 void *base;
4182 struct {
4183 __vki_u32 width;
4184 __vki_u32 height;
4185 __vki_u32 pixelformat;
4186 __vki_u32 field;
4187 __vki_u32 bytesperline;
4188 __vki_u32 sizeimage;
4189 __vki_u32 colorspace;
4190 __vki_u32 priv;
4191 } fmt;
4192 };
4193
4194 struct vki_v4l2_clip {
4195 struct vki_v4l2_rect c;
4196 struct vki_v4l2_clip __user *next;
4197 };
4198
4199 struct vki_v4l2_window {
4200 struct vki_v4l2_rect w;
4201 __vki_u32 field;
4202 __vki_u32 chromakey;
4203 struct vki_v4l2_clip __user *clips;
4204 __vki_u32 clipcount;
4205 void __user *bitmap;
4206 __vki_u8 global_alpha;
4207 };
4208
4209 struct vki_v4l2_captureparm {
4210 __vki_u32 capability;
4211 __vki_u32 capturemode;
4212 struct vki_v4l2_fract timeperframe;
4213 __vki_u32 extendedmode;
4214 __vki_u32 readbuffers;
4215 __vki_u32 reserved[4];
4216 };
4217
4218 struct vki_v4l2_outputparm {
4219 __vki_u32 capability;
4220 __vki_u32 outputmode;
4221 struct vki_v4l2_fract timeperframe;
4222 __vki_u32 extendedmode;
4223 __vki_u32 writebuffers;
4224 __vki_u32 reserved[4];
4225 };
4226
4227 struct vki_v4l2_cropcap {
4228 __vki_u32 type;
4229 struct vki_v4l2_rect bounds;
4230 struct vki_v4l2_rect defrect;
4231 struct vki_v4l2_fract pixelaspect;
4232 };
4233
4234 struct vki_v4l2_crop {
4235 __vki_u32 type;
4236 struct vki_v4l2_rect c;
4237 };
4238
4239 struct vki_v4l2_selection {
4240 __vki_u32 type;
4241 __vki_u32 target;
4242 __vki_u32 flags;
4243 struct vki_v4l2_rect r;
4244 __vki_u32 reserved[9];
4245 };
4246
4247 typedef __vki_u64 vki_v4l2_std_id;
4248
4249 struct vki_v4l2_standard {
4250 __vki_u32 index;
4251 vki_v4l2_std_id id;
4252 __vki_u8 name[24];
4253 struct vki_v4l2_fract frameperiod;
4254 __vki_u32 framelines;
4255 __vki_u32 reserved[4];
4256 };
4257
4258 struct vki_v4l2_bt_timings {
4259 __vki_u32 width;
4260 __vki_u32 height;
4261 __vki_u32 interlaced;
4262 __vki_u32 polarities;
4263 __vki_u64 pixelclock;
4264 __vki_u32 hfrontporch;
4265 __vki_u32 hsync;
4266 __vki_u32 hbackporch;
4267 __vki_u32 vfrontporch;
4268 __vki_u32 vsync;
4269 __vki_u32 vbackporch;
4270 __vki_u32 il_vfrontporch;
4271 __vki_u32 il_vsync;
4272 __vki_u32 il_vbackporch;
4273 __vki_u32 standards;
4274 __vki_u32 flags;
4275 __vki_u32 reserved[14];
4276 } __attribute__ ((packed));
4277
4278 struct vki_v4l2_dv_timings {
4279 __vki_u32 type;
4280 union {
4281 struct vki_v4l2_bt_timings bt;
4282 __vki_u32 reserved[32];
4283 };
4284 } __attribute__ ((packed));
4285
4286 struct vki_v4l2_enum_dv_timings {
4287 __vki_u32 index;
4288 __vki_u32 pad;
4289 __vki_u32 reserved[2];
4290 struct vki_v4l2_dv_timings timings;
4291 };
4292
4293 struct vki_v4l2_bt_timings_cap {
4294 __vki_u32 min_width;
4295 __vki_u32 max_width;
4296 __vki_u32 min_height;
4297 __vki_u32 max_height;
4298 __vki_u64 min_pixelclock;
4299 __vki_u64 max_pixelclock;
4300 __vki_u32 standards;
4301 __vki_u32 capabilities;
4302 __vki_u32 reserved[16];
4303 } __attribute__ ((packed));
4304
4305 struct vki_v4l2_dv_timings_cap {
4306 __vki_u32 type;
4307 __vki_u32 pad;
4308 __vki_u32 reserved[2];
4309 union {
4310 struct vki_v4l2_bt_timings_cap bt;
4311 __vki_u32 raw_data[32];
4312 };
4313 };
4314
4315 struct vki_v4l2_input {
4316 __vki_u32 index;
4317 __vki_u8 name[32];
4318 __vki_u32 type;
4319 __vki_u32 audioset;
4320 __vki_u32 tuner;
4321 vki_v4l2_std_id std;
4322 __vki_u32 status;
4323 __vki_u32 capabilities;
4324 __vki_u32 reserved[3];
4325 };
4326
4327 struct vki_v4l2_output {
4328 __vki_u32 index;
4329 __vki_u8 name[32];
4330 __vki_u32 type;
4331 __vki_u32 audioset;
4332 __vki_u32 modulator;
4333 vki_v4l2_std_id std;
4334 __vki_u32 capabilities;
4335 __vki_u32 reserved[3];
4336 };
4337
4338 struct vki_v4l2_control {
4339 __vki_u32 id;
4340 __vki_s32 value;
4341 };
4342
4343 struct vki_v4l2_ext_control {
4344 __vki_u32 id;
4345 __vki_u32 size;
4346 __vki_u32 reserved2[1];
4347 union {
4348 __vki_s32 value;
4349 __vki_s64 value64;
4350 char *string;
4351 __vki_u8 *p_u8;
4352 __vki_u16 *p_u16;
4353 __vki_u32 *p_u32;
4354 void *ptr;
4355 };
4356 } __attribute__ ((packed));
4357
4358 struct vki_v4l2_ext_controls {
4359 __vki_u32 ctrl_class;
4360 __vki_u32 count;
4361 __vki_u32 error_idx;
4362 __vki_u32 reserved[2];
4363 struct vki_v4l2_ext_control *controls;
4364 };
4365
4366 struct vki_v4l2_queryctrl {
4367 __vki_u32 id;
4368 __vki_u32 type;
4369 __vki_u8 name[32];
4370 __vki_s32 minimum;
4371 __vki_s32 maximum;
4372 __vki_s32 step;
4373 __vki_s32 default_value;
4374 __vki_u32 flags;
4375 __vki_u32 reserved[2];
4376 };
4377
4378 #define VKI_V4L2_CTRL_MAX_DIMS (4)
4379 struct vki_v4l2_query_ext_ctrl {
4380 __vki_u32 id;
4381 __vki_u32 type;
4382 char name[32];
4383 __vki_s64 minimum;
4384 __vki_s64 maximum;
4385 __vki_u64 step;
4386 __vki_s64 default_value;
4387 __vki_u32 flags;
4388 __vki_u32 elem_size;
4389 __vki_u32 elems;
4390 __vki_u32 nr_of_dims;
4391 __vki_u32 dims[VKI_V4L2_CTRL_MAX_DIMS];
4392 __vki_u32 reserved[32];
4393 };
4394
4395 struct vki_v4l2_querymenu {
4396 __vki_u32 id;
4397 __vki_u32 index;
4398 union {
4399 __vki_u8 name[32];
4400 __vki_s64 value;
4401 };
4402 __vki_u32 reserved;
4403 } __attribute__ ((packed));
4404
4405 struct vki_v4l2_tuner {
4406 __vki_u32 index;
4407 __vki_u8 name[32];
4408 __vki_u32 type;
4409 __vki_u32 capability;
4410 __vki_u32 rangelow;
4411 __vki_u32 rangehigh;
4412 __vki_u32 rxsubchans;
4413 __vki_u32 audmode;
4414 __vki_s32 signal;
4415 __vki_s32 afc;
4416 __vki_u32 reserved[4];
4417 };
4418
4419 struct vki_v4l2_modulator {
4420 __vki_u32 index;
4421 __vki_u8 name[32];
4422 __vki_u32 capability;
4423 __vki_u32 rangelow;
4424 __vki_u32 rangehigh;
4425 __vki_u32 txsubchans;
4426 __vki_u32 reserved[4];
4427 };
4428
4429 struct vki_v4l2_frequency {
4430 __vki_u32 tuner;
4431 __vki_u32 type;
4432 __vki_u32 frequency;
4433 __vki_u32 reserved[8];
4434 };
4435
4436 struct vki_v4l2_frequency_band {
4437 __vki_u32 tuner;
4438 __vki_u32 type;
4439 __vki_u32 index;
4440 __vki_u32 capability;
4441 __vki_u32 rangelow;
4442 __vki_u32 rangehigh;
4443 __vki_u32 modulation;
4444 __vki_u32 reserved[9];
4445 };
4446
4447 struct vki_v4l2_hw_freq_seek {
4448 __vki_u32 tuner;
4449 __vki_u32 type;
4450 __vki_u32 seek_upward;
4451 __vki_u32 wrap_around;
4452 __vki_u32 spacing;
4453 __vki_u32 rangelow;
4454 __vki_u32 rangehigh;
4455 __vki_u32 reserved[5];
4456 };
4457
4458 struct vki_v4l2_audio {
4459 __vki_u32 index;
4460 __vki_u8 name[32];
4461 __vki_u32 capability;
4462 __vki_u32 mode;
4463 __vki_u32 reserved[2];
4464 };
4465
4466 struct vki_v4l2_audioout {
4467 __vki_u32 index;
4468 __vki_u8 name[32];
4469 __vki_u32 capability;
4470 __vki_u32 mode;
4471 __vki_u32 reserved[2];
4472 };
4473
4474 struct vki_v4l2_enc_idx_entry {
4475 __vki_u64 offset;
4476 __vki_u64 pts;
4477 __vki_u32 length;
4478 __vki_u32 flags;
4479 __vki_u32 reserved[2];
4480 };
4481
4482 #define VKI_V4L2_ENC_IDX_ENTRIES (64)
4483 struct vki_v4l2_enc_idx {
4484 __vki_u32 entries;
4485 __vki_u32 entries_cap;
4486 __vki_u32 reserved[4];
4487 struct vki_v4l2_enc_idx_entry entry[VKI_V4L2_ENC_IDX_ENTRIES];
4488 };
4489
4490 struct vki_v4l2_encoder_cmd {
4491 __vki_u32 cmd;
4492 __vki_u32 flags;
4493 union {
4494 struct {
4495 __vki_u32 data[8];
4496 } raw;
4497 };
4498 };
4499
4500 struct vki_v4l2_decoder_cmd {
4501 __vki_u32 cmd;
4502 __vki_u32 flags;
4503 union {
4504 struct {
4505 __vki_u64 pts;
4506 } stop;
4507
4508 struct {
4509 __vki_s32 speed;
4510 __vki_u32 format;
4511 } start;
4512
4513 struct {
4514 __vki_u32 data[16];
4515 } raw;
4516 };
4517 };
4518
4519 struct vki_v4l2_vbi_format {
4520 __vki_u32 sampling_rate;
4521 __vki_u32 offset;
4522 __vki_u32 samples_per_line;
4523 __vki_u32 sample_format;
4524 __vki_s32 start[2];
4525 __vki_u32 count[2];
4526 __vki_u32 flags;
4527 __vki_u32 reserved[2];
4528 };
4529
4530 struct vki_v4l2_sliced_vbi_format {
4531 __vki_u16 service_set;
4532 __vki_u16 service_lines[2][24];
4533 __vki_u32 io_size;
4534 __vki_u32 reserved[2];
4535 };
4536
4537 struct vki_v4l2_sliced_vbi_cap {
4538 __vki_u16 service_set;
4539 __vki_u16 service_lines[2][24];
4540 __vki_u32 type;
4541 __vki_u32 reserved[3];
4542 };
4543
4544 struct vki_v4l2_sliced_vbi_data {
4545 __vki_u32 id;
4546 __vki_u32 field;
4547 __vki_u32 line;
4548 __vki_u32 reserved;
4549 __vki_u8 data[48];
4550 };
4551
4552 struct vki_v4l2_plane_pix_format {
4553 __vki_u32 sizeimage;
4554 __vki_u32 bytesperline;
4555 __vki_u16 reserved[6];
4556 } __attribute__ ((packed));
4557
4558 #define VKI_VIDEO_MAX_PLANES 8
4559
4560 struct vki_v4l2_pix_format_mplane {
4561 __vki_u32 width;
4562 __vki_u32 height;
4563 __vki_u32 pixelformat;
4564 __vki_u32 field;
4565 __vki_u32 colorspace;
4566
4567 struct vki_v4l2_plane_pix_format plane_fmt[VKI_VIDEO_MAX_PLANES];
4568 __vki_u8 num_planes;
4569 __vki_u8 flags;
4570 __vki_u8 ycbcr_enc;
4571 __vki_u8 quantization;
4572 __vki_u8 reserved[8];
4573 } __attribute__ ((packed));
4574
4575 struct vki_v4l2_sdr_format {
4576 __vki_u32 pixelformat;
4577 __vki_u32 buffersize;
4578 __vki_u8 reserved[24];
4579 } __attribute__ ((packed));
4580
4581 enum vki_v4l2_buf_type {
4582 VKI_V4L2_BUF_TYPE_VIDEO_CAPTURE = 1,
4583 VKI_V4L2_BUF_TYPE_VIDEO_OUTPUT = 2,
4584 VKI_V4L2_BUF_TYPE_VIDEO_OVERLAY = 3,
4585 VKI_V4L2_BUF_TYPE_VBI_CAPTURE = 4,
4586 VKI_V4L2_BUF_TYPE_VBI_OUTPUT = 5,
4587 VKI_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6,
4588 VKI_V4L2_BUF_TYPE_SLICED_VBI_OUTPUT = 7,
4589 VKI_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8,
4590 VKI_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9,
4591 VKI_V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE = 10,
4592 VKI_V4L2_BUF_TYPE_SDR_CAPTURE = 11,
4593 };
4594
4595 struct vki_v4l2_format {
4596 __vki_u32 type;
4597 union {
4598 struct vki_v4l2_pix_format pix;
4599 struct vki_v4l2_pix_format_mplane pix_mp;
4600 struct vki_v4l2_window win;
4601 struct vki_v4l2_vbi_format vbi;
4602 struct vki_v4l2_sliced_vbi_format sliced;
4603 struct vki_v4l2_sdr_format sdr;
4604 __vki_u8 raw_data[200];
4605 } fmt;
4606 };
4607
4608 struct vki_v4l2_streamparm {
4609 __vki_u32 type;
4610 union {
4611 struct vki_v4l2_captureparm capture;
4612 struct vki_v4l2_outputparm output;
4613 __vki_u8 raw_data[200];
4614 } parm;
4615 };
4616
4617 struct vki_v4l2_event_vsync {
4618 __vki_u8 field;
4619 } __attribute__ ((packed));
4620
4621 struct vki_v4l2_event_ctrl {
4622 __vki_u32 changes;
4623 __vki_u32 type;
4624 union {
4625 __vki_s32 value;
4626 __vki_s64 value64;
4627 };
4628 __vki_u32 flags;
4629 __vki_s32 minimum;
4630 __vki_s32 maximum;
4631 __vki_s32 step;
4632 __vki_s32 default_value;
4633 };
4634
4635 struct vki_v4l2_event_frame_sync {
4636 __vki_u32 frame_sequence;
4637 };
4638
4639 struct vki_v4l2_event_src_change {
4640 __vki_u32 changes;
4641 };
4642
4643 struct vki_v4l2_event_motion_det {
4644 __vki_u32 flags;
4645 __vki_u32 frame_sequence;
4646 __vki_u32 region_mask;
4647 };
4648
4649 struct vki_v4l2_event {
4650 __vki_u32 type;
4651 union {
4652 struct vki_v4l2_event_vsync vsync;
4653 struct vki_v4l2_event_ctrl ctrl;
4654 struct vki_v4l2_event_frame_sync frame_sync;
4655 struct vki_v4l2_event_src_change src_change;
4656 struct vki_v4l2_event_motion_det motion_det;
4657 __vki_u8 data[64];
4658 } u;
4659 __vki_u32 pending;
4660 __vki_u32 sequence;
4661 struct vki_timespec timestamp;
4662 __vki_u32 id;
4663 __vki_u32 reserved[8];
4664 };
4665
4666 struct vki_v4l2_event_subscription {
4667 __vki_u32 type;
4668 __vki_u32 id;
4669 __vki_u32 flags;
4670 __vki_u32 reserved[5];
4671 };
4672
4673 struct vki_v4l2_dbg_match {
4674 __vki_u32 type;
4675 union {
4676 __vki_u32 addr;
4677 char name[32];
4678 };
4679 } __attribute__ ((packed));
4680
4681 struct vki_v4l2_dbg_register {
4682 struct vki_v4l2_dbg_match match;
4683 __vki_u32 size;
4684 __vki_u64 reg;
4685 __vki_u64 val;
4686 } __attribute__ ((packed));
4687
4688 struct vki_v4l2_dbg_chip_info {
4689 struct vki_v4l2_dbg_match match;
4690 char name[32];
4691 __vki_u32 flags;
4692 __vki_u32 reserved[32];
4693 } __attribute__ ((packed));
4694
4695 struct vki_v4l2_create_buffers {
4696 __vki_u32 index;
4697 __vki_u32 count;
4698 __vki_u32 memory;
4699 struct vki_v4l2_format format;
4700 __vki_u32 reserved[8];
4701 };
4702
4703 struct vki_v4l2_edid {
4704 __vki_u32 pad;
4705 __vki_u32 start_block;
4706 __vki_u32 blocks;
4707 __vki_u32 reserved[5];
4708 __vki_u8 *edid;
4709 };
4710
4711 #define VKI_V4L2_QUERYCAP _VKI_IOR('V', 0, struct vki_v4l2_capability)
4712 #define VKI_V4L2_ENUM_FMT _VKI_IOWR('V', 2, struct vki_v4l2_fmtdesc)
4713 #define VKI_V4L2_G_FMT _VKI_IOWR('V', 4, struct vki_v4l2_format)
4714 #define VKI_V4L2_S_FMT _VKI_IOWR('V', 5, struct vki_v4l2_format)
4715 #define VKI_V4L2_REQBUFS _VKI_IOWR('V', 8, struct vki_v4l2_requestbuffers)
4716 #define VKI_V4L2_QUERYBUF _VKI_IOWR('V', 9, struct vki_v4l2_buffer)
4717 #define VKI_V4L2_G_FBUF _VKI_IOR('V', 10, struct vki_v4l2_framebuffer)
4718 #define VKI_V4L2_S_FBUF _VKI_IOW('V', 11, struct vki_v4l2_framebuffer)
4719 #define VKI_V4L2_OVERLAY _VKI_IOW('V', 14, int)
4720 #define VKI_V4L2_QBUF _VKI_IOWR('V', 15, struct vki_v4l2_buffer)
4721 #define VKI_V4L2_EXPBUF _VKI_IOWR('V', 16, struct vki_v4l2_exportbuffer)
4722 #define VKI_V4L2_DQBUF _VKI_IOWR('V', 17, struct vki_v4l2_buffer)
4723 #define VKI_V4L2_STREAMON _VKI_IOW('V', 18, int)
4724 #define VKI_V4L2_STREAMOFF _VKI_IOW('V', 19, int)
4725 #define VKI_V4L2_G_PARM _VKI_IOWR('V', 21, struct vki_v4l2_streamparm)
4726 #define VKI_V4L2_S_PARM _VKI_IOWR('V', 22, struct vki_v4l2_streamparm)
4727 #define VKI_V4L2_G_STD _VKI_IOR('V', 23, vki_v4l2_std_id)
4728 #define VKI_V4L2_S_STD _VKI_IOW('V', 24, vki_v4l2_std_id)
4729 #define VKI_V4L2_ENUMSTD _VKI_IOWR('V', 25, struct vki_v4l2_standard)
4730 #define VKI_V4L2_ENUMINPUT _VKI_IOWR('V', 26, struct vki_v4l2_input)
4731 #define VKI_V4L2_G_CTRL _VKI_IOWR('V', 27, struct vki_v4l2_control)
4732 #define VKI_V4L2_S_CTRL _VKI_IOWR('V', 28, struct vki_v4l2_control)
4733 #define VKI_V4L2_G_TUNER _VKI_IOWR('V', 29, struct vki_v4l2_tuner)
4734 #define VKI_V4L2_S_TUNER _VKI_IOW('V', 30, struct vki_v4l2_tuner)
4735 #define VKI_V4L2_G_AUDIO _VKI_IOR('V', 33, struct vki_v4l2_audio)
4736 #define VKI_V4L2_S_AUDIO _VKI_IOW('V', 34, struct vki_v4l2_audio)
4737 #define VKI_V4L2_QUERYCTRL _VKI_IOWR('V', 36, struct vki_v4l2_queryctrl)
4738 #define VKI_V4L2_QUERYMENU _VKI_IOWR('V', 37, struct vki_v4l2_querymenu)
4739 #define VKI_V4L2_G_INPUT _VKI_IOR('V', 38, int)
4740 #define VKI_V4L2_S_INPUT _VKI_IOWR('V', 39, int)
4741 #define VKI_V4L2_G_EDID _VKI_IOWR('V', 40, struct vki_v4l2_edid)
4742 #define VKI_V4L2_S_EDID _VKI_IOWR('V', 41, struct vki_v4l2_edid)
4743 #define VKI_V4L2_G_OUTPUT _VKI_IOR('V', 46, int)
4744 #define VKI_V4L2_S_OUTPUT _VKI_IOWR('V', 47, int)
4745 #define VKI_V4L2_ENUMOUTPUT _VKI_IOWR('V', 48, struct vki_v4l2_output)
4746 #define VKI_V4L2_G_AUDOUT _VKI_IOR('V', 49, struct vki_v4l2_audioout)
4747 #define VKI_V4L2_S_AUDOUT _VKI_IOW('V', 50, struct vki_v4l2_audioout)
4748 #define VKI_V4L2_G_MODULATOR _VKI_IOWR('V', 54, struct vki_v4l2_modulator)
4749 #define VKI_V4L2_S_MODULATOR _VKI_IOW('V', 55, struct vki_v4l2_modulator)
4750 #define VKI_V4L2_G_FREQUENCY _VKI_IOWR('V', 56, struct vki_v4l2_frequency)
4751 #define VKI_V4L2_S_FREQUENCY _VKI_IOW('V', 57, struct vki_v4l2_frequency)
4752 #define VKI_V4L2_CROPCAP _VKI_IOWR('V', 58, struct vki_v4l2_cropcap)
4753 #define VKI_V4L2_G_CROP _VKI_IOWR('V', 59, struct vki_v4l2_crop)
4754 #define VKI_V4L2_S_CROP _VKI_IOW('V', 60, struct vki_v4l2_crop)
4755 #define VKI_V4L2_G_JPEGCOMP _VKI_IOR('V', 61, struct vki_v4l2_jpegcompression)
4756 #define VKI_V4L2_S_JPEGCOMP _VKI_IOW('V', 62, struct vki_v4l2_jpegcompression)
4757 #define VKI_V4L2_QUERYSTD _VKI_IOR('V', 63, vki_v4l2_std_id)
4758 #define VKI_V4L2_TRY_FMT _VKI_IOWR('V', 64, struct vki_v4l2_format)
4759 #define VKI_V4L2_ENUMAUDIO _VKI_IOWR('V', 65, struct vki_v4l2_audio)
4760 #define VKI_V4L2_ENUMAUDOUT _VKI_IOWR('V', 66, struct vki_v4l2_audioout)
4761 #define VKI_V4L2_G_PRIORITY _VKI_IOR('V', 67, __vki_u32)
4762 #define VKI_V4L2_S_PRIORITY _VKI_IOW('V', 68, __vki_u32)
4763 #define VKI_V4L2_G_SLICED_VBI_CAP _VKI_IOWR('V', 69, struct vki_v4l2_sliced_vbi_cap)
4764 #define VKI_V4L2_LOG_STATUS _VKI_IO('V', 70)
4765 #define VKI_V4L2_G_EXT_CTRLS _VKI_IOWR('V', 71, struct vki_v4l2_ext_controls)
4766 #define VKI_V4L2_S_EXT_CTRLS _VKI_IOWR('V', 72, struct vki_v4l2_ext_controls)
4767 #define VKI_V4L2_TRY_EXT_CTRLS _VKI_IOWR('V', 73, struct vki_v4l2_ext_controls)
4768 #define VKI_V4L2_ENUM_FRAMESIZES _VKI_IOWR('V', 74, struct vki_v4l2_frmsizeenum)
4769 #define VKI_V4L2_ENUM_FRAMEINTERVALS _VKI_IOWR('V', 75, struct vki_v4l2_frmivalenum)
4770 #define VKI_V4L2_G_ENC_INDEX _VKI_IOR('V', 76, struct vki_v4l2_enc_idx)
4771 #define VKI_V4L2_ENCODER_CMD _VKI_IOWR('V', 77, struct vki_v4l2_encoder_cmd)
4772 #define VKI_V4L2_TRY_ENCODER_CMD _VKI_IOWR('V', 78, struct vki_v4l2_encoder_cmd)
4773 #define VKI_V4L2_DBG_S_REGISTER _VKI_IOW('V', 79, struct vki_v4l2_dbg_register)
4774 #define VKI_V4L2_DBG_G_REGISTER _VKI_IOWR('V', 80, struct vki_v4l2_dbg_register)
4775 #define VKI_V4L2_S_HW_FREQ_SEEK _VKI_IOW('V', 82, struct vki_v4l2_hw_freq_seek)
4776 #define VKI_V4L2_S_DV_TIMINGS _VKI_IOWR('V', 87, struct vki_v4l2_dv_timings)
4777 #define VKI_V4L2_G_DV_TIMINGS _VKI_IOWR('V', 88, struct vki_v4l2_dv_timings)
4778 #define VKI_V4L2_DQEVENT _VKI_IOR('V', 89, struct vki_v4l2_event)
4779 #define VKI_V4L2_SUBSCRIBE_EVENT _VKI_IOW('V', 90, struct vki_v4l2_event_subscription)
4780 #define VKI_V4L2_UNSUBSCRIBE_EVENT _VKI_IOW('V', 91, struct vki_v4l2_event_subscription)
4781 #define VKI_V4L2_CREATE_BUFS _VKI_IOWR('V', 92, struct vki_v4l2_create_buffers)
4782 #define VKI_V4L2_PREPARE_BUF _VKI_IOWR('V', 93, struct vki_v4l2_buffer)
4783 #define VKI_V4L2_G_SELECTION _VKI_IOWR('V', 94, struct vki_v4l2_selection)
4784 #define VKI_V4L2_S_SELECTION _VKI_IOWR('V', 95, struct vki_v4l2_selection)
4785 #define VKI_V4L2_DECODER_CMD _VKI_IOWR('V', 96, struct vki_v4l2_decoder_cmd)
4786 #define VKI_V4L2_TRY_DECODER_CMD _VKI_IOWR('V', 97, struct vki_v4l2_decoder_cmd)
4787 #define VKI_V4L2_ENUM_DV_TIMINGS _VKI_IOWR('V', 98, struct vki_v4l2_enum_dv_timings)
4788 #define VKI_V4L2_QUERY_DV_TIMINGS _VKI_IOR('V', 99, struct vki_v4l2_dv_timings)
4789 #define VKI_V4L2_DV_TIMINGS_CAP _VKI_IOWR('V', 100, struct vki_v4l2_dv_timings_cap)
4790 #define VKI_V4L2_ENUM_FREQ_BANDS _VKI_IOWR('V', 101, struct vki_v4l2_frequency_band)
4791 #define VKI_V4L2_DBG_G_CHIP_INFO _VKI_IOWR('V', 102, struct vki_v4l2_dbg_chip_info)
4792 #define VKI_V4L2_QUERY_EXT_CTRL _VKI_IOWR('V', 103, struct vki_v4l2_query_ext_ctrl)
4793
4794 struct vki_v4l2_mbus_framefmt {
4795 __vki_u32 width;
4796 __vki_u32 height;
4797 __vki_u32 code;
4798 __vki_u32 field;
4799 __vki_u32 colorspace;
4800 __vki_u16 ycbcr_enc;
4801 __vki_u16 quantization;
4802 __vki_u32 reserved[6];
4803 };
4804
4805 struct vki_v4l2_subdev_format {
4806 __vki_u32 which;
4807 __vki_u32 pad;
4808 struct vki_v4l2_mbus_framefmt format;
4809 __vki_u32 reserved[8];
4810 };
4811
4812 struct vki_v4l2_subdev_crop {
4813 __vki_u32 which;
4814 __vki_u32 pad;
4815 struct vki_v4l2_rect rect;
4816 __vki_u32 reserved[8];
4817 };
4818
4819 struct vki_v4l2_subdev_mbus_code_enum {
4820 __vki_u32 pad;
4821 __vki_u32 index;
4822 __vki_u32 code;
4823 __vki_u32 which;
4824 __vki_u32 reserved[8];
4825 };
4826
4827 struct vki_v4l2_subdev_frame_size_enum {
4828 __vki_u32 index;
4829 __vki_u32 pad;
4830 __vki_u32 code;
4831 __vki_u32 min_width;
4832 __vki_u32 max_width;
4833 __vki_u32 min_height;
4834 __vki_u32 max_height;
4835 __vki_u32 which;
4836 __vki_u32 reserved[8];
4837 };
4838
4839 struct vki_v4l2_subdev_frame_interval {
4840 __vki_u32 pad;
4841 struct vki_v4l2_fract interval;
4842 __vki_u32 reserved[9];
4843 };
4844
4845 struct vki_v4l2_subdev_frame_interval_enum {
4846 __vki_u32 index;
4847 __vki_u32 pad;
4848 __vki_u32 code;
4849 __vki_u32 width;
4850 __vki_u32 height;
4851 struct vki_v4l2_fract interval;
4852 __vki_u32 which;
4853 __vki_u32 reserved[8];
4854 };
4855
4856 struct vki_v4l2_subdev_selection {
4857 __vki_u32 which;
4858 __vki_u32 pad;
4859 __vki_u32 target;
4860 __vki_u32 flags;
4861 struct vki_v4l2_rect r;
4862 __vki_u32 reserved[8];
4863 };
4864
4865 #define VKI_V4L2_SUBDEV_G_FMT _VKI_IOWR('V', 4, struct vki_v4l2_subdev_format)
4866 #define VKI_V4L2_SUBDEV_S_FMT _VKI_IOWR('V', 5, struct vki_v4l2_subdev_format)
4867 #define VKI_V4L2_SUBDEV_G_FRAME_INTERVAL _VKI_IOWR('V', 21, struct vki_v4l2_subdev_frame_interval)
4868 #define VKI_V4L2_SUBDEV_S_FRAME_INTERVAL _VKI_IOWR('V', 22, struct vki_v4l2_subdev_frame_interval)
4869 #define VKI_V4L2_SUBDEV_ENUM_MBUS_CODE _VKI_IOWR('V', 2, struct vki_v4l2_subdev_mbus_code_enum)
4870 #define VKI_V4L2_SUBDEV_ENUM_FRAME_SIZE _VKI_IOWR('V', 74, struct vki_v4l2_subdev_frame_size_enum)
4871 #define VKI_V4L2_SUBDEV_ENUM_FRAME_INTERVAL _VKI_IOWR('V', 75, struct vki_v4l2_subdev_frame_interval_enum)
4872 #define VKI_V4L2_SUBDEV_G_CROP _VKI_IOWR('V', 59, struct vki_v4l2_subdev_crop)
4873 #define VKI_V4L2_SUBDEV_S_CROP _VKI_IOWR('V', 60, struct vki_v4l2_subdev_crop)
4874 #define VKI_V4L2_SUBDEV_G_SELECTION _VKI_IOWR('V', 61, struct vki_v4l2_subdev_selection)
4875 #define VKI_V4L2_SUBDEV_S_SELECTION _VKI_IOWR('V', 62, struct vki_v4l2_subdev_selection)
4876
4877 struct vki_media_device_info {
4878 char driver[16];
4879 char model[32];
4880 char serial[40];
4881 char bus_info[32];
4882 __vki_u32 media_version;
4883 __vki_u32 hw_revision;
4884 __vki_u32 driver_version;
4885 __vki_u32 reserved[31];
4886 };
4887
4888 struct vki_media_entity_desc {
4889 __vki_u32 id;
4890 char name[32];
4891 __vki_u32 type;
4892 __vki_u32 revision;
4893 __vki_u32 flags;
4894 __vki_u32 group_id;
4895 __vki_u16 pads;
4896 __vki_u16 links;
4897
4898 __vki_u32 reserved[4];
4899
4900 union {
4901
4902 struct {
4903 __vki_u32 major;
4904 __vki_u32 minor;
4905 } v4l;
4906 struct {
4907 __vki_u32 major;
4908 __vki_u32 minor;
4909 } fb;
4910 struct {
4911 __vki_u32 card;
4912 __vki_u32 device;
4913 __vki_u32 subdevice;
4914 } alsa;
4915 int dvb;
4916
4917
4918
4919 __vki_u8 raw[184];
4920 };
4921 };
4922
4923 struct vki_media_pad_desc {
4924 __vki_u32 entity;
4925 __vki_u16 index;
4926 __vki_u32 flags;
4927 __vki_u32 reserved[2];
4928 };
4929
4930 struct vki_media_link_desc {
4931 struct vki_media_pad_desc source;
4932 struct vki_media_pad_desc sink;
4933 __vki_u32 flags;
4934 __vki_u32 reserved[2];
4935 };
4936
4937 struct vki_media_links_enum {
4938 __vki_u32 entity;
4939 struct vki_media_pad_desc __user *pads;
4940 struct vki_media_link_desc __user *links;
4941 __vki_u32 reserved[4];
4942 };
4943
4944 #define VKI_MEDIA_IOC_DEVICE_INFO _VKI_IOWR('|', 0x00, struct vki_media_device_info)
4945 #define VKI_MEDIA_IOC_ENUM_ENTITIES _VKI_IOWR('|', 0x01, struct vki_media_entity_desc)
4946 #define VKI_MEDIA_IOC_ENUM_LINKS _VKI_IOWR('|', 0x02, struct vki_media_links_enum)
4947 #define VKI_MEDIA_IOC_SETUP_LINK _VKI_IOWR('|', 0x03, struct vki_media_link_desc)
4948
4949
4950 #define VKI_DMX_STOP _VKI_IO('o', 42)
4951
4952
4953 enum vki_kcmp_type {
4954 VKI_KCMP_FILE,
4955 VKI_KCMP_VM,
4956 VKI_KCMP_FILES,
4957 VKI_KCMP_FS,
4958 VKI_KCMP_SIGHAND,
4959 VKI_KCMP_IO,
4960 VKI_KCMP_SYSVSEM,
4961
4962 VKI_KCMP_TYPES
4963 };
4964
4965
4966
4967
4968
4969 #define VKI_SECCOMP_MODE_FILTER 2
4970
4971
4972
4973
4974 #define VKI_BINPRM_BUF_SIZE 128
4975
4976
4977
4978
4979
4980 struct vki_serial_struct {
4981 int type;
4982 int line;
4983 unsigned int port;
4984 int irq;
4985 int flags;
4986 int xmit_fifo_size;
4987 int custom_divisor;
4988 int baud_base;
4989 unsigned short close_delay;
4990 char io_type;
4991 char reserved_char[1];
4992 int hub6;
4993 unsigned short closing_wait;
4994 unsigned short closing_wait2;
4995 unsigned char *iomem_base;
4996 unsigned short iomem_reg_shift;
4997 unsigned int port_high;
4998 unsigned long iomap_base;
4999 };
5000
5001
5002
5003
5004
5005 #if !defined(VKI_INIT_ARCH_ELF_STATE)
5006
5007
5008
5009
5010
5011 struct vki_arch_elf_state {
5012 };
5013
5014 # define VKI_INIT_ARCH_ELF_STATE { }
5015
5016 #endif
5017
5018
5019
5020
5021
5022 #define VKI_PR_SET_FP_MODE 45
5023 #define VKI_PR_GET_FP_MODE 46
5024 # define VKI_PR_FP_MODE_FR (1 << 0)
5025 # define VKI_PR_FP_MODE_FRE (1 << 1)
5026
5027 #endif
5028
5029
5030
5031
5032
5033 struct vki_blk_zone {
5034 __vki_u64 start;
5035 __vki_u64 len;
5036 __vki_u64 wp;
5037 __vki_u8 type;
5038 __vki_u8 cond;
5039 __vki_u8 non_seq;
5040 __vki_u8 reset;
5041 __vki_u8 reserved[36];
5042 };
5043
5044 struct vki_blk_zone_report {
5045 __vki_u64 sector;
5046 __vki_u32 nr_zones;
5047 __vki_u8 reserved[4];
5048 struct vki_blk_zone zones[0];
5049 };
5050
5051 struct vki_blk_zone_range {
5052 __vki_u64 sector;
5053 __vki_u64 nr_sectors;
5054 };
5055
5056 #define VKI_BLKREPORTZONE _VKI_IOWR(0x12, 130, struct vki_blk_zone_report)
5057 #define VKI_BLKRESETZONE _VKI_IOW(0x12, 131, struct vki_blk_zone_range)
5058
5059
5060
5061
5062
5063 struct vki_bpf_insn {
5064 __vki_u8 code;
5065 __vki_u8 dst_reg:4;
5066 __vki_u8 src_reg:4;
5067 __vki_s16 off;
5068 __vki_s32 imm;
5069 };
5070
5071 enum vki_bpf_cmd {
5072 VKI_BPF_MAP_CREATE,
5073 VKI_BPF_MAP_LOOKUP_ELEM,
5074 VKI_BPF_MAP_UPDATE_ELEM,
5075 VKI_BPF_MAP_DELETE_ELEM,
5076 VKI_BPF_MAP_GET_NEXT_KEY,
5077 VKI_BPF_PROG_LOAD,
5078 VKI_BPF_OBJ_PIN,
5079 VKI_BPF_OBJ_GET,
5080 VKI_BPF_PROG_ATTACH,
5081 VKI_BPF_PROG_DETACH,
5082 VKI_BPF_PROG_TEST_RUN,
5083 VKI_BPF_PROG_GET_NEXT_ID,
5084 VKI_BPF_MAP_GET_NEXT_ID,
5085 VKI_BPF_PROG_GET_FD_BY_ID,
5086 VKI_BPF_MAP_GET_FD_BY_ID,
5087 VKI_BPF_OBJ_GET_INFO_BY_FD,
5088 VKI_BPF_PROG_QUERY,
5089 VKI_BPF_RAW_TRACEPOINT_OPEN,
5090 VKI_BPF_BTF_LOAD,
5091 VKI_BPF_BTF_GET_FD_BY_ID,
5092 VKI_BPF_TASK_FD_QUERY,
5093 VKI_BPF_MAP_LOOKUP_AND_DELETE_ELEM,
5094 VKI_BPF_MAP_FREEZE,
5095 };
5096
5097 enum vki_bpf_map_type {
5098 VKI_BPF_MAP_TYPE_UNSPEC,
5099 VKI_BPF_MAP_TYPE_HASH,
5100 VKI_BPF_MAP_TYPE_ARRAY,
5101 VKI_BPF_MAP_TYPE_PROG_ARRAY,
5102 VKI_BPF_MAP_TYPE_PERF_EVENT_ARRAY,
5103 VKI_BPF_MAP_TYPE_PERCPU_HASH,
5104 VKI_BPF_MAP_TYPE_PERCPU_ARRAY,
5105 VKI_BPF_MAP_TYPE_STACK_TRACE,
5106 VKI_BPF_MAP_TYPE_CGROUP_ARRAY,
5107 VKI_BPF_MAP_TYPE_LRU_HASH,
5108 VKI_BPF_MAP_TYPE_LRU_PERCPU_HASH,
5109 VKI_BPF_MAP_TYPE_LPM_TRIE,
5110 VKI_BPF_MAP_TYPE_ARRAY_OF_MAPS,
5111 VKI_BPF_MAP_TYPE_HASH_OF_MAPS,
5112 VKI_BPF_MAP_TYPE_DEVMAP,
5113 VKI_BPF_MAP_TYPE_SOCKMAP,
5114 VKI_BPF_MAP_TYPE_CPUMAP,
5115 VKI_BPF_MAP_TYPE_XSKMAP,
5116 VKI_BPF_MAP_TYPE_SOCKHASH,
5117 };
5118
5119 enum vki_bpf_prog_type {
5120 VKI_BPF_PROG_TYPE_UNSPEC,
5121 VKI_BPF_PROG_TYPE_SOCKET_FILTER,
5122 VKI_BPF_PROG_TYPE_KPROBE,
5123 VKI_BPF_PROG_TYPE_SCHED_CLS,
5124 VKI_BPF_PROG_TYPE_SCHED_ACT,
5125 VKI_BPF_PROG_TYPE_TRACEPOINT,
5126 VKI_BPF_PROG_TYPE_XDP,
5127 VKI_BPF_PROG_TYPE_PERF_EVENT,
5128 VKI_BPF_PROG_TYPE_CGROUP_SKB,
5129 VKI_BPF_PROG_TYPE_CGROUP_SOCK,
5130 VKI_BPF_PROG_TYPE_LWT_IN,
5131 VKI_BPF_PROG_TYPE_LWT_OUT,
5132 VKI_BPF_PROG_TYPE_LWT_XMIT,
5133 VKI_BPF_PROG_TYPE_SOCK_OPS,
5134 VKI_BPF_PROG_TYPE_SK_SKB,
5135 VKI_BPF_PROG_TYPE_CGROUP_DEVICE,
5136 VKI_BPF_PROG_TYPE_SK_MSG,
5137 VKI_BPF_PROG_TYPE_RAW_TRACEPOINT,
5138 VKI_BPF_PROG_TYPE_CGROUP_SOCK_ADDR,
5139 VKI_BPF_PROG_TYPE_LWT_SEG6LOCAL,
5140 VKI_BPF_PROG_TYPE_LIRC_MODE2,
5141 };
5142
5143 enum vki_bpf_attach_type {
5144 VKI_BPF_CGROUP_INET_INGRESS,
5145 VKI_BPF_CGROUP_INET_EGRESS,
5146 VKI_BPF_CGROUP_INET_SOCK_CREATE,
5147 VKI_BPF_CGROUP_SOCK_OPS,
5148 VKI_BPF_SK_SKB_STREAM_PARSER,
5149 VKI_BPF_SK_SKB_STREAM_VERDICT,
5150 VKI_BPF_CGROUP_DEVICE,
5151 VKI_BPF_SK_MSG_VERDICT,
5152 VKI_BPF_CGROUP_INET4_BIND,
5153 VKI_BPF_CGROUP_INET6_BIND,
5154 VKI_BPF_CGROUP_INET4_CONNECT,
5155 VKI_BPF_CGROUP_INET6_CONNECT,
5156 VKI_BPF_CGROUP_INET4_POST_BIND,
5157 VKI_BPF_CGROUP_INET6_POST_BIND,
5158 VKI_BPF_CGROUP_UDP4_SENDMSG,
5159 VKI_BPF_CGROUP_UDP6_SENDMSG,
5160 VKI_BPF_LIRC_MODE2,
5161 __VKI_MAX_BPF_ATTACH_TYPE
5162 };
5163
5164
5165 #define VKI_BPF_F_NUMA_NODE (1U << 2)
5166
5167 #define VKI_BPF_OBJ_NAME_LEN 16U
5168
5169 union vki_bpf_attr {
5170 struct {
5171 __vki_u32 map_type;
5172 __vki_u32 key_size;
5173 __vki_u32 value_size;
5174 __vki_u32 max_entries;
5175 __vki_u32 map_flags;
5176
5177
5178 __vki_u32 inner_map_fd;
5179 __vki_u32 numa_node;
5180
5181
5182 char map_name[VKI_BPF_OBJ_NAME_LEN];
5183 __vki_u32 map_ifindex;
5184 __vki_u32 btf_fd;
5185 __vki_u32 btf_key_type_id;
5186 __vki_u32 btf_value_type_id;
5187 };
5188
5189 struct {
5190 __vki_u32 map_fd;
5191 __vki_aligned_u64 key;
5192 union {
5193 __vki_aligned_u64 value;
5194 __vki_aligned_u64 next_key;
5195 };
5196 __vki_u64 flags;
5197 };
5198
5199 struct {
5200 __vki_u32 prog_type;
5201 __vki_u32 insn_cnt;
5202 __vki_aligned_u64 insns;
5203 __vki_aligned_u64 license;
5204 __vki_u32 log_level;
5205 __vki_u32 log_size;
5206 __vki_aligned_u64 log_buf;
5207 __vki_u32 kern_version;
5208 __vki_u32 prog_flags;
5209 char prog_name[VKI_BPF_OBJ_NAME_LEN];
5210 __vki_u32 prog_ifindex;
5211
5212
5213
5214
5215 __vki_u32 expected_attach_type;
5216 };
5217
5218 struct {
5219 __vki_aligned_u64 pathname;
5220 __vki_u32 bpf_fd;
5221 __vki_u32 file_flags;
5222 };
5223
5224 struct {
5225 __vki_u32 target_fd;
5226 __vki_u32 attach_bpf_fd;
5227 __vki_u32 attach_type;
5228 __vki_u32 attach_flags;
5229 };
5230
5231 struct {
5232 __vki_u32 prog_fd;
5233 __vki_u32 retval;
5234 __vki_u32 data_size_in;
5235 __vki_u32 data_size_out;
5236 __vki_aligned_u64 data_in;
5237 __vki_aligned_u64 data_out;
5238 __vki_u32 repeat;
5239 __vki_u32 duration;
5240 } test;
5241
5242 struct {
5243 union {
5244 __vki_u32 start_id;
5245 __vki_u32 prog_id;
5246 __vki_u32 map_id;
5247 __vki_u32 btf_id;
5248 };
5249 __vki_u32 next_id;
5250 __vki_u32 open_flags;
5251 };
5252
5253 struct {
5254 __vki_u32 bpf_fd;
5255 __vki_u32 info_len;
5256 __vki_aligned_u64 info;
5257 } info;
5258
5259 struct {
5260 __vki_u32 target_fd;
5261 __vki_u32 attach_type;
5262 __vki_u32 query_flags;
5263 __vki_u32 attach_flags;
5264 __vki_aligned_u64 prog_ids;
5265 __vki_u32 prog_cnt;
5266 } query;
5267
5268 struct {
5269 __vki_u64 name;
5270 __vki_u32 prog_fd;
5271 } raw_tracepoint;
5272
5273 struct {
5274 __vki_aligned_u64 btf;
5275 __vki_aligned_u64 btf_log_buf;
5276 __vki_u32 btf_size;
5277 __vki_u32 btf_log_size;
5278 __vki_u32 btf_log_level;
5279 };
5280
5281 struct {
5282 __vki_u32 pid;
5283 __vki_u32 fd;
5284 __vki_u32 flags;
5285 __vki_u32 buf_len;
5286 __vki_aligned_u64 buf;
5287
5288
5289
5290
5291 __vki_u32 prog_id;
5292 __vki_u32 fd_type;
5293 __vki_u64 probe_offset;
5294 __vki_u64 probe_addr;
5295 } task_fd_query;
5296 } __attribute__((aligned(8)));
5297
5298 #define VKI_XDP_PACKET_HEADROOM 256
5299
5300 #define VKI_BPF_TAG_SIZE 8
5301
5302 struct vki_bpf_prog_info {
5303 __vki_u32 type;
5304 __vki_u32 id;
5305 __vki_u8 tag[VKI_BPF_TAG_SIZE];
5306 __vki_u32 jited_prog_len;
5307 __vki_u32 xlated_prog_len;
5308 __vki_aligned_u64 jited_prog_insns;
5309 __vki_aligned_u64 xlated_prog_insns;
5310 __vki_u64 load_time;
5311 __vki_u32 created_by_uid;
5312 __vki_u32 nr_map_ids;
5313 __vki_aligned_u64 map_ids;
5314 char name[VKI_BPF_OBJ_NAME_LEN];
5315 __vki_u32 ifindex;
5316 __vki_u32 gpl_compatible:1;
5317 __vki_u64 netns_dev;
5318 __vki_u64 netns_ino;
5319 __vki_u32 nr_jited_ksyms;
5320 __vki_u32 nr_jited_func_lens;
5321 __vki_aligned_u64 jited_ksyms;
5322 __vki_aligned_u64 jited_func_lens;
5323 } __attribute__((aligned(8)));
5324
5325 struct vki_bpf_map_info {
5326 __vki_u32 type;
5327 __vki_u32 id;
5328 __vki_u32 key_size;
5329 __vki_u32 value_size;
5330 __vki_u32 max_entries;
5331 __vki_u32 map_flags;
5332 char name[VKI_BPF_OBJ_NAME_LEN];
5333 __vki_u32 ifindex;
5334 __vki_u32 :32;
5335 __vki_u64 netns_dev;
5336 __vki_u64 netns_ino;
5337 __vki_u32 btf_id;
5338 __vki_u32 btf_key_type_id;
5339 __vki_u32 btf_value_type_id;
5340 } __attribute__((aligned(8)));
5341
5342 struct vki_bpf_btf_info {
5343 __vki_aligned_u64 btf;
5344 __vki_u32 btf_size;
5345 __vki_u32 id;
5346 } __attribute__((aligned(8)));
5347
5348
5349
5350
5351
5352 struct vki_pps_ktime {
5353 __vki_s64 sec;
5354 __vki_s32 nsec;
5355 __vki_u32 flags;
5356 };
5357
5358 struct vki_pps_kinfo {
5359 __vki_u32 assert_sequence;
5360 __vki_u32 clear_sequence;
5361 struct vki_pps_ktime assert_tu;
5362 struct vki_pps_ktime clear_tu;
5363 int current_mode;
5364 };
5365
5366 struct vki_pps_kparams {
5367 int api_version;
5368 int mode;
5369 struct vki_pps_ktime assert_off_tu;
5370 struct vki_pps_ktime clear_off_tu;
5371 };
5372
5373 struct vki_pps_fdata {
5374 struct vki_pps_kinfo info;
5375 struct vki_pps_ktime timeout;
5376 };
5377
5378 struct vki_pps_bind_args {
5379 int tsformat;
5380 int edge;
5381 int consumer;
5382 };
5383
5384 #define VKI_PPS_GETPARAMS _VKI_IOR('p', 0xa1, struct vki_pps_kparams *)
5385 #define VKI_PPS_SETPARAMS _VKI_IOW('p', 0xa2, struct vki_pps_kparams *)
5386 #define VKI_PPS_GETCAP _VKI_IOR('p', 0xa3, int *)
5387 #define VKI_PPS_FETCH _VKI_IOWR('p', 0xa4, struct vki_pps_fdata *)
5388 #define VKI_PPS_KC_BIND _VKI_IOW('p', 0xa5, struct vki_pps_bind_args *)
5389
5390
5391
5392
5393
5394 struct vki_ptp_clock_time {
5395 __vki_s64 sec;
5396 __vki_u32 nsec;
5397 __vki_u32 reserved;
5398 };
5399
5400 struct vki_ptp_clock_caps {
5401 int max_adj;
5402 int n_alarm;
5403 int n_ext_ts;
5404 int n_per_out;
5405 int pps;
5406 int n_pins;
5407 int cross_timestamping;
5408 int rsv[13];
5409 };
5410
5411 struct vki_ptp_extts_request {
5412 unsigned int index;
5413 unsigned int flags;
5414 unsigned int rsv[2];
5415 };
5416
5417 struct vki_ptp_perout_request {
5418 struct vki_ptp_clock_time start;
5419 struct vki_ptp_clock_time period;
5420 unsigned int index;
5421 unsigned int flags;
5422 unsigned int rsv[4];
5423 };
5424
5425 #define VKI_PTP_MAX_SAMPLES 25
5426
5427 struct vki_ptp_sys_offset {
5428 unsigned int n_samples;
5429 unsigned int rsv[3];
5430 struct vki_ptp_clock_time ts[2 * VKI_PTP_MAX_SAMPLES + 1];
5431 };
5432
5433 struct vki_ptp_sys_offset_extended {
5434 unsigned int n_samples;
5435 unsigned int rsv[3];
5436 struct vki_ptp_clock_time ts[VKI_PTP_MAX_SAMPLES][3];
5437 };
5438
5439 struct vki_ptp_sys_offset_precise {
5440 struct vki_ptp_clock_time device;
5441 struct vki_ptp_clock_time sys_realtime;
5442 struct vki_ptp_clock_time sys_monoraw;
5443 unsigned int rsv[4];
5444 };
5445
5446 struct vki_ptp_pin_desc {
5447 char name[64];
5448 unsigned int index;
5449 unsigned int func;
5450 unsigned int chan;
5451 unsigned int rsv[5];
5452 };
5453
5454 #define VKI_PTP_CLOCK_GETCAPS _VKI_IOR('=', 1, struct vki_ptp_clock_caps)
5455 #define VKI_PTP_EXTTS_REQUEST _VKI_IOW('=', 2, struct vki_ptp_extts_request)
5456 #define VKI_PTP_PEROUT_REQUEST _VKI_IOW('=', 3, struct vki_ptp_perout_request)
5457 #define VKI_PTP_ENABLE_PPS _VKI_IOW('=', 4, int)
5458 #define VKI_PTP_SYS_OFFSET _VKI_IOW('=', 5, struct vki_ptp_sys_offset)
5459 #define VKI_PTP_PIN_GETFUNC _VKI_IOWR('=', 6, struct vki_ptp_pin_desc)
5460 #define VKI_PTP_PIN_SETFUNC _VKI_IOW('=', 7, struct vki_ptp_pin_desc)
5461 #define VKI_PTP_SYS_OFFSET_PRECISE \
5462 _VKI_IOWR('=', 8, struct vki_ptp_sys_offset_precise)
5463 #define VKI_PTP_SYS_OFFSET_EXTENDED \
5464 _VKI_IOWR('=', 9, struct vki_ptp_sys_offset_extended)
5465
5466
5467
5468 typedef vki_int64_t vki_time64_t;
5469
5470
5471
5472
5473
5474 struct vki_timespec64 {
5475 vki_time64_t tv_sec;
5476 #if defined(VKI_BIG_ENDIAN)
5477 vki_int32_t tv_pad;
5478 vki_int32_t tv_nsec;
5479 #elif defined(VKI_LITTLE_ENDIAN)
5480 vki_int32_t tv_nsec;
5481 vki_int32_t tv_pad;
5482 #else
5483 #error edit for your odd byteorder.
5484 #endif
5485 };
5486
5487 struct vki_itimerspec64 {
5488 struct vki_timespec it_interval;
5489 struct vki_timespec it_value;
5490 };
5491
5492
5493
5494 struct vki_open_how {
5495 vki_uint64_t vki_flags;
5496 vki_uint64_t vki_mode;
5497 vki_uint64_t vki_resolve;
5498 };
5499
5500 #define VKI_RESOLVE_NO_XDEV 0x01
5501 #define VKI_RESOLVE_NO_MAGICLINKS 0x02
5502 #define VKI_RESOLVE_NO_SYMLINKS 0x04
5503 #define VKI_RESOLVE_BENEATH 0x08
5504 #define VKI_RESOLVE_IN_ROOT 0x10
5505 #define VKI_RESOLVE_CACHED 0x20
5506
5507 #ifndef VKI_RLIM_INFINITY
5508 #define VKI_RLIM_INFINITY (~0UL)
5509 #endif
5510
5511 #define VKI_RLIM64_INFINITY (~0ULL)
5512
5513 #define VKI_CLOSE_RANGE_UNSHARE (1U << 1)
5514 #define VKI_CLOSE_RANGE_CLOEXEC (1U << 2)
5515
5516 struct vki_cachestat_range {
5517 __vki_u64 off;
5518 __vki_u64 len;
5519 };
5520
5521 struct vki_cachestat {
5522 __vki_u64 nr_cache;
5523 __vki_u64 nr_dirty;
5524 __vki_u64 nr_writeback;
5525 __vki_u64 nr_evicted;
5526 __vki_u64 nr_recently_evicted;
5527 };
5528
5529
5530
5531
5532
5533 #define VKI_BTRFS_SUPER_MAGIC 0x9123683E
5534
5535 struct vki__aio_sigset {
5536 const vki_sigset_t __user *sigmask;
5537 vki_size_t sigsetsize;
5538 };
5539
5540
5541
5542
5543
5544 struct vki_mnt_id_req {
5545 __vki_u32 size;
5546 __vki_u32 spare;
5547 __vki_u64 mnt_id;
5548 __vki_u64 param;
5549 __vki_u64 mnt_ns_id;
5550 };
5551
5552 struct vki_statmount {
5553 __vki_u32 size;
5554 __vki_u32 mnt_opts;
5555 __vki_u64 mask;
5556 __vki_u32 sb_dev_major;
5557 __vki_u32 sb_dev_minor;
5558 __vki_u64 sb_magic;
5559 __vki_u32 sb_flags;
5560 __vki_u32 fs_type;
5561 __vki_u64 mnt_id;
5562 __vki_u64 mnt_parent_id;
5563 __vki_u32 mnt_id_old;
5564 __vki_u32 mnt_parent_id_old;
5565 __vki_u64 mnt_attr;
5566 __vki_u64 mnt_propagation;
5567 __vki_u64 mnt_peer_group;
5568 __vki_u64 mnt_master;
5569 __vki_u64 propagate_from;
5570 __vki_u32 mnt_root;
5571 __vki_u32 mnt_point;
5572 __vki_u64 mnt_ns_id;
5573 __vki_u64 __spare2[49];
5574 char str[];
5575 };
5576
5577
5578
5579