File indexing completed on 2026-08-18 09:32:34
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_MADV_GUARD_INSTALL 102
1372 #define VKI_MADV_GUARD_REMOVE 103
1373
1374
1375
1376
1377
1378 #define VKI_FUTEX_WAIT (0)
1379 #define VKI_FUTEX_WAKE (1)
1380 #define VKI_FUTEX_FD (2)
1381 #define VKI_FUTEX_REQUEUE (3)
1382 #define VKI_FUTEX_CMP_REQUEUE (4)
1383 #define VKI_FUTEX_WAKE_OP (5)
1384 #define VKI_FUTEX_LOCK_PI (6)
1385 #define VKI_FUTEX_UNLOCK_PI (7)
1386 #define VKI_FUTEX_TRYLOCK_PI (8)
1387 #define VKI_FUTEX_WAIT_BITSET (9)
1388 #define VKI_FUTEX_WAKE_BITSET (10)
1389 #define VKI_FUTEX_WAIT_REQUEUE_PI (11)
1390 #define VKI_FUTEX_CMP_REQUEUE_PI (12)
1391 #define VKI_FUTEX_PRIVATE_FLAG (128)
1392 #define VKI_FUTEX_CLOCK_REALTIME (256)
1393
1394 struct vki_robust_list {
1395 struct vki_robust_list __user *next;
1396 };
1397
1398 struct vki_robust_list_head {
1399
1400
1401
1402 struct vki_robust_list list;
1403
1404
1405
1406
1407
1408
1409
1410 long futex_offset;
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422 struct vki_robust_list __user *list_op_pending;
1423 };
1424
1425
1426 struct vki_futex_waitv {
1427 __vki_u64 val;
1428 __vki_u64 uaddr;
1429 __vki_u32 flags;
1430 __vki_u32 __reserved;
1431 };
1432
1433 struct vki__kernel_timespec {
1434 long long tv_sec;
1435 long long tv_nsec;
1436 };
1437
1438
1439
1440
1441
1442 #define VKI_ERESTARTSYS 512
1443
1444
1445
1446
1447
1448 #define VKI_S_IFMT 00170000
1449 #define VKI_S_IFSOCK 0140000
1450 #define VKI_S_IFLNK 0120000
1451 #define VKI_S_IFREG 0100000
1452 #define VKI_S_IFBLK 0060000
1453 #define VKI_S_IFDIR 0040000
1454 #define VKI_S_IFCHR 0020000
1455 #define VKI_S_IFIFO 0010000
1456 #define VKI_S_ISUID 0004000
1457 #define VKI_S_ISGID 0002000
1458 #define VKI_S_ISVTX 0001000
1459
1460 #define VKI_S_ISLNK(m) (((m) & VKI_S_IFMT) == VKI_S_IFLNK)
1461 #define VKI_S_ISREG(m) (((m) & VKI_S_IFMT) == VKI_S_IFREG)
1462 #define VKI_S_ISDIR(m) (((m) & VKI_S_IFMT) == VKI_S_IFDIR)
1463 #define VKI_S_ISCHR(m) (((m) & VKI_S_IFMT) == VKI_S_IFCHR)
1464 #define VKI_S_ISBLK(m) (((m) & VKI_S_IFMT) == VKI_S_IFBLK)
1465 #define VKI_S_ISFIFO(m) (((m) & VKI_S_IFMT) == VKI_S_IFIFO)
1466 #define VKI_S_ISSOCK(m) (((m) & VKI_S_IFMT) == VKI_S_IFSOCK)
1467
1468 #define VKI_S_IRWXU 00700
1469 #define VKI_S_IRUSR 00400
1470 #define VKI_S_IWUSR 00200
1471 #define VKI_S_IXUSR 00100
1472
1473 #define VKI_S_IRWXG 00070
1474 #define VKI_S_IRGRP 00040
1475 #define VKI_S_IWGRP 00020
1476 #define VKI_S_IXGRP 00010
1477
1478 #define VKI_S_IRWXO 00007
1479 #define VKI_S_IROTH 00004
1480 #define VKI_S_IWOTH 00002
1481 #define VKI_S_IXOTH 00001
1482
1483 #define VKI_STATX_ALL 0x00000FFFU
1484
1485 struct vki_statx_timestamp {
1486 __vki_s64 tv_sec;
1487 __vki_u32 tv_nsec;
1488 __vki_s32 __reserved;
1489 };
1490
1491 struct vki_statx {
1492
1493 __vki_u32 stx_mask;
1494 __vki_u32 stx_blksize;
1495 __vki_u64 stx_attributes;
1496
1497 __vki_u32 stx_nlink;
1498 __vki_u32 stx_uid;
1499 __vki_u32 stx_gid;
1500 __vki_u16 stx_mode;
1501 __vki_u16 __spare0[1];
1502
1503 __vki_u64 stx_ino;
1504 __vki_u64 stx_size;
1505 __vki_u64 stx_blocks;
1506 __vki_u64 stx_attributes_mask;
1507
1508 struct vki_statx_timestamp stx_atime;
1509 struct vki_statx_timestamp stx_btime;
1510 struct vki_statx_timestamp stx_ctime;
1511 struct vki_statx_timestamp stx_mtime;
1512
1513 __vki_u32 stx_rdev_major;
1514 __vki_u32 stx_rdev_minor;
1515 __vki_u32 stx_dev_major;
1516 __vki_u32 stx_dev_minor;
1517
1518 __vki_u64 stx_mnt_id;
1519 __vki_u32 stx_dio_mem_align;
1520 __vki_u32 stx_dio_offset_align;
1521
1522
1523 __vki_u64 __spare2[12];
1524
1525 };
1526
1527
1528
1529
1530
1531
1532
1533 struct vki_dirent {
1534 long d_ino;
1535 __vki_kernel_off_t d_off;
1536 unsigned short d_reclen;
1537 char d_name[256];
1538 };
1539
1540
1541 struct vki_dirent64 {
1542 __vki_u64 d_ino;
1543 __vki_s64 d_off;
1544 unsigned short d_reclen;
1545 unsigned char d_type;
1546 char d_name[256];
1547 };
1548
1549
1550
1551
1552
1553 #define VKI_F_SETLEASE (VKI_F_LINUX_SPECIFIC_BASE + 0)
1554 #define VKI_F_GETLEASE (VKI_F_LINUX_SPECIFIC_BASE + 1)
1555
1556 #define VKI_F_CREATED_QUERY (VKI_F_LINUX_SPECIFIC_BASE + 4)
1557 #define VKI_F_CANCELLK (VKI_F_LINUX_SPECIFIC_BASE + 5)
1558
1559 #define VKI_F_DUPFD_CLOEXEC (VKI_F_LINUX_SPECIFIC_BASE + 6)
1560
1561 #define VKI_F_NOTIFY (VKI_F_LINUX_SPECIFIC_BASE + 2)
1562
1563 #define VKI_F_SETPIPE_SZ (VKI_F_LINUX_SPECIFIC_BASE + 7)
1564 #define VKI_F_GETPIPE_SZ (VKI_F_LINUX_SPECIFIC_BASE + 8)
1565
1566 #define VKI_F_ADD_SEALS (VKI_F_LINUX_SPECIFIC_BASE + 9)
1567 #define VKI_F_GET_SEALS (VKI_F_LINUX_SPECIFIC_BASE + 10)
1568
1569 struct vki_flock {
1570 short l_type;
1571 short l_whence;
1572 __vki_kernel_off_t l_start;
1573 __vki_kernel_off_t l_len;
1574 __vki_kernel_pid_t l_pid;
1575 };
1576
1577 struct vki_flock64 {
1578 short l_type;
1579 short l_whence;
1580 __vki_kernel_loff_t l_start;
1581 __vki_kernel_loff_t l_len;
1582 __vki_kernel_pid_t l_pid;
1583 };
1584
1585 #define VKI_AT_EMPTY_PATH 0x1000
1586 #define VKI_AT_SYMLINK_NOFOLLOW 0x100
1587
1588
1589
1590
1591
1592 struct __vki_sysctl_args {
1593 int __user *name;
1594 int nlen;
1595 void __user *oldval;
1596 vki_size_t __user *oldlenp;
1597 void __user *newval;
1598 vki_size_t newlen;
1599 unsigned long __unused0[4];
1600 };
1601
1602
1603
1604
1605
1606 typedef unsigned long vki_aio_context_t;
1607
1608 enum {
1609 VKI_IOCB_CMD_PREAD = 0,
1610 VKI_IOCB_CMD_PWRITE = 1,
1611 VKI_IOCB_CMD_FSYNC = 2,
1612 VKI_IOCB_CMD_FDSYNC = 3,
1613 VKI_IOCB_CMD_PREADV = 7,
1614 VKI_IOCB_CMD_PWRITEV = 8,
1615 };
1616
1617
1618 struct vki_io_event {
1619 __vki_u64 data;
1620 __vki_u64 obj;
1621
1622
1623 __vki_s64 result;
1624 __vki_s64 result2;
1625 };
1626
1627 #if defined(VKI_LITTLE_ENDIAN)
1628 # define VKI_PADDED(x,y) x, y
1629 #elif defined(VKI_BIG_ENDIAN)
1630 # define VKI_PADDED(x,y) y, x
1631 #else
1632 #error edit for your odd byteorder.
1633 #endif
1634
1635 struct vki_iocb {
1636
1637 __vki_u64 aio_data;
1638 __vki_u32 VKI_PADDED(aio_key, aio_reserved1);
1639
1640
1641
1642 __vki_u16 aio_lio_opcode;
1643 __vki_s16 aio_reqprio;
1644 __vki_u32 aio_fildes;
1645
1646 __vki_u64 aio_buf;
1647 __vki_u64 aio_nbytes;
1648 __vki_s64 aio_offset;
1649
1650
1651 __vki_u64 aio_reserved2;
1652 __vki_u64 aio_reserved3;
1653 };
1654
1655
1656
1657
1658
1659 struct vki_aio_ring {
1660 unsigned id;
1661 unsigned nr;
1662 unsigned head;
1663 unsigned tail;
1664
1665 unsigned magic;
1666 unsigned compat_features;
1667 unsigned incompat_features;
1668 unsigned header_length;
1669
1670 struct vki_io_event io_events[0];
1671 };
1672
1673
1674
1675
1676
1677 #define VKI_MSG_STAT 11
1678 #define VKI_MSG_INFO 12
1679
1680 struct vki_msqid_ds {
1681 struct vki_ipc_perm msg_perm;
1682 struct vki_msg *msg_first;
1683 struct vki_msg *msg_last;
1684 __vki_kernel_time_t msg_stime;
1685 __vki_kernel_time_t msg_rtime;
1686 __vki_kernel_time_t msg_ctime;
1687 unsigned long msg_lcbytes;
1688 unsigned long msg_lqbytes;
1689 unsigned short msg_cbytes;
1690 unsigned short msg_qnum;
1691 unsigned short msg_qbytes;
1692 __vki_kernel_ipc_pid_t msg_lspid;
1693 __vki_kernel_ipc_pid_t msg_lrpid;
1694 };
1695
1696 struct vki_msgbuf {
1697 long mtype;
1698 char mtext[1];
1699 };
1700
1701 struct vki_msginfo {
1702 int msgpool;
1703 int msgmap;
1704 int msgmax;
1705 int msgmnb;
1706 int msgmni;
1707 int msgssz;
1708 int msgtql;
1709 unsigned short msgseg;
1710 };
1711
1712
1713
1714
1715
1716 struct vki_shmid_ds {
1717 struct vki_ipc_perm shm_perm;
1718 int shm_segsz;
1719 __vki_kernel_time_t shm_atime;
1720 __vki_kernel_time_t shm_dtime;
1721 __vki_kernel_time_t shm_ctime;
1722 __vki_kernel_ipc_pid_t shm_cpid;
1723 __vki_kernel_ipc_pid_t shm_lpid;
1724 unsigned short shm_nattch;
1725 unsigned short shm_unused;
1726 void *shm_unused2;
1727 void *shm_unused3;
1728 };
1729
1730 #define VKI_SHM_RDONLY 010000
1731 #define VKI_SHM_RND 020000
1732
1733 #define VKI_SHM_STAT 13
1734 #define VKI_SHM_INFO 14
1735
1736
1737 struct vki_shminfo {
1738 int shmmax;
1739 int shmmin;
1740 int shmmni;
1741 int shmseg;
1742 int shmall;
1743 };
1744
1745 struct vki_shm_info {
1746 int used_ids;
1747 unsigned long shm_tot;
1748 unsigned long shm_rss;
1749 unsigned long shm_swp;
1750 unsigned long swap_attempts;
1751 unsigned long swap_successes;
1752 };
1753
1754
1755
1756
1757
1758 struct vki_rtc_time {
1759 int tm_sec;
1760 int tm_min;
1761 int tm_hour;
1762 int tm_mday;
1763 int tm_mon;
1764 int tm_year;
1765 int tm_wday;
1766 int tm_yday;
1767 int tm_isdst;
1768 };
1769
1770 #define VKI_RTC_AIE_ON _VKI_IO('p', 0x01)
1771 #define VKI_RTC_AIE_OFF _VKI_IO('p', 0x02)
1772 #define VKI_RTC_UIE_ON _VKI_IO('p', 0x03)
1773 #define VKI_RTC_UIE_OFF _VKI_IO('p', 0x04)
1774 #define VKI_RTC_PIE_ON _VKI_IO('p', 0x05)
1775 #define VKI_RTC_PIE_OFF _VKI_IO('p', 0x06)
1776
1777 #define VKI_RTC_ALM_SET _VKI_IOW('p', 0x07, struct vki_rtc_time)
1778 #define VKI_RTC_ALM_READ _VKI_IOR('p', 0x08, struct vki_rtc_time)
1779 #define VKI_RTC_RD_TIME _VKI_IOR('p', 0x09, struct vki_rtc_time)
1780
1781 #define VKI_RTC_IRQP_READ _VKI_IOR('p', 0x0b, unsigned long)
1782 #define VKI_RTC_IRQP_SET _VKI_IOW('p', 0x0c, unsigned long)
1783
1784
1785
1786
1787
1788
1789
1790 #define VKI_ISDN_MAX_CHANNELS 64
1791
1792 #define VKI_IIOCGETCPS _VKI_IO('I',21)
1793
1794 #define VKI_IIOCNETGPN _VKI_IO('I',34)
1795
1796 #define VKI_ISDN_MSNLEN 32
1797
1798 typedef struct {
1799 char name[10];
1800 char phone[VKI_ISDN_MSNLEN];
1801 int outgoing;
1802 } vki_isdn_net_ioctl_phone;
1803
1804
1805
1806
1807
1808 #define VKI_SIOCOUTQ VKI_TIOCOUTQ
1809
1810 #define VKI_SIOCADDRT 0x890B
1811 #define VKI_SIOCDELRT 0x890C
1812
1813 #define VKI_SIOCGIFNAME 0x8910
1814 #define VKI_SIOCGIFCONF 0x8912
1815 #define VKI_SIOCGIFFLAGS 0x8913
1816 #define VKI_SIOCSIFFLAGS 0x8914
1817 #define VKI_SIOCGIFADDR 0x8915
1818 #define VKI_SIOCSIFADDR 0x8916
1819 #define VKI_SIOCGIFDSTADDR 0x8917
1820 #define VKI_SIOCSIFDSTADDR 0x8918
1821 #define VKI_SIOCGIFBRDADDR 0x8919
1822 #define VKI_SIOCSIFBRDADDR 0x891a
1823 #define VKI_SIOCGIFNETMASK 0x891b
1824 #define VKI_SIOCSIFNETMASK 0x891c
1825 #define VKI_SIOCGIFMETRIC 0x891d
1826 #define VKI_SIOCSIFMETRIC 0x891e
1827 #define VKI_SIOCGIFMTU 0x8921
1828 #define VKI_SIOCSIFMTU 0x8922
1829 #define VKI_SIOCSIFHWADDR 0x8924
1830 #define VKI_SIOCGIFHWADDR 0x8927
1831 #define VKI_SIOCGIFINDEX 0x8933
1832
1833 #define VKI_SIOCGIFTXQLEN 0x8942
1834 #define VKI_SIOCSIFTXQLEN 0x8943
1835
1836 #define VKI_SIOCETHTOOL 0x8946
1837
1838 #define VKI_SIOCGMIIPHY 0x8947
1839 #define VKI_SIOCGMIIREG 0x8948
1840 #define VKI_SIOCSMIIREG 0x8949
1841
1842 #define VKI_SIOCDARP 0x8953
1843 #define VKI_SIOCGARP 0x8954
1844 #define VKI_SIOCSARP 0x8955
1845
1846 #define VKI_SIOCDRARP 0x8960
1847 #define VKI_SIOCGRARP 0x8961
1848 #define VKI_SIOCSRARP 0x8962
1849
1850 #define VKI_SIOCGIFMAP 0x8970
1851 #define VKI_SIOCSIFMAP 0x8971
1852
1853 #define VKI_SIOCSHWTSTAMP 0x89B0
1854
1855
1856
1857
1858
1859 #define VKI_PP_MAJOR 99
1860
1861 #define VKI_PP_IOCTL 'p'
1862
1863
1864 #define VKI_PPSETMODE _VKI_IOW(VKI_PP_IOCTL, 0x80, int)
1865
1866
1867 #define VKI_PPRSTATUS _VKI_IOR(VKI_PP_IOCTL, 0x81, unsigned char)
1868
1869
1870
1871 #define VKI_PPRCONTROL _VKI_IOR(VKI_PP_IOCTL, 0x83, unsigned char)
1872 #define VKI_PPWCONTROL _VKI_IOW(VKI_PP_IOCTL, 0x84, unsigned char)
1873
1874 struct vki_ppdev_frob_struct {
1875 unsigned char mask;
1876 unsigned char val;
1877 };
1878 #define VKI_PPFCONTROL _VKI_IOW(VKI_PP_IOCTL, 0x8e, struct vki_ppdev_frob_struct)
1879
1880
1881 #define VKI_PPRDATA _VKI_IOR(VKI_PP_IOCTL, 0x85, unsigned char)
1882 #define VKI_PPWDATA _VKI_IOW(VKI_PP_IOCTL, 0x86, unsigned char)
1883
1884
1885 #define VKI_PPCLAIM _VKI_IO(VKI_PP_IOCTL, 0x8b)
1886
1887
1888 #define VKI_PPRELEASE _VKI_IO(VKI_PP_IOCTL, 0x8c)
1889
1890
1891
1892 #define VKI_PPYIELD _VKI_IO(VKI_PP_IOCTL, 0x8d)
1893
1894
1895 #define VKI_PPEXCL _VKI_IO(VKI_PP_IOCTL, 0x8f)
1896
1897
1898 #define VKI_PPDATADIR _VKI_IOW(VKI_PP_IOCTL, 0x90, int)
1899
1900
1901 #define VKI_PPNEGOT _VKI_IOW(VKI_PP_IOCTL, 0x91, int)
1902
1903
1904 #define VKI_PPWCTLONIRQ _VKI_IOW(VKI_PP_IOCTL, 0x92, unsigned char)
1905
1906
1907 #define VKI_PPCLRIRQ _VKI_IOR(VKI_PP_IOCTL, 0x93, int)
1908
1909
1910 #define VKI_PPSETPHASE _VKI_IOW(VKI_PP_IOCTL, 0x94, int)
1911
1912
1913 #define VKI_PPGETTIME _VKI_IOR(VKI_PP_IOCTL, 0x95, struct vki_timeval)
1914 #define VKI_PPSETTIME _VKI_IOW(VKI_PP_IOCTL, 0x96, struct vki_timeval)
1915
1916 #define VKI_PPGETMODES _VKI_IOR(VKI_PP_IOCTL, 0x97, unsigned int)
1917
1918 #define VKI_PPGETMODE _VKI_IOR(VKI_PP_IOCTL, 0x98, int)
1919 #define VKI_PPGETPHASE _VKI_IOR(VKI_PP_IOCTL, 0x99, int)
1920
1921 #define VKI_PPGETFLAGS _VKI_IOR(VKI_PP_IOCTL, 0x9a, int)
1922 #define VKI_PPSETFLAGS _VKI_IOW(VKI_PP_IOCTL, 0x9b, int)
1923
1924
1925
1926
1927
1928 #define VKI_LO_NAME_SIZE 64
1929 #define VKI_LO_KEY_SIZE 32
1930
1931 struct vki_loop_info {
1932
1933 int lo_number;
1934 unsigned short lo_device;
1935 unsigned long lo_inode;
1936 unsigned short lo_rdevice;
1937 int lo_offset;
1938 int lo_encrypt_type;
1939 int lo_encrypt_key_size;
1940 int lo_flags;
1941 char lo_name[VKI_LO_NAME_SIZE];
1942 unsigned char lo_encrypt_key[VKI_LO_KEY_SIZE];
1943 unsigned long lo_init[2];
1944 char reserved[4];
1945 };
1946
1947 struct vki_loop_info64 {
1948 __vki_u64 lo_device;
1949 __vki_u64 lo_inode;
1950 __vki_u64 lo_rdevice;
1951 __vki_u64 lo_offset;
1952 __vki_u64 lo_sizelimit;
1953 __vki_u32 lo_number;
1954 __vki_u32 lo_encrypt_type;
1955 __vki_u32 lo_encrypt_key_size;
1956 __vki_u32 lo_flags;
1957 __vki_u8 lo_file_name[VKI_LO_NAME_SIZE];
1958 __vki_u8 lo_crypt_name[VKI_LO_NAME_SIZE];
1959 __vki_u8 lo_encrypt_key[VKI_LO_KEY_SIZE];
1960 __vki_u64 lo_init[2];
1961 };
1962
1963
1964 #define VKI_LOOP_SET_FD 0x4C00
1965 #define VKI_LOOP_CLR_FD 0x4C01
1966 #define VKI_LOOP_SET_STATUS 0x4C02
1967 #define VKI_LOOP_GET_STATUS 0x4C03
1968 #define VKI_LOOP_SET_STATUS64 0x4C04
1969 #define VKI_LOOP_GET_STATUS64 0x4C05
1970 #define VKI_LOOP_CHANGE_FD 0x4C06
1971 #define VKI_LOOP_SET_CAPACITY 0x4C07
1972 #define VKI_LOOP_SET_DIRECT_IO 0x4C08
1973 #define VKI_LOOP_SET_BLOCK_SIZE 0x4C09
1974
1975
1976 #define VKI_LOOP_CTL_ADD 0x4C80
1977 #define VKI_LOOP_CTL_REMOVE 0x4C81
1978 #define VKI_LOOP_CTL_GET_FREE 0x4C82
1979
1980
1981
1982
1983
1984 #define VKI_BLKROSET _VKI_IO(0x12,93)
1985 #define VKI_BLKROGET _VKI_IO(0x12,94)
1986 #define VKI_BLKRRPART _VKI_IO(0x12,95)
1987 #define VKI_BLKGETSIZE _VKI_IO(0x12,96)
1988 #define VKI_BLKFLSBUF _VKI_IO(0x12,97)
1989 #define VKI_BLKRASET _VKI_IO(0x12,98)
1990 #define VKI_BLKRAGET _VKI_IO(0x12,99)
1991 #define VKI_BLKFRASET _VKI_IO(0x12,100)
1992 #define VKI_BLKFRAGET _VKI_IO(0x12,101)
1993 #define VKI_BLKSECTSET _VKI_IO(0x12,102)
1994 #define VKI_BLKSECTGET _VKI_IO(0x12,103)
1995 #define VKI_BLKSSZGET _VKI_IO(0x12,104)
1996 #define VKI_BLKBSZGET _VKI_IOR(0x12,112,vki_size_t)
1997 #define VKI_BLKBSZSET _VKI_IOW(0x12,113,vki_size_t)
1998 #define VKI_BLKGETSIZE64 _VKI_IOR(0x12,114,vki_size_t)
1999 #define VKI_BLKDISCARD _VKI_IO(0x12,119)
2000 #define VKI_BLKIOMIN _VKI_IO(0x12,120)
2001 #define VKI_BLKIOOPT _VKI_IO(0x12,121)
2002 #define VKI_BLKALIGNOFF _VKI_IO(0x12,122)
2003 #define VKI_BLKPBSZGET _VKI_IO(0x12,123)
2004 #define VKI_BLKDISCARDZEROES _VKI_IO(0x12,124)
2005 #define VKI_BLKZEROOUT _VKI_IO(0x12,127)
2006
2007 #define VKI_FIBMAP _VKI_IO(0x00,1)
2008 #define VKI_FIGETBSZ _VKI_IO(0x00,2)
2009 #define VKI_FICLONE _VKI_IOW(0x94, 9, int)
2010
2011
2012
2013
2014
2015 typedef struct vki_sg_io_hdr
2016 {
2017 int interface_id;
2018 int dxfer_direction;
2019 unsigned char cmd_len;
2020 unsigned char mx_sb_len;
2021 unsigned short iovec_count;
2022 unsigned int dxfer_len;
2023 void __user *dxferp;
2024
2025 unsigned char __user *cmdp;
2026 void __user *sbp;
2027 unsigned int timeout;
2028 unsigned int flags;
2029 int pack_id;
2030 void __user * usr_ptr;
2031 unsigned char status;
2032 unsigned char masked_status;
2033 unsigned char msg_status;
2034 unsigned char sb_len_wr;
2035 unsigned short host_status;
2036 unsigned short driver_status;
2037 int resid;
2038 unsigned int duration;
2039 unsigned int info;
2040 } vki_sg_io_hdr_t;
2041
2042 #define VKI_SG_DXFER_NONE -1
2043 #define VKI_SG_DXFER_TO_DEV -2
2044 #define VKI_SG_DXFER_FROM_DEV -3
2045 #define VKI_SG_DXFER_TO_FROM_DEV -4
2046
2047
2048
2049
2050 typedef struct vki_sg_scsi_id {
2051 int host_no;
2052 int channel;
2053 int scsi_id;
2054 int lun;
2055 int scsi_type;
2056 short h_cmd_per_lun;
2057 short d_queue_depth;
2058 int unused[2];
2059 } vki_sg_scsi_id_t;
2060
2061 #define VKI_SG_EMULATED_HOST 0x2203
2062
2063 #define VKI_SG_SET_RESERVED_SIZE 0x2275
2064 #define VKI_SG_GET_RESERVED_SIZE 0x2272
2065
2066 #define VKI_SG_GET_SCSI_ID 0x2276
2067
2068 #define VKI_SG_GET_SG_TABLESIZE 0x227F
2069
2070 #define VKI_SG_GET_VERSION_NUM 0x2282
2071
2072 #define VKI_SG_IO 0x2285
2073
2074 #define VKI_SG_SET_TIMEOUT 0x2201
2075 #define VKI_SG_GET_TIMEOUT 0x2202
2076
2077
2078 #define VKI_SG_SET_COMMAND_Q 0x2271
2079
2080
2081
2082
2083
2084 #define VKI_SCSI_IOCTL_DOORLOCK 0x5380
2085 #define VKI_SCSI_IOCTL_DOORUNLOCK 0x5381
2086 #define VKI_SCSI_IOCTL_GET_IDLUN 0x5382
2087 #define VKI_SCSI_IOCTL_GET_BUS_NUMBER 0x5386
2088
2089 struct vki_scsi_idlun {
2090 __vki_u32 dev_id;
2091 __vki_u32 host_unique_id;
2092 };
2093
2094
2095
2096
2097
2098 #define VKI_CDROMPLAYMSF 0x5303
2099 #define VKI_CDROMREADTOCHDR 0x5305
2100
2101 #define VKI_CDROMREADTOCENTRY 0x5306
2102
2103 #define VKI_CDROMSTOP 0x5307
2104 #define VKI_CDROMSUBCHNL 0x530b
2105
2106 #define VKI_CDROMREADMODE2 0x530c
2107
2108 #define VKI_CDROMREADMODE1 0x530d
2109
2110 #define VKI_CDROMREADAUDIO 0x530e
2111 #define VKI_CDROMMULTISESSION 0x5310
2112
2113
2114 #define VKI_CDROM_GET_MCN 0x5311
2115
2116 #define VKI_CDROMVOLREAD 0x5313
2117
2118 #define VKI_CDROMREADRAW 0x5314
2119
2120 #define VKI_CDROM_CLEAR_OPTIONS 0x5321
2121 #define VKI_CDROM_DRIVE_STATUS 0x5326
2122 #define VKI_CDROM_DISC_STATUS 0x5327
2123 #define VKI_CDROM_GET_CAPABILITY 0x5331
2124
2125 #define VKI_DVD_READ_STRUCT 0x5390
2126 #define VKI_CDROM_SEND_PACKET 0x5393
2127
2128 struct vki_cdrom_msf0
2129 {
2130 __vki_u8 minute;
2131 __vki_u8 second;
2132 __vki_u8 frame;
2133 };
2134
2135 union vki_cdrom_addr
2136 {
2137 struct vki_cdrom_msf0 msf;
2138 int lba;
2139 };
2140
2141 struct vki_cdrom_msf
2142 {
2143 __vki_u8 cdmsf_min0;
2144 __vki_u8 cdmsf_sec0;
2145 __vki_u8 cdmsf_frame0;
2146 __vki_u8 cdmsf_min1;
2147 __vki_u8 cdmsf_sec1;
2148 __vki_u8 cdmsf_frame1;
2149 };
2150
2151 struct vki_cdrom_tochdr
2152 {
2153 __vki_u8 cdth_trk0;
2154 __vki_u8 cdth_trk1;
2155 };
2156
2157 struct vki_cdrom_volctrl
2158 {
2159 __vki_u8 channel0;
2160 __vki_u8 channel1;
2161 __vki_u8 channel2;
2162 __vki_u8 channel3;
2163 };
2164
2165 struct vki_cdrom_subchnl
2166 {
2167 __vki_u8 cdsc_format;
2168 __vki_u8 cdsc_audiostatus;
2169 __vki_u8 cdsc_adr: 4;
2170 __vki_u8 cdsc_ctrl: 4;
2171 __vki_u8 cdsc_trk;
2172 __vki_u8 cdsc_ind;
2173 union vki_cdrom_addr cdsc_absaddr;
2174 union vki_cdrom_addr cdsc_reladdr;
2175 };
2176
2177 struct vki_cdrom_tocentry
2178 {
2179 __vki_u8 cdte_track;
2180 __vki_u8 cdte_adr :4;
2181 __vki_u8 cdte_ctrl :4;
2182 __vki_u8 cdte_format;
2183 union vki_cdrom_addr cdte_addr;
2184 __vki_u8 cdte_datamode;
2185 };
2186
2187 struct vki_cdrom_read
2188 {
2189 int cdread_lba;
2190 char *cdread_bufaddr;
2191 int cdread_buflen;
2192 };
2193
2194 struct vki_cdrom_read_audio
2195 {
2196 union vki_cdrom_addr addr;
2197 __vki_u8 addr_format;
2198 int nframes;
2199 __vki_u8 __user *buf;
2200 };
2201
2202 struct vki_cdrom_multisession
2203 {
2204 union vki_cdrom_addr addr;
2205
2206
2207 __vki_u8 xa_flag;
2208 __vki_u8 addr_format;
2209 };
2210
2211 struct vki_cdrom_mcn
2212 {
2213 __vki_u8 medium_catalog_number[14];
2214 };
2215
2216 #define VKI_CDROM_PACKET_SIZE 12
2217
2218 struct vki_cdrom_generic_command
2219 {
2220 unsigned char cmd[VKI_CDROM_PACKET_SIZE];
2221 unsigned char __user *buffer;
2222 unsigned int buflen;
2223 int stat;
2224
2225 void__user *sense;
2226 unsigned char data_direction;
2227 int quiet;
2228 int timeout;
2229 void __user *reserved[1];
2230 };
2231
2232 #define VKI_CD_SYNC_SIZE 12
2233 #define VKI_CD_HEAD_SIZE 4
2234 #define VKI_CD_FRAMESIZE_RAW 2352
2235 #define VKI_CD_FRAMESIZE_RAW0 (VKI_CD_FRAMESIZE_RAW-VKI_CD_SYNC_SIZE-VKI_CD_HEAD_SIZE)
2236 #define VKI_CD_FRAMESIZE_RAW1 2048
2237
2238
2239
2240
2241
2242 #ifndef _VKI_SIOWR
2243 #if defined(_VKI_IOWR) && (defined(_AIX) || (!defined(sun) && !defined(sparc) && !defined(__sparc__) && !defined(__INCioctlh) && !defined(__Lynx__)))
2244
2245 #define _VKI_SIO _VKI_IO
2246 #define _VKI_SIOR _VKI_IOR
2247 #define _VKI_SIOW _VKI_IOW
2248 #define _VKI_SIOWR _VKI_IOWR
2249 #else
2250
2251 #error Valgrind: Cannot handle sparc/sun case yet...
2252 # endif
2253 #endif
2254
2255 #define VKI_SNDCTL_SEQ_CTRLRATE _VKI_SIOWR('Q', 3, int)
2256 #define VKI_SNDCTL_SEQ_GETOUTCOUNT _VKI_SIOR ('Q', 4, int)
2257 #define VKI_SNDCTL_SEQ_GETINCOUNT _VKI_SIOR ('Q', 5, int)
2258 #define VKI_SNDCTL_SEQ_PERCMODE _VKI_SIOW ('Q', 6, int)
2259 #define VKI_SNDCTL_SEQ_TESTMIDI _VKI_SIOW ('Q', 8, int)
2260 #define VKI_SNDCTL_SEQ_RESETSAMPLES _VKI_SIOW ('Q', 9, int)
2261 #define VKI_SNDCTL_SEQ_NRSYNTHS _VKI_SIOR ('Q',10, int)
2262 #define VKI_SNDCTL_SEQ_NRMIDIS _VKI_SIOR ('Q',11, int)
2263 #define VKI_SNDCTL_SEQ_GETTIME _VKI_SIOR ('Q',19, int)
2264
2265 #define VKI_SNDCTL_TMR_TIMEBASE _VKI_SIOWR('T', 1, int)
2266 #define VKI_SNDCTL_TMR_TEMPO _VKI_SIOWR('T', 5, int)
2267 #define VKI_SNDCTL_TMR_SOURCE _VKI_SIOWR('T', 6, int)
2268
2269 #define VKI_SNDCTL_MIDI_PRETIME _VKI_SIOWR('m', 0, int)
2270 #define VKI_SNDCTL_MIDI_MPUMODE _VKI_SIOWR('m', 1, int)
2271
2272 #define VKI_SNDCTL_DSP_RESET _VKI_SIO ('P', 0)
2273 #define VKI_SNDCTL_DSP_SYNC _VKI_SIO ('P', 1)
2274 #define VKI_SNDCTL_DSP_SPEED _VKI_SIOWR('P', 2, int)
2275 #define VKI_SNDCTL_DSP_STEREO _VKI_SIOWR('P', 3, int)
2276 #define VKI_SNDCTL_DSP_GETBLKSIZE _VKI_SIOWR('P', 4, int)
2277 #define VKI_SNDCTL_DSP_CHANNELS _VKI_SIOWR('P', 6, int)
2278 #define VKI_SOUND_PCM_WRITE_FILTER _VKI_SIOWR('P', 7, int)
2279 #define VKI_SNDCTL_DSP_POST _VKI_SIO ('P', 8)
2280 #define VKI_SNDCTL_DSP_SUBDIVIDE _VKI_SIOWR('P', 9, int)
2281 #define VKI_SNDCTL_DSP_SETFRAGMENT _VKI_SIOWR('P',10, int)
2282
2283 #define VKI_SNDCTL_DSP_GETFMTS _VKI_SIOR ('P',11, int)
2284 #define VKI_SNDCTL_DSP_SETFMT _VKI_SIOWR('P', 5, int)
2285
2286 typedef struct vki_audio_buf_info {
2287 int fragments;
2288 int fragstotal;
2289 int fragsize;
2290
2291 int bytes;
2292
2293 } vki_audio_buf_info;
2294
2295 #define VKI_SNDCTL_DSP_GETOSPACE _VKI_SIOR ('P',12, vki_audio_buf_info)
2296 #define VKI_SNDCTL_DSP_GETISPACE _VKI_SIOR ('P',13, vki_audio_buf_info)
2297 #define VKI_SNDCTL_DSP_NONBLOCK _VKI_SIO ('P',14)
2298 #define VKI_SNDCTL_DSP_GETCAPS _VKI_SIOR ('P',15, int)
2299
2300 #define VKI_SNDCTL_DSP_GETTRIGGER _VKI_SIOR ('P',16, int)
2301 #define VKI_SNDCTL_DSP_SETTRIGGER _VKI_SIOW ('P',16, int)
2302
2303 #define VKI_SNDCTL_DSP_SETSYNCRO _VKI_SIO ('P', 21)
2304 #define VKI_SNDCTL_DSP_SETDUPLEX _VKI_SIO ('P', 22)
2305 #define VKI_SNDCTL_DSP_GETODELAY _VKI_SIOR ('P', 23, int)
2306
2307 #define VKI_SNDCTL_DSP_GETCHANNELMASK _VKI_SIOWR('P', 64, int)
2308 #define VKI_SNDCTL_DSP_BIND_CHANNEL _VKI_SIOWR('P', 65, int)
2309
2310 #define VKI_SNDCTL_DSP_SETSPDIF _VKI_SIOW ('P', 66, int)
2311 #define VKI_SNDCTL_DSP_GETSPDIF _VKI_SIOR ('P', 67, int)
2312
2313 #define VKI_SOUND_PCM_READ_RATE _VKI_SIOR ('P', 2, int)
2314 #define VKI_SOUND_PCM_READ_CHANNELS _VKI_SIOR ('P', 6, int)
2315 #define VKI_SOUND_PCM_READ_BITS _VKI_SIOR ('P', 5, int)
2316 #define VKI_SOUND_PCM_READ_FILTER _VKI_SIOR ('P', 7, int)
2317
2318
2319
2320
2321
2322
2323 struct vki_hd_geometry {
2324 unsigned char heads;
2325 unsigned char sectors;
2326 unsigned short cylinders;
2327 unsigned long start;
2328 };
2329
2330 #define VKI_HDIO_GETGEO 0x0301
2331 #define VKI_HDIO_GET_DMA 0x030b
2332 #define VKI_HDIO_GET_IDENTITY 0x030d
2333
2334
2335
2336 #define VKI_SIZEOF_STRUCT_HD_DRIVEID 512
2337
2338
2339
2340
2341
2342 #define VKI_FBIOGET_VSCREENINFO 0x4600
2343 #define VKI_FBIOPUT_VSCREENINFO 0x4601
2344 #define VKI_FBIOGET_FSCREENINFO 0x4602
2345 #define VKI_FBIOPAN_DISPLAY 0x4606
2346
2347 struct vki_fb_fix_screeninfo {
2348 char id[16];
2349 unsigned long smem_start;
2350
2351 __vki_u32 smem_len;
2352 __vki_u32 type;
2353 __vki_u32 type_aux;
2354 __vki_u32 visual;
2355 __vki_u16 xpanstep;
2356 __vki_u16 ypanstep;
2357 __vki_u16 ywrapstep;
2358 __vki_u32 line_length;
2359 unsigned long mmio_start;
2360
2361 __vki_u32 mmio_len;
2362 __vki_u32 accel;
2363
2364 __vki_u16 reserved[3];
2365 };
2366
2367 struct vki_fb_bitfield {
2368 __vki_u32 offset;
2369 __vki_u32 length;
2370 __vki_u32 msb_right;
2371
2372 };
2373
2374 struct vki_fb_var_screeninfo {
2375 __vki_u32 xres;
2376 __vki_u32 yres;
2377 __vki_u32 xres_virtual;
2378 __vki_u32 yres_virtual;
2379 __vki_u32 xoffset;
2380 __vki_u32 yoffset;
2381
2382 __vki_u32 bits_per_pixel;
2383 __vki_u32 grayscale;
2384
2385 struct vki_fb_bitfield red;
2386 struct vki_fb_bitfield green;
2387 struct vki_fb_bitfield blue;
2388 struct vki_fb_bitfield transp;
2389
2390 __vki_u32 nonstd;
2391
2392 __vki_u32 activate;
2393
2394 __vki_u32 height;
2395 __vki_u32 width;
2396
2397 __vki_u32 accel_flags;
2398
2399
2400 __vki_u32 pixclock;
2401 __vki_u32 left_margin;
2402 __vki_u32 right_margin;
2403 __vki_u32 upper_margin;
2404 __vki_u32 lower_margin;
2405 __vki_u32 hsync_len;
2406 __vki_u32 vsync_len;
2407 __vki_u32 sync;
2408 __vki_u32 vmode;
2409 __vki_u32 rotate;
2410 __vki_u32 reserved[5];
2411 };
2412
2413
2414
2415
2416
2417 #define VKI_GIO_FONT 0x4B60
2418 #define VKI_PIO_FONT 0x4B61
2419
2420 #define VKI_GIO_FONTX 0x4B6B
2421 #define VKI_PIO_FONTX 0x4B6C
2422 struct vki_consolefontdesc {
2423 unsigned short charcount;
2424 unsigned short charheight;
2425 char __user *chardata;
2426 };
2427
2428 #define VKI_PIO_FONTRESET 0x4B6D
2429
2430 #define VKI_GIO_CMAP 0x4B70
2431 #define VKI_PIO_CMAP 0x4B71
2432
2433 #define VKI_KIOCSOUND 0x4B2F
2434 #define VKI_KDMKTONE 0x4B30
2435
2436 #define VKI_KDGETLED 0x4B31
2437 #define VKI_KDSETLED 0x4B32
2438
2439 #define VKI_KDGKBTYPE 0x4B33
2440
2441 #define VKI_KDADDIO 0x4B34
2442 #define VKI_KDDELIO 0x4B35
2443 #define VKI_KDENABIO 0x4B36
2444 #define VKI_KDDISABIO 0x4B37
2445
2446 #define VKI_KDSETMODE 0x4B3A
2447 #define VKI_KDGETMODE 0x4B3B
2448
2449 #define VKI_KDMAPDISP 0x4B3C
2450 #define VKI_KDUNMAPDISP 0x4B3D
2451
2452 #define VKI_E_TABSZ 256
2453 #define VKI_GIO_SCRNMAP 0x4B40
2454 #define VKI_PIO_SCRNMAP 0x4B41
2455 #define VKI_GIO_UNISCRNMAP 0x4B69
2456 #define VKI_PIO_UNISCRNMAP 0x4B6A
2457
2458 #define VKI_GIO_UNIMAP 0x4B66
2459 struct vki_unipair {
2460 unsigned short unicode;
2461 unsigned short fontpos;
2462 };
2463 struct vki_unimapdesc {
2464 unsigned short entry_ct;
2465 struct vki_unipair __user *entries;
2466 };
2467 #define VKI_PIO_UNIMAP 0x4B67
2468 #define VKI_PIO_UNIMAPCLR 0x4B68
2469 struct vki_unimapinit {
2470 unsigned short advised_hashsize;
2471 unsigned short advised_hashstep;
2472 unsigned short advised_hashlevel;
2473 };
2474
2475 #define VKI_KDGKBMODE 0x4B44
2476 #define VKI_KDSKBMODE 0x4B45
2477
2478 #define VKI_KDGKBMETA 0x4B62
2479 #define VKI_KDSKBMETA 0x4B63
2480
2481 #define VKI_KDGKBLED 0x4B64
2482 #define VKI_KDSKBLED 0x4B65
2483
2484 struct vki_kbentry {
2485 unsigned char kb_table;
2486 unsigned char kb_index;
2487 unsigned short kb_value;
2488 };
2489 #define VKI_KDGKBENT 0x4B46
2490 #define VKI_KDSKBENT 0x4B47
2491
2492 struct vki_kbsentry {
2493 unsigned char kb_func;
2494 unsigned char kb_string[512];
2495 };
2496 #define VKI_KDGKBSENT 0x4B48
2497 #define VKI_KDSKBSENT 0x4B49
2498
2499 struct vki_kbdiacr {
2500 unsigned char diacr, base, result;
2501 };
2502 struct vki_kbdiacrs {
2503 unsigned int kb_cnt;
2504 struct vki_kbdiacr kbdiacr[256];
2505 };
2506 #define VKI_KDGKBDIACR 0x4B4A
2507 #define VKI_KDSKBDIACR 0x4B4B
2508
2509 struct vki_kbkeycode {
2510 unsigned int scancode, keycode;
2511 };
2512 #define VKI_KDGETKEYCODE 0x4B4C
2513 #define VKI_KDSETKEYCODE 0x4B4D
2514
2515 #define VKI_KDSIGACCEPT 0x4B4E
2516
2517 struct vki_kbd_repeat {
2518 int delay;
2519 int period;
2520
2521 };
2522 #define VKI_KDKBDREP 0x4B52
2523
2524
2525 #define VKI_KDFONTOP 0x4B72
2526
2527 struct vki_console_font_op {
2528 unsigned int op;
2529 unsigned int flags;
2530 unsigned int width, height;
2531 unsigned int charcount;
2532 unsigned char __user *data;
2533 };
2534
2535 #define VKI_KD_FONT_OP_SET 0
2536 #define VKI_KD_FONT_OP_GET 1
2537 #define VKI_KD_FONT_OP_SET_DEFAULT 2
2538 #define VKI_KD_FONT_OP_COPY 3
2539
2540
2541
2542
2543
2544 typedef __vki_kernel_uid32_t vki_qid_t;
2545
2546
2547
2548
2549
2550 #define VKI_PTRACE_TRACEME 0
2551 #define VKI_PTRACE_PEEKTEXT 1
2552 #define VKI_PTRACE_PEEKDATA 2
2553 #define VKI_PTRACE_PEEKUSR 3
2554 #define VKI_PTRACE_POKEUSR 6
2555
2556 #define VKI_PTRACE_DETACH 17
2557
2558 #define VKI_PTRACE_GETEVENTMSG 0x4201
2559 #define VKI_PTRACE_GETSIGINFO 0x4202
2560 #define VKI_PTRACE_SETSIGINFO 0x4203
2561 #define VKI_PTRACE_GETREGSET 0x4204
2562 #define VKI_PTRACE_SETREGSET 0x4205
2563
2564 #define VKI_PT_PTRACED 0x00000001
2565
2566
2567
2568
2569
2570 enum {
2571 VKI_SNDRV_PCM_IOCTL_HW_FREE = _VKI_IO('A', 0x12),
2572 VKI_SNDRV_PCM_IOCTL_HWSYNC = _VKI_IO('A', 0x22),
2573 VKI_SNDRV_PCM_IOCTL_PREPARE = _VKI_IO('A', 0x40),
2574 VKI_SNDRV_PCM_IOCTL_RESET = _VKI_IO('A', 0x41),
2575 VKI_SNDRV_PCM_IOCTL_START = _VKI_IO('A', 0x42),
2576 VKI_SNDRV_PCM_IOCTL_DROP = _VKI_IO('A', 0x43),
2577 VKI_SNDRV_PCM_IOCTL_DRAIN = _VKI_IO('A', 0x44),
2578 VKI_SNDRV_PCM_IOCTL_PAUSE = _VKI_IOW('A', 0x45, int),
2579 VKI_SNDRV_PCM_IOCTL_RESUME = _VKI_IO('A', 0x47),
2580 VKI_SNDRV_PCM_IOCTL_XRUN = _VKI_IO('A', 0x48),
2581 VKI_SNDRV_PCM_IOCTL_LINK = _VKI_IOW('A', 0x60, int),
2582 VKI_SNDRV_PCM_IOCTL_UNLINK = _VKI_IO('A', 0x61),
2583 };
2584
2585 enum {
2586 VKI_SNDRV_TIMER_IOCTL_START = _VKI_IO('T', 0xa0),
2587 VKI_SNDRV_TIMER_IOCTL_STOP = _VKI_IO('T', 0xa1),
2588 VKI_SNDRV_TIMER_IOCTL_CONTINUE = _VKI_IO('T', 0xa2),
2589 VKI_SNDRV_TIMER_IOCTL_PAUSE = _VKI_IO('T', 0xa3),
2590 };
2591
2592 struct vki_snd_ctl_card_info {
2593 int card;
2594 int pad;
2595 unsigned char id[16];
2596 unsigned char driver[16];
2597 unsigned char name[32];
2598 unsigned char longname[80];
2599 unsigned char reserved_[16];
2600 unsigned char mixername[80];
2601 unsigned char components[128];
2602 };
2603
2604 typedef int vki_snd_ctl_elem_iface_t;
2605 #define VKI_SNDRV_CTL_ELEM_IFACE_CARD ((vki_snd_ctl_elem_iface_t) 0)
2606 #define VKI_SNDRV_CTL_ELEM_IFACE_HWDEP ((vki_snd_ctl_elem_iface_t) 1)
2607 #define VKI_SNDRV_CTL_ELEM_IFACE_MIXER ((vki_snd_ctl_elem_iface_t) 2)
2608 #define VKI_SNDRV_CTL_ELEM_IFACE_PCM ((vki_snd_ctl_elem_iface_t) 3)
2609 #define VKI_SNDRV_CTL_ELEM_IFACE_RAWMIDI ((vki_snd_ctl_elem_iface_t) 4)
2610 #define VKI_SNDRV_CTL_ELEM_IFACE_TIMER ((vki_snd_ctl_elem_iface_t) 5)
2611 #define VKI_SNDRV_CTL_ELEM_IFACE_SEQUENCER ((vki_snd_ctl_elem_iface_t) 6)
2612 #define VKI_SNDRV_CTL_ELEM_IFACE_LAST VKI_SNDRV_CTL_ELEM_IFACE_SEQUENCER
2613
2614 struct vki_snd_ctl_elem_id {
2615 unsigned int numid;
2616 vki_snd_ctl_elem_iface_t iface;
2617 unsigned int device;
2618 unsigned int subdevice;
2619 unsigned char name[44];
2620 unsigned int index;
2621 };
2622
2623 struct vki_snd_ctl_elem_list {
2624 unsigned int offset;
2625 unsigned int space;
2626 unsigned int used;
2627 unsigned int count;
2628 struct vki_snd_ctl_elem_id __user *pids;
2629 unsigned char reserved[50];
2630 };
2631
2632 struct vki_snd_ctl_tlv {
2633 unsigned int numid;
2634 unsigned int length;
2635 unsigned int tlv[0];
2636 };
2637
2638 #define VKI_SNDRV_CTL_IOCTL_PVERSION _VKI_IOR('U', 0x00, int)
2639 #define VKI_SNDRV_CTL_IOCTL_CARD_INFO _VKI_IOR('U', 0x01, struct vki_snd_ctl_card_info)
2640 #define VKI_SNDRV_CTL_IOCTL_ELEM_LIST _VKI_IOWR('U', 0x10, struct vki_snd_ctl_elem_list)
2641 #define VKI_SNDRV_CTL_IOCTL_TLV_READ _VKI_IOWR('U', 0x1a, struct vki_snd_ctl_tlv)
2642 #define VKI_SNDRV_CTL_IOCTL_TLV_WRITE _VKI_IOWR('U', 0x1b, struct vki_snd_ctl_tlv)
2643 #define VKI_SNDRV_CTL_IOCTL_TLV_COMMAND _VKI_IOWR('U', 0x1c, struct vki_snd_ctl_tlv)
2644
2645
2646
2647
2648
2649 struct vki_serial_icounter_struct {
2650 int cts, dsr, rng, dcd;
2651 int rx, tx;
2652 int frame, overrun, parity, brk;
2653 int buf_overrun;
2654 int reserved[9];
2655 };
2656
2657
2658
2659
2660
2661 #define VKI_VT_OPENQRY 0x5600
2662
2663 struct vki_vt_mode {
2664 char mode;
2665 char waitv;
2666 short relsig;
2667 short acqsig;
2668 short frsig;
2669 };
2670 #define VKI_VT_GETMODE 0x5601
2671 #define VKI_VT_SETMODE 0x5602
2672
2673 struct vki_vt_stat {
2674 unsigned short v_active;
2675 unsigned short v_signal;
2676 unsigned short v_state;
2677 };
2678 #define VKI_VT_GETSTATE 0x5603
2679 #define VKI_VT_SENDSIG 0x5604
2680
2681 #define VKI_VT_RELDISP 0x5605
2682
2683 #define VKI_VT_ACTIVATE 0x5606
2684 #define VKI_VT_WAITACTIVE 0x5607
2685 #define VKI_VT_DISALLOCATE 0x5608
2686
2687 struct vki_vt_sizes {
2688 unsigned short v_rows;
2689 unsigned short v_cols;
2690 unsigned short v_scrollsize;
2691 };
2692 #define VKI_VT_RESIZE 0x5609
2693
2694 struct vki_vt_consize {
2695 unsigned short v_rows;
2696 unsigned short v_cols;
2697 unsigned short v_vlin;
2698 unsigned short v_clin;
2699 unsigned short v_vcol;
2700 unsigned short v_ccol;
2701 };
2702 #define VKI_VT_RESIZEX 0x560A
2703 #define VKI_VT_LOCKSWITCH 0x560B
2704 #define VKI_VT_UNLOCKSWITCH 0x560C
2705
2706
2707
2708
2709
2710 #define VKI_PR_SET_PDEATHSIG 1
2711 #define VKI_PR_GET_PDEATHSIG 2
2712
2713 #define VKI_PR_GET_DUMPABLE 3
2714 #define VKI_PR_SET_DUMPABLE 4
2715
2716 #define VKI_PR_GET_UNALIGN 5
2717 #define VKI_PR_SET_UNALIGN 6
2718 # define VKI_PR_UNALIGN_NOPRINT 1
2719 # define VKI_PR_UNALIGN_SIGBUS 2
2720
2721 #define VKI_PR_GET_KEEPCAPS 7
2722 #define VKI_PR_SET_KEEPCAPS 8
2723
2724 #define VKI_PR_GET_FPEMU 9
2725 #define VKI_PR_SET_FPEMU 10
2726 # define VKI_PR_FPEMU_NOPRINT 1
2727 # define VKI_PR_FPEMU_SIGFPE 2
2728
2729 #define VKI_PR_GET_FPEXC 11
2730 #define VKI_PR_SET_FPEXC 12
2731 # define VKI_PR_FP_EXC_SW_ENABLE 0x80
2732 # define VKI_PR_FP_EXC_DIV 0x010000
2733 # define VKI_PR_FP_EXC_OVF 0x020000
2734 # define VKI_PR_FP_EXC_UND 0x040000
2735 # define VKI_PR_FP_EXC_RES 0x080000
2736 # define VKI_PR_FP_EXC_INV 0x100000
2737 # define VKI_PR_FP_EXC_DISABLED 0
2738 # define VKI_PR_FP_EXC_NONRECOV 1
2739 # define VKI_PR_FP_EXC_ASYNC 2
2740 # define VKI_PR_FP_EXC_PRECISE 3
2741
2742 #define VKI_PR_GET_TIMING 13
2743 #define VKI_PR_SET_TIMING 14
2744 # define VKI_PR_TIMING_STATISTICAL 0
2745
2746 # define VKI_PR_TIMING_TIMESTAMP 1
2747
2748
2749 #define VKI_PR_SET_NAME 15
2750 #define VKI_PR_GET_NAME 16
2751
2752 #define VKI_PR_GET_ENDIAN 19
2753 #define VKI_PR_SET_ENDIAN 20
2754 # define VKI_PR_ENDIAN_BIG 0
2755 # define VKI_PR_ENDIAN_LITTLE 1
2756 # define VKI_PR_ENDIAN_PPC_LITTLE 2
2757
2758 #define VKI_PR_SET_SECCOMP 22
2759
2760 #define VKI_PR_CAPBSET_READ 23
2761 #define VKI_PR_CAPBSET_DROP 24
2762
2763 #define VKI_PR_GET_TSC 25
2764 #define VKI_PR_SET_TSC 26
2765
2766 #define VKI_PR_GET_SECUREBITS 27
2767 #define VKI_PR_SET_SECUREBITS 28
2768
2769 #define VKI_PR_SET_TIMERSLACK 29
2770 #define VKI_PR_GET_TIMERSLACK 30
2771
2772 #define VKI_PR_TASK_PERF_EVENTS_DISABLE 31
2773 #define VKI_PR_TASK_PERF_EVENTS_ENABLE 32
2774
2775 #define VKI_PR_MCE_KILL 33
2776 #define VKI_PR_MCE_KILL_GET 34
2777
2778 #define VKI_PR_SET_PTRACER 0x59616d61
2779
2780 #define VKI_PR_SET_CHILD_SUBREAPER 36
2781 #define VKI_PR_GET_CHILD_SUBREAPER 37
2782
2783 #define VKI_PR_SET_NO_NEW_PRIVS 38
2784 #define VKI_PR_GET_NO_NEW_PRIVS 39
2785
2786 #define VKI_PR_GET_TID_ADDRESS 40
2787
2788 #define VKI_PR_SET_THP_DISABLE 41
2789 #define VKI_PR_GET_THP_DISABLE 42
2790
2791 #define VKI_PR_MPX_ENABLE_MANAGEMENT 43
2792 #define VKI_PR_MPX_DISABLE_MANAGEMENT 44
2793
2794 #define VKI_PR_SET_FP_MODE 45
2795 #define VKI_PR_GET_FP_MODE 46
2796
2797 #define VKI_PR_CAP_AMBIENT 47
2798
2799 #define VKI_PR_SVE_SET_VL 50
2800 #define VKI_PR_SVE_GET_VL 51
2801 #define VKI_PR_GET_SPECULATION_CTRL 52
2802 #define VKI_PR_SET_SPECULATION_CTRL 53
2803 #define VKI_PR_PAC_RESET_KEYS 54
2804 #define VKI_PR_SET_TAGGED_ADDR_CTRL 55
2805 #define VKI_PR_GET_TAGGED_ADDR_CTRL 56
2806
2807
2808
2809
2810
2811 struct vki_usbdevfs_ctrltransfer {
2812 __vki_u8 bRequestType;
2813 __vki_u8 bRequest;
2814 __vki_u16 wValue;
2815 __vki_u16 wIndex;
2816 __vki_u16 wLength;
2817 __vki_u32 timeout;
2818 void __user *data;
2819 };
2820
2821 struct vki_usbdevfs_bulktransfer {
2822 unsigned int ep;
2823 unsigned int len;
2824 unsigned int timeout;
2825 void __user *data;
2826 };
2827
2828 #define VKI_USBDEVFS_MAXDRIVERNAME 255
2829
2830 struct vki_usbdevfs_getdriver {
2831 unsigned int interface;
2832 char driver[VKI_USBDEVFS_MAXDRIVERNAME + 1];
2833 };
2834
2835 struct vki_usbdevfs_connectinfo {
2836 unsigned int devnum;
2837 unsigned char slow;
2838 };
2839
2840 struct vki_usbdevfs_iso_packet_desc {
2841 unsigned int length;
2842 unsigned int actual_length;
2843 unsigned int status;
2844 };
2845
2846 struct vki_usbdevfs_urb {
2847 unsigned char type;
2848 unsigned char endpoint;
2849 int status;
2850 unsigned int flags;
2851 void __user *buffer;
2852 int buffer_length;
2853 int actual_length;
2854 int start_frame;
2855 int number_of_packets;
2856 int error_count;
2857 unsigned int signr;
2858 void *usercontext;
2859 struct vki_usbdevfs_iso_packet_desc iso_frame_desc[0];
2860 };
2861
2862 struct vki_usbdevfs_ioctl {
2863 int ifno;
2864 int ioctl_code;
2865
2866 void __user *data;
2867 };
2868
2869 #define VKI_USBDEVFS_CONTROL _VKI_IOWR('U', 0, struct vki_usbdevfs_ctrltransfer)
2870 #define VKI_USBDEVFS_BULK _VKI_IOWR('U', 2, struct vki_usbdevfs_bulktransfer)
2871 #define VKI_USBDEVFS_GETDRIVER _VKI_IOW('U', 8, struct vki_usbdevfs_getdriver)
2872 #define VKI_USBDEVFS_SUBMITURB _VKI_IOR('U', 10, struct vki_usbdevfs_urb)
2873 #define VKI_USBDEVFS_DISCARDURB _VKI_IO('U', 11)
2874 #define VKI_USBDEVFS_REAPURB _VKI_IOW('U', 12, void *)
2875 #define VKI_USBDEVFS_REAPURBNDELAY _VKI_IOW('U', 13, void *)
2876 #define VKI_USBDEVFS_CONNECTINFO _VKI_IOW('U', 17, struct vki_usbdevfs_connectinfo)
2877 #define VKI_USBDEVFS_IOCTL _VKI_IOWR('U', 18, struct vki_usbdevfs_ioctl)
2878 #define VKI_USBDEVFS_RESET _VKI_IO('U', 20)
2879
2880 #define VKI_USBDEVFS_URB_TYPE_ISO 0
2881 #define VKI_USBDEVFS_URB_TYPE_INTERRUPT 1
2882 #define VKI_USBDEVFS_URB_TYPE_CONTROL 2
2883 #define VKI_USBDEVFS_URB_TYPE_BULK 3
2884
2885
2886 struct vki_usbdevfs_setuppacket {
2887 __vki_u8 bRequestType;
2888 __vki_u8 bRequest;
2889 __vki_u16 wValue;
2890 __vki_u16 wIndex;
2891 __vki_u16 wLength;
2892 };
2893
2894
2895
2896
2897
2898 #define VKI_I2C_SMBUS_QUICK 0
2899 #define VKI_I2C_SMBUS_BYTE 1
2900 #define VKI_I2C_SMBUS_BYTE_DATA 2
2901 #define VKI_I2C_SMBUS_WORD_DATA 3
2902 #define VKI_I2C_SMBUS_PROC_CALL 4
2903 #define VKI_I2C_SMBUS_BLOCK_DATA 5
2904 #define VKI_I2C_SMBUS_I2C_BLOCK_BROKEN 6
2905 #define VKI_I2C_SMBUS_BLOCK_PROC_CALL 7
2906 #define VKI_I2C_SMBUS_I2C_BLOCK_DATA 8
2907
2908
2909 #define VKI_I2C_SMBUS_READ 1
2910 #define VKI_I2C_SMBUS_WRITE 0
2911
2912 #define VKI_I2C_SLAVE 0x0703
2913
2914 #define VKI_I2C_SLAVE_FORCE 0x0706
2915
2916
2917
2918 #define VKI_I2C_TENBIT 0x0704
2919 #define VKI_I2C_FUNCS 0x0705
2920 #define VKI_I2C_RDWR 0x0707
2921 #define VKI_I2C_PEC 0x0708
2922 #define VKI_I2C_SMBUS 0x0720
2923
2924 #define VKI_I2C_SMBUS_BLOCK_MAX 32
2925 union vki_i2c_smbus_data {
2926 __vki_u8 byte;
2927 __vki_u16 word;
2928 __vki_u8 block[VKI_I2C_SMBUS_BLOCK_MAX + 2];
2929
2930
2931 };
2932
2933
2934 struct vki_i2c_smbus_ioctl_data {
2935 __vki_u8 read_write;
2936 __vki_u8 command;
2937 __vki_u32 size;
2938 union vki_i2c_smbus_data __user *data;
2939 };
2940
2941 struct vki_i2c_msg {
2942 __vki_u16 addr;
2943 __vki_u16 flags;
2944 #define VKI_I2C_M_TEN 0x0010
2945 #define VKI_I2C_M_RD 0x0001
2946 #define VKI_I2C_M_NOSTART 0x4000
2947 #define VKI_I2C_M_REV_DIR_ADDR 0x2000
2948 #define VKI_I2C_M_IGNORE_NAK 0x1000
2949 #define VKI_I2C_M_NO_RD_ACK 0x0800
2950 #define VKI_I2C_M_RECV_LEN 0x0400
2951 __vki_u16 len;
2952 __vki_u8 *buf;
2953 };
2954
2955 struct vki_i2c_rdwr_ioctl_data {
2956 struct vki_i2c_msg *msgs;
2957 __vki_u32 nmsgs;
2958 };
2959
2960
2961
2962
2963
2964
2965 #define VKI_KEYCTL_GET_KEYRING_ID 0
2966 #define VKI_KEYCTL_JOIN_SESSION_KEYRING 1
2967 #define VKI_KEYCTL_UPDATE 2
2968 #define VKI_KEYCTL_REVOKE 3
2969 #define VKI_KEYCTL_CHOWN 4
2970 #define VKI_KEYCTL_SETPERM 5
2971 #define VKI_KEYCTL_DESCRIBE 6
2972 #define VKI_KEYCTL_CLEAR 7
2973 #define VKI_KEYCTL_LINK 8
2974 #define VKI_KEYCTL_UNLINK 9
2975 #define VKI_KEYCTL_SEARCH 10
2976 #define VKI_KEYCTL_READ 11
2977 #define VKI_KEYCTL_INSTANTIATE 12
2978 #define VKI_KEYCTL_NEGATE 13
2979 #define VKI_KEYCTL_SET_REQKEY_KEYRING 14
2980 #define VKI_KEYCTL_SET_TIMEOUT 15
2981 #define VKI_KEYCTL_ASSUME_AUTHORITY 16
2982
2983
2984
2985
2986
2987
2988 typedef vki_int32_t vki_key_serial_t;
2989
2990
2991 typedef vki_uint32_t vki_key_perm_t;
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003 #define VKI_SIOCSIWCOMMIT 0x8B00
3004 #define VKI_SIOCGIWNAME 0x8B01
3005
3006
3007 #define VKI_SIOCSIWNWID 0x8B02
3008 #define VKI_SIOCGIWNWID 0x8B03
3009 #define VKI_SIOCSIWFREQ 0x8B04
3010 #define VKI_SIOCGIWFREQ 0x8B05
3011 #define VKI_SIOCSIWMODE 0x8B06
3012 #define VKI_SIOCGIWMODE 0x8B07
3013 #define VKI_SIOCSIWSENS 0x8B08
3014 #define VKI_SIOCGIWSENS 0x8B09
3015
3016
3017 #define VKI_SIOCSIWRANGE 0x8B0A
3018 #define VKI_SIOCGIWRANGE 0x8B0B
3019 #define VKI_SIOCSIWPRIV 0x8B0C
3020 #define VKI_SIOCGIWPRIV 0x8B0D
3021 #define VKI_SIOCSIWSTATS 0x8B0E
3022 #define VKI_SIOCGIWSTATS 0x8B0F
3023
3024
3025 #define VKI_SIOCSIWSPY 0x8B10
3026 #define VKI_SIOCGIWSPY 0x8B11
3027 #define VKI_SIOCSIWTHRSPY 0x8B12
3028 #define VKI_SIOCGIWTHRSPY 0x8B13
3029
3030
3031 #define VKI_SIOCSIWAP 0x8B14
3032 #define VKI_SIOCGIWAP 0x8B15
3033 #define VKI_SIOCGIWAPLIST 0x8B17
3034 #define VKI_SIOCSIWSCAN 0x8B18
3035 #define VKI_SIOCGIWSCAN 0x8B19
3036
3037
3038 #define VKI_SIOCSIWESSID 0x8B1A
3039 #define VKI_SIOCGIWESSID 0x8B1B
3040 #define VKI_SIOCSIWNICKN 0x8B1C
3041 #define VKI_SIOCGIWNICKN 0x8B1D
3042
3043
3044 #define VKI_SIOCSIWRATE 0x8B20
3045 #define VKI_SIOCGIWRATE 0x8B21
3046 #define VKI_SIOCSIWRTS 0x8B22
3047 #define VKI_SIOCGIWRTS 0x8B23
3048 #define VKI_SIOCSIWFRAG 0x8B24
3049 #define VKI_SIOCGIWFRAG 0x8B25
3050 #define VKI_SIOCSIWTXPOW 0x8B26
3051 #define VKI_SIOCGIWTXPOW 0x8B27
3052 #define VKI_SIOCSIWRETRY 0x8B28
3053 #define VKI_SIOCGIWRETRY 0x8B29
3054
3055
3056 #define VKI_SIOCSIWENCODE 0x8B2A
3057 #define VKI_SIOCGIWENCODE 0x8B2B
3058
3059
3060 #define VKI_SIOCSIWPOWER 0x8B2C
3061 #define VKI_SIOCGIWPOWER 0x8B2D
3062
3063
3064 #define VKI_SIOCSIWGENIE 0x8B30
3065 #define VKI_SIOCGIWGENIE 0x8B31
3066
3067
3068 #define VKI_SIOCSIWMLME 0x8B16
3069
3070
3071 #define VKI_SIOCSIWAUTH 0x8B32
3072 #define VKI_SIOCGIWAUTH 0x8B33
3073
3074
3075 #define VKI_SIOCSIWENCODEEXT 0x8B34
3076 #define VKI_SIOCGIWENCODEEXT 0x8B35
3077
3078
3079 #define VKI_SIOCSIWPMKSA 0x8B36
3080
3081
3082
3083
3084
3085 struct vki_iw_param
3086 {
3087 __vki_s32 value;
3088 __vki_u8 fixed;
3089 __vki_u8 disabled;
3090 __vki_u16 flags;
3091 };
3092
3093 struct vki_iw_point
3094 {
3095 void __user *pointer;
3096 __vki_u16 length;
3097 __vki_u16 flags;
3098 };
3099
3100 struct vki_iw_freq
3101 {
3102 __vki_s32 m;
3103 __vki_s16 e;
3104 __vki_u8 i;
3105 __vki_u8 flags;
3106 };
3107
3108 struct vki_iw_quality
3109 {
3110 __vki_u8 qual;
3111
3112 __vki_u8 level;
3113 __vki_u8 noise;
3114 __vki_u8 updated;
3115 };
3116
3117 union vki_iwreq_data
3118 {
3119
3120 char name[VKI_IFNAMSIZ];
3121
3122
3123
3124 struct vki_iw_point essid;
3125 struct vki_iw_param nwid;
3126 struct vki_iw_freq freq;
3127
3128
3129
3130 struct vki_iw_param sens;
3131 struct vki_iw_param bitrate;
3132 struct vki_iw_param txpower;
3133 struct vki_iw_param rts;
3134 struct vki_iw_param frag;
3135 __vki_u32 mode;
3136 struct vki_iw_param retry;
3137
3138 struct vki_iw_point encoding;
3139 struct vki_iw_param power;
3140 struct vki_iw_quality qual;
3141
3142 struct vki_sockaddr ap_addr;
3143 struct vki_sockaddr addr;
3144
3145 struct vki_iw_param param;
3146 struct vki_iw_point data;
3147 };
3148
3149 struct vki_iwreq
3150 {
3151 union
3152 {
3153 char ifrn_name[VKI_IFNAMSIZ];
3154 } ifr_ifrn;
3155
3156
3157 union vki_iwreq_data u;
3158 };
3159
3160
3161
3162
3163
3164 struct vki_perf_event_attr {
3165
3166
3167
3168
3169 __vki_u32 type;
3170
3171
3172
3173
3174 __vki_u32 size;
3175
3176
3177
3178
3179 __vki_u64 config;
3180
3181 union {
3182 __vki_u64 sample_period;
3183 __vki_u64 sample_freq;
3184 };
3185
3186 __vki_u64 sample_type;
3187 __vki_u64 read_format;
3188
3189 __vki_u64 disabled : 1,
3190 inherit : 1,
3191 pinned : 1,
3192 exclusive : 1,
3193 exclude_user : 1,
3194 exclude_kernel : 1,
3195 exclude_hv : 1,
3196 exclude_idle : 1,
3197 mmap : 1,
3198 comm : 1,
3199 freq : 1,
3200 inherit_stat : 1,
3201 enable_on_exec : 1,
3202 task : 1,
3203 watermark : 1,
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214 precise_ip : 2,
3215 mmap_data : 1,
3216 sample_id_all : 1,
3217
3218 __reserved_1 : 45;
3219
3220 union {
3221 __vki_u32 wakeup_events;
3222 __vki_u32 wakeup_watermark;
3223 };
3224
3225 __vki_u32 bp_type;
3226 union {
3227 __vki_u64 bp_addr;
3228 __vki_u64 config1;
3229 };
3230 union {
3231 __vki_u64 bp_len;
3232 __vki_u64 config2;
3233 };
3234 };
3235
3236 #define VKI_PERF_EVENT_IOC_ENABLE _VKI_IO ('$', 0)
3237 #define VKI_PERF_EVENT_IOC_DISABLE _VKI_IO ('$', 1)
3238 #define VKI_PERF_EVENT_IOC_REFRESH _VKI_IO ('$', 2)
3239 #define VKI_PERF_EVENT_IOC_RESET _VKI_IO ('$', 3)
3240 #define VKI_PERF_EVENT_IOC_PERIOD _VKI_IOW('$', 4, __vki_u64)
3241 #define VKI_PERF_EVENT_IOC_SET_OUTPUT _VKI_IO ('$', 5)
3242 #define VKI_PERF_EVENT_IOC_SET_FILTER _VKI_IOW('$', 6, char *)
3243 #define VKI_PERF_EVENT_IOC_ID _VKI_IOR('$', 7, __vki_u64 *)
3244 #define VKI_PERF_EVENT_IOC_SET_BPF _VKI_IOW('$', 8, __vki_u32)
3245
3246 #define VKI_PERF_FLAG_FD_NO_GROUP (1UL << 0)
3247
3248
3249
3250
3251
3252 struct vki_getcpu_cache {
3253 unsigned long blob[128 / sizeof(long)];
3254 };
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264 #define VKI_EVIOCGNAME(len) _VKI_IOC(_VKI_IOC_READ, 'E', 0x06, len)
3265 #define VKI_EVIOCGPHYS(len) _VKI_IOC(_VKI_IOC_READ, 'E', 0x07, len)
3266 #define VKI_EVIOCGUNIQ(len) _VKI_IOC(_VKI_IOC_READ, 'E', 0x08, len)
3267
3268 #define VKI_EVIOCGKEY(len) _VKI_IOC(_VKI_IOC_READ, 'E', 0x18, len)
3269 #define VKI_EVIOCGLED(len) _VKI_IOC(_VKI_IOC_READ, 'E', 0x19, len)
3270 #define VKI_EVIOCGSND(len) _VKI_IOC(_VKI_IOC_READ, 'E', 0x1a, len)
3271 #define VKI_EVIOCGSW(len) _VKI_IOC(_VKI_IOC_READ, 'E', 0x1b, len)
3272
3273 #define VKI_EVIOCGBIT(ev,len) _VKI_IOC(_VKI_IOC_READ, 'E', 0x20 + ev, len)
3274
3275 #define VKI_EVIOCGRAB _VKI_IOW('E', 0x90, int)
3276
3277
3278
3279
3280
3281
3282 #define VKI_EV_SYN 0x00
3283 #define VKI_EV_KEY 0x01
3284 #define VKI_EV_REL 0x02
3285 #define VKI_EV_ABS 0x03
3286 #define VKI_EV_MSC 0x04
3287 #define VKI_EV_SW 0x05
3288 #define VKI_EV_LED 0x11
3289 #define VKI_EV_SND 0x12
3290 #define VKI_EV_REP 0x14
3291 #define VKI_EV_FF 0x15
3292 #define VKI_EV_PWR 0x16
3293 #define VKI_EV_FF_STATUS 0x17
3294 #define VKI_EV_MAX 0x1f
3295 #define VKI_EV_CNT (VKI_EV_MAX+1)
3296
3297
3298
3299
3300
3301 #ifndef VKI_FIOQSIZE
3302 #define VKI_FIOQSIZE 0x5460
3303 #endif
3304
3305 #ifndef VKI_TIOCSIG
3306 #define VKI_TIOCSIG _VKI_IOW('T', 0x36, int)
3307 #endif
3308
3309
3310
3311
3312
3313 #if defined(VGPV_arm_linux_android) || defined(VGPV_x86_linux_android) \
3314 || defined(VGPV_mips32_linux_android) \
3315 || defined(VGPV_arm64_linux_android)
3316
3317 #define VKI_ASHMEM_NAME_LEN 256
3318
3319 #define VKI_ASHMEM_NAME_DEF "dev/ashmem"
3320
3321 #define VKI_ASHMEM_NOT_PURGED 0
3322 #define VKI_ASHMEM_WAS_PURGED 1
3323
3324 #define VKI_ASHMEM_IS_UNPINNED 0
3325 #define VKI_ASHMEM_IS_PINNED 1
3326
3327 struct vki_ashmem_pin {
3328 vki_uint32_t offset;
3329 vki_uint32_t len;
3330 };
3331
3332 #define __VKI_ASHMEMIOC 0x77
3333
3334 #define VKI_ASHMEM_SET_NAME _VKI_IOW(__VKI_ASHMEMIOC, 1, char[VKI_ASHMEM_NAME_LEN])
3335 #define VKI_ASHMEM_GET_NAME _VKI_IOR(__VKI_ASHMEMIOC, 2, char[VKI_ASHMEM_NAME_LEN])
3336 #define VKI_ASHMEM_SET_SIZE _VKI_IOW(__VKI_ASHMEMIOC, 3, vki_size_t)
3337 #define VKI_ASHMEM_GET_SIZE _VKI_IO(__VKI_ASHMEMIOC, 4)
3338 #define VKI_ASHMEM_SET_PROT_MASK _VKI_IOW(__VKI_ASHMEMIOC, 5, unsigned long)
3339 #define VKI_ASHMEM_GET_PROT_MASK _VKI_IO(__VKI_ASHMEMIOC, 6)
3340 #define VKI_ASHMEM_PIN _VKI_IOW(__VKI_ASHMEMIOC, 7, struct vki_ashmem_pin)
3341 #define VKI_ASHMEM_UNPIN _VKI_IOW(__VKI_ASHMEMIOC, 8, struct vki_ashmem_pin)
3342 #define VKI_ASHMEM_GET_PIN_STATUS _VKI_IO(__VKI_ASHMEMIOC, 9)
3343 #define VKI_ASHMEM_PURGE_ALL_CACHES _VKI_IO(__VKI_ASHMEMIOC, 10)
3344
3345
3346
3347
3348
3349 struct vki_binder_write_read {
3350 signed long write_size;
3351 signed long write_consumed;
3352 unsigned long write_buffer;
3353 signed long read_size;
3354 signed long read_consumed;
3355 unsigned long read_buffer;
3356 };
3357
3358 struct vki_binder_version {
3359 signed long protocol_version;
3360 };
3361
3362 #define VKI_BINDER_WRITE_READ _VKI_IOWR('b', 1, struct vki_binder_write_read)
3363 #define VKI_BINDER_SET_IDLE_TIMEOUT _VKI_IOW('b', 3, vki_int64_t)
3364 #define VKI_BINDER_SET_MAX_THREADS _VKI_IOW('b', 5, vki_size_t)
3365 #define VKI_BINDER_SET_IDLE_PRIORITY _VKI_IOW('b', 6, int)
3366 #define VKI_BINDER_SET_CONTEXT_MGR _VKI_IOW('b', 7, int)
3367 #define VKI_BINDER_THREAD_EXIT _VKI_IOW('b', 8, int)
3368 #define VKI_BINDER_VERSION _VKI_IOWR('b', 9, struct vki_binder_version)
3369
3370 #endif
3371
3372
3373
3374
3375
3376 typedef struct {
3377 __vki_u8 b[6];
3378 } __vki_packed vki_bdaddr_t;
3379
3380
3381
3382
3383
3384 #define VKI_HCIDEVUP _VKI_IOW('H', 201, int)
3385 #define VKI_HCIDEVDOWN _VKI_IOW('H', 202, int)
3386 #define VKI_HCIDEVRESET _VKI_IOW('H', 203, int)
3387 #define VKI_HCIDEVRESTAT _VKI_IOW('H', 204, int)
3388
3389 #define VKI_HCIGETDEVLIST _VKI_IOR('H', 210, int)
3390
3391 struct vki_hci_dev_req {
3392 __vki_u16 dev_id;
3393 __vki_u32 dev_opt;
3394 };
3395
3396 struct vki_hci_dev_list_req {
3397 __vki_u16 dev_num;
3398 struct vki_hci_dev_req dev_req[0];
3399 };
3400
3401 #define VKI_HCIGETDEVINFO _VKI_IOR('H', 211, int)
3402 #define VKI_HCIGETCONNLIST _VKI_IOR('H', 212, int)
3403 #define VKI_HCIGETCONNINFO _VKI_IOR('H', 213, int)
3404 #define VKI_HCIGETAUTHINFO _VKI_IOR('H', 215, int)
3405
3406 #define VKI_HCISETRAW _VKI_IOW('H', 220, int)
3407 #define VKI_HCISETSCAN _VKI_IOW('H', 221, int)
3408 #define VKI_HCISETAUTH _VKI_IOW('H', 222, int)
3409 #define VKI_HCISETENCRYPT _VKI_IOW('H', 223, int)
3410 #define VKI_HCISETPTYPE _VKI_IOW('H', 224, int)
3411 #define VKI_HCISETLINKPOL _VKI_IOW('H', 225, int)
3412 #define VKI_HCISETLINKMODE _VKI_IOW('H', 226, int)
3413 #define VKI_HCISETACLMTU _VKI_IOW('H', 227, int)
3414 #define VKI_HCISETSCOMTU _VKI_IOW('H', 228, int)
3415
3416 #define VKI_HCIBLOCKADDR _VKI_IOW('H', 230, int)
3417 #define VKI_HCIUNBLOCKADDR _VKI_IOW('H', 231, int)
3418
3419 #define VKI_HCIINQUIRY _VKI_IOR('H', 240, int)
3420
3421 struct vki_inquiry_info {
3422 vki_bdaddr_t bdaddr;
3423 __vki_u8 pscan_rep_mode;
3424 __vki_u8 pscan_period_mode;
3425 __vki_u8 pscan_mode;
3426 __vki_u8 dev_class[3];
3427 __vki_le16 clock_offset;
3428 } __vki_packed;
3429
3430 struct vki_hci_inquiry_req {
3431 __vki_u16 dev_id;
3432 __vki_u16 flags;
3433 __vki_u8 lap[3];
3434 __vki_u8 length;
3435 __vki_u8 num_rsp;
3436 };
3437
3438
3439
3440
3441
3442 struct vki_sockaddr_rc {
3443 vki_sa_family_t rc_family;
3444 vki_bdaddr_t rc_bdaddr;
3445 __vki_u8 rc_channel;
3446 };
3447
3448
3449
3450
3451 #define KVMIO 0xAE
3452
3453 #define VKI_KVM_GET_API_VERSION _VKI_IO(KVMIO, 0x00)
3454 #define VKI_KVM_CREATE_VM _VKI_IO(KVMIO, 0x01)
3455 #define VKI_KVM_CHECK_EXTENSION _VKI_IO(KVMIO, 0x03)
3456 #define VKI_KVM_GET_VCPU_MMAP_SIZE _VKI_IO(KVMIO, 0x04)
3457 #define VKI_KVM_S390_ENABLE_SIE _VKI_IO(KVMIO, 0x06)
3458 #define VKI_KVM_CREATE_VCPU _VKI_IO(KVMIO, 0x41)
3459 #define VKI_KVM_SET_NR_MMU_PAGES _VKI_IO(KVMIO, 0x44)
3460 #define VKI_KVM_GET_NR_MMU_PAGES _VKI_IO(KVMIO, 0x45)
3461 #define VKI_KVM_SET_TSS_ADDR _VKI_IO(KVMIO, 0x47)
3462 #define VKI_KVM_CREATE_IRQCHIP _VKI_IO(KVMIO, 0x60)
3463 #define VKI_KVM_CREATE_PIT _VKI_IO(KVMIO, 0x64)
3464 #define VKI_KVM_REINJECT_CONTROL _VKI_IO(KVMIO, 0x71)
3465 #define VKI_KVM_SET_BOOT_CPU_ID _VKI_IO(KVMIO, 0x78)
3466 #define VKI_KVM_SET_TSC_KHZ _VKI_IO(KVMIO, 0xa2)
3467 #define VKI_KVM_GET_TSC_KHZ _VKI_IO(KVMIO, 0xa3)
3468 #define VKI_KVM_RUN _VKI_IO(KVMIO, 0x80)
3469 #define VKI_KVM_S390_INITIAL_RESET _VKI_IO(KVMIO, 0x97)
3470 #define VKI_KVM_NMI _VKI_IO(KVMIO, 0x9a)
3471 #define VKI_KVM_KVMCLOCK_CTRL _VKI_IO(KVMIO, 0xad)
3472
3473 struct vki_kvm_s390_mem_op {
3474
3475 __vki_u64 gaddr;
3476 __vki_u64 flags;
3477 __vki_u32 size;
3478 __vki_u32 op;
3479 __vki_u64 buf;
3480 __vki_u8 ar;
3481 __vki_u8 reserved[31];
3482 };
3483
3484 #define VKI_KVM_S390_MEMOP_LOGICAL_READ 0
3485 #define VKI_KVM_S390_MEMOP_LOGICAL_WRITE 1
3486 #define VKI_KVM_S390_MEMOP_F_CHECK_ONLY (1ULL << 0)
3487 #define VKI_KVM_S390_MEMOP_F_INJECT_EXCEPTION (1ULL << 1)
3488
3489 #define VKI_KVM_S390_MEM_OP _VKI_IOW(KVMIO, 0xb1, struct vki_kvm_s390_mem_op)
3490
3491
3492
3493
3494
3495 struct vki_hwtstamp_config {
3496 int flags;
3497 int tx_type;
3498 int rx_filter;
3499 };
3500
3501
3502
3503
3504
3505 #define VKI_UINPUT_IOCTL_BASE 'U'
3506 #define VKI_UI_DEV_CREATE _VKI_IO(VKI_UINPUT_IOCTL_BASE, 1)
3507 #define VKI_UI_DEV_DESTROY _VKI_IO(VKI_UINPUT_IOCTL_BASE, 2)
3508
3509 #define VKI_UI_SET_EVBIT _VKI_IOW(VKI_UINPUT_IOCTL_BASE, 100, int)
3510 #define VKI_UI_SET_KEYBIT _VKI_IOW(VKI_UINPUT_IOCTL_BASE, 101, int)
3511 #define VKI_UI_SET_RELBIT _VKI_IOW(VKI_UINPUT_IOCTL_BASE, 102, int)
3512 #define VKI_UI_SET_ABSBIT _VKI_IOW(VKI_UINPUT_IOCTL_BASE, 103, int)
3513 #define VKI_UI_SET_MSCBIT _VKI_IOW(VKI_UINPUT_IOCTL_BASE, 104, int)
3514 #define VKI_UI_SET_LEDBIT _VKI_IOW(VKI_UINPUT_IOCTL_BASE, 105, int)
3515 #define VKI_UI_SET_SNDBIT _VKI_IOW(VKI_UINPUT_IOCTL_BASE, 106, int)
3516 #define VKI_UI_SET_FFBIT _VKI_IOW(VKI_UINPUT_IOCTL_BASE, 107, int)
3517 #define VKI_UI_SET_SWBIT _VKI_IOW(VKI_UINPUT_IOCTL_BASE, 109, int)
3518 #define VKI_UI_SET_PROPBIT _VKI_IOW(VKI_UINPUT_IOCTL_BASE, 110, int)
3519
3520
3521
3522
3523
3524 #define VKI_IB_IOCTL_MAGIC 0x1b
3525
3526 #define VKI_IB_USER_MAD_REGISTER_AGENT _VKI_IOWR(VKI_IB_IOCTL_MAGIC, 1, \
3527 struct ib_user_mad_reg_req)
3528
3529 #define VKI_IB_USER_MAD_UNREGISTER_AGENT _VKI_IOW(VKI_IB_IOCTL_MAGIC, 2, __u32)
3530
3531 #define VKI_IB_USER_MAD_ENABLE_PKEY _VKI_IO(VKI_IB_IOCTL_MAGIC, 3)
3532
3533
3534
3535
3536
3537 #define VKI_TUNSETNOCSUM _VKI_IOW('T', 200, int)
3538 #define VKI_TUNSETDEBUG _VKI_IOW('T', 201, int)
3539 #define VKI_TUNSETIFF _VKI_IOW('T', 202, int)
3540 #define VKI_TUNSETPERSIST _VKI_IOW('T', 203, int)
3541 #define VKI_TUNSETOWNER _VKI_IOW('T', 204, int)
3542 #define VKI_TUNSETLINK _VKI_IOW('T', 205, int)
3543 #define VKI_TUNSETGROUP _VKI_IOW('T', 206, int)
3544 #define VKI_TUNGETFEATURES _VKI_IOR('T', 207, unsigned int)
3545 #define VKI_TUNSETOFFLOAD _VKI_IOW('T', 208, unsigned int)
3546 #define VKI_TUNSETTXFILTER _VKI_IOW('T', 209, unsigned int)
3547 #define VKI_TUNGETIFF _VKI_IOR('T', 210, unsigned int)
3548 #define VKI_TUNGETSNDBUF _VKI_IOR('T', 211, int)
3549 #define VKI_TUNSETSNDBUF _VKI_IOW('T', 212, int)
3550
3551
3552 #define VKI_TUNGETVNETHDRSZ _VKI_IOR('T', 215, int)
3553 #define VKI_TUNSETVNETHDRSZ _VKI_IOW('T', 216, int)
3554 #define VKI_TUNSETQUEUE _VKI_IOW('T', 217, int)
3555 #define VKI_TUNSETIFINDEX _VKI_IOW('T', 218, unsigned int)
3556
3557
3558
3559
3560
3561
3562 #define VKI_VHOST_VIRTIO 0xAF
3563 #define VKI_VHOST_SET_OWNER _VKI_IO(VKI_VHOST_VIRTIO, 0x01)
3564 #define VKI_VHOST_RESET_OWNER _VKI_IO(VKI_VHOST_VIRTIO, 0x02)
3565
3566
3567
3568
3569
3570 typedef unsigned long __vki_xen_pfn_t;
3571
3572 struct vki_xen_privcmd_hypercall {
3573 __vki_u64 op;
3574 __vki_u64 arg[5];
3575 };
3576
3577 struct vki_xen_privcmd_mmap_entry {
3578 __vki_u64 va;
3579 __vki_u64 mfn;
3580 __vki_u64 npages;
3581 };
3582
3583 struct vki_xen_privcmd_mmap {
3584 int num;
3585 __vki_u16 dom;
3586 struct vki_xen_privcmd_mmap_entry *entry;
3587 };
3588
3589 struct vki_xen_privcmd_mmapbatch {
3590 int num;
3591 __vki_u16 dom;
3592 __vki_u64 addr;
3593 __vki_xen_pfn_t *arr;
3594 };
3595
3596 struct vki_xen_privcmd_mmapbatch_v2 {
3597 unsigned int num;
3598 __vki_u16 dom;
3599 __vki_u64 addr;
3600 const __vki_xen_pfn_t *arr;
3601 int __user *err;
3602 };
3603
3604 #define VKI_XEN_IOCTL_PRIVCMD_HYPERCALL _VKI_IOC(_VKI_IOC_NONE, 'P', 0, sizeof(struct vki_xen_privcmd_hypercall))
3605 #define VKI_XEN_IOCTL_PRIVCMD_MMAP _VKI_IOC(_VKI_IOC_NONE, 'P', 2, sizeof(struct vki_xen_privcmd_mmap))
3606
3607 #define VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH _VKI_IOC(_VKI_IOC_NONE, 'P', 3, sizeof(struct vki_xen_privcmd_mmapbatch))
3608 #define VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH_V2 _VKI_IOC(_VKI_IOC_NONE, 'P', 4, sizeof(struct vki_xen_privcmd_mmapbatch_v2))
3609
3610
3611
3612
3613
3614 #define VKI_XEN_IOCTL_EVTCHN_BIND_VIRQ \
3615 _VKI_IOC(_VKI_IOC_NONE, 'E', 0, sizeof(struct vki_xen_ioctl_evtchn_bind_virq))
3616 struct vki_xen_ioctl_evtchn_bind_virq {
3617 vki_uint32_t virq;
3618 };
3619
3620 #define VKI_XEN_IOCTL_EVTCHN_BIND_INTERDOMAIN \
3621 _VKI_IOC(_VKI_IOC_NONE, 'E', 1, sizeof(struct vki_xen_ioctl_evtchn_bind_interdomain))
3622 struct vki_xen_ioctl_evtchn_bind_interdomain {
3623 vki_uint32_t remote_domain;
3624 vki_uint32_t remote_port;
3625 };
3626
3627 #define VKI_XEN_IOCTL_EVTCHN_BIND_UNBOUND_PORT \
3628 _VKI_IOC(_VKI_IOC_NONE, 'E', 2, sizeof(struct vki_xen_ioctl_evtchn_bind_unbound_port))
3629 struct vki_xen_ioctl_evtchn_bind_unbound_port {
3630 vki_uint32_t remote_domain;
3631 };
3632
3633 #define VKI_XEN_IOCTL_EVTCHN_UNBIND \
3634 _VKI_IOC(_VKI_IOC_NONE, 'E', 3, sizeof(struct vki_xen_ioctl_evtchn_unbind))
3635 struct vki_xen_ioctl_evtchn_unbind {
3636 vki_uint32_t port;
3637 };
3638
3639 #define VKI_XEN_IOCTL_EVTCHN_NOTIFY \
3640 _VKI_IOC(_VKI_IOC_NONE, 'E', 4, sizeof(struct vki_xen_ioctl_evtchn_notify))
3641 struct vki_xen_ioctl_evtchn_notify {
3642 vki_uint32_t port;
3643 };
3644
3645 #define VKI_XEN_IOCTL_EVTCHN_RESET \
3646 _VKI_IOC(_VKI_IOC_NONE, 'E', 5, 0)
3647
3648
3649
3650
3651
3652
3653 struct vki_file_handle {
3654 __vki_u32 handle_bytes;
3655 int handle_type;
3656
3657 unsigned char f_handle[0];
3658 };
3659
3660
3661
3662
3663
3664 struct vki_sock_filter {
3665 __vki_u16 code;
3666 __vki_u8 jt;
3667 __vki_u8 jf;
3668 __vki_u32 k;
3669 };
3670
3671 struct vki_sock_fprog {
3672 __vki_u16 len;
3673 struct vki_sock_filter *filter;
3674 };
3675
3676
3677
3678
3679
3680 struct vki_ethtool_cmd {
3681 __vki_u32 cmd;
3682 __vki_u32 supported;
3683 __vki_u32 advertising;
3684 __vki_u16 speed;
3685 __vki_u8 duplex;
3686 __vki_u8 port;
3687 __vki_u8 phy_address;
3688 __vki_u8 transceiver;
3689 __vki_u8 autoneg;
3690 __vki_u8 mdio_support;
3691 __vki_u32 maxtxpkt;
3692 __vki_u32 maxrxpkt;
3693 __vki_u16 speed_hi;
3694 __vki_u8 eth_tp_mdix;
3695 __vki_u8 eth_tp_mdix_ctrl;
3696 __vki_u32 lp_advertising;
3697 __vki_u32 reserved[2];
3698 };
3699
3700 #define VKI_ETHTOOL_FWVERS_LEN 32
3701 #define VKI_ETHTOOL_BUSINFO_LEN 32
3702
3703 struct vki_ethtool_drvinfo {
3704 __vki_u32 cmd;
3705 char driver[32];
3706 char version[32];
3707 char fw_version[VKI_ETHTOOL_FWVERS_LEN];
3708 char bus_info[VKI_ETHTOOL_BUSINFO_LEN];
3709 char reserved1[32];
3710 char reserved2[12];
3711 __vki_u32 n_priv_flags;
3712 __vki_u32 n_stats;
3713 __vki_u32 testinfo_len;
3714 __vki_u32 eedump_len;
3715 __vki_u32 regdump_len;
3716 };
3717
3718 #define VKI_SOPASS_MAX 6
3719
3720 struct vki_ethtool_wolinfo {
3721 __vki_u32 cmd;
3722 __vki_u32 supported;
3723 __vki_u32 wolopts;
3724 __vki_u8 sopass[VKI_SOPASS_MAX];
3725 };
3726
3727 struct vki_ethtool_value {
3728 __vki_u32 cmd;
3729 __vki_u32 data;
3730 };
3731
3732 struct vki_ethtool_regs {
3733 __vki_u32 cmd;
3734 __vki_u32 version;
3735 __vki_u32 len;
3736 __vki_u8 data[0];
3737 };
3738
3739 struct vki_ethtool_ringparam {
3740 __vki_u32 cmd;
3741 __vki_u32 rx_max_pending;
3742 __vki_u32 rx_mini_max_pending;
3743 __vki_u32 rx_jumbo_max_pending;
3744 __vki_u32 tx_max_pending;
3745 __vki_u32 rx_pending;
3746 __vki_u32 rx_mini_pending;
3747 __vki_u32 rx_jumbo_pending;
3748 __vki_u32 tx_pending;
3749 };
3750
3751 struct vki_ethtool_channels {
3752 __vki_u32 cmd;
3753 __vki_u32 max_rx;
3754 __vki_u32 max_tx;
3755 __vki_u32 max_other;
3756 __vki_u32 max_combined;
3757 __vki_u32 rx_count;
3758 __vki_u32 tx_count;
3759 __vki_u32 other_count;
3760 __vki_u32 combined_count;
3761 };
3762
3763 struct vki_ethtool_sset_info {
3764 __vki_u32 cmd;
3765 __vki_u32 reserved;
3766 __vki_u64 sset_mask;
3767 __vki_u32 data[0];
3768 };
3769
3770 struct vki_ethtool_test {
3771 __vki_u32 cmd;
3772 __vki_u32 flags;
3773 __vki_u32 reserved;
3774 __vki_u32 len;
3775 __vki_u64 data[0];
3776 };
3777
3778 struct vki_ethtool_perm_addr {
3779 __vki_u32 cmd;
3780 __vki_u32 size;
3781 __vki_u8 data[0];
3782 };
3783
3784 struct vki_ethtool_get_features_block {
3785 __vki_u32 available;
3786 __vki_u32 requested;
3787 __vki_u32 active;
3788 __vki_u32 never_changed;
3789 };
3790
3791 struct vki_ethtool_gfeatures {
3792 __vki_u32 cmd;
3793 __vki_u32 size;
3794 struct vki_ethtool_get_features_block features[0];
3795 };
3796
3797 struct vki_ethtool_set_features_block {
3798 __vki_u32 valid;
3799 __vki_u32 requested;
3800 };
3801
3802 struct vki_ethtool_sfeatures {
3803 __vki_u32 cmd;
3804 __vki_u32 size;
3805 struct vki_ethtool_set_features_block features[0];
3806 };
3807
3808 struct vki_ethtool_ts_info {
3809 __vki_u32 cmd;
3810 __vki_u32 so_timestamping;
3811 __vki_s32 phc_index;
3812 __vki_u32 tx_types;
3813 __vki_u32 tx_reserved[3];
3814 __vki_u32 rx_filters;
3815 __vki_u32 rx_reserved[3];
3816 };
3817
3818 #define VKI_ETHTOOL_GSET 0x00000001
3819 #define VKI_ETHTOOL_SSET 0x00000002
3820 #define VKI_ETHTOOL_GDRVINFO 0x00000003
3821 #define VKI_ETHTOOL_GREGS 0x00000004
3822 #define VKI_ETHTOOL_GWOL 0x00000005
3823 #define VKI_ETHTOOL_SWOL 0x00000006
3824 #define VKI_ETHTOOL_GMSGLVL 0x00000007
3825 #define VKI_ETHTOOL_SMSGLVL 0x00000008
3826 #define VKI_ETHTOOL_NWAY_RST 0x00000009
3827 #define VKI_ETHTOOL_GLINK 0x0000000a
3828 #define VKI_ETHTOOL_GRINGPARAM 0x00000010
3829 #define VKI_ETHTOOL_SRINGPARAM 0x00000011
3830 #define VKI_ETHTOOL_GRXCSUM 0x00000014
3831 #define VKI_ETHTOOL_SRXCSUM 0x00000015
3832 #define VKI_ETHTOOL_GTXCSUM 0x00000016
3833 #define VKI_ETHTOOL_STXCSUM 0x00000017
3834 #define VKI_ETHTOOL_GSG 0x00000018
3835
3836 #define VKI_ETHTOOL_SSG 0x00000019
3837
3838 #define VKI_ETHTOOL_TEST 0x0000001a
3839 #define VKI_ETHTOOL_PHYS_ID 0x0000001c
3840 #define VKI_ETHTOOL_GTSO 0x0000001e
3841 #define VKI_ETHTOOL_STSO 0x0000001f
3842 #define VKI_ETHTOOL_GPERMADDR 0x00000020
3843 #define VKI_ETHTOOL_GUFO 0x00000021
3844 #define VKI_ETHTOOL_SUFO 0x00000022
3845 #define VKI_ETHTOOL_GGSO 0x00000023
3846 #define VKI_ETHTOOL_SGSO 0x00000024
3847 #define VKI_ETHTOOL_GFLAGS 0x00000025
3848 #define VKI_ETHTOOL_SFLAGS 0x00000026
3849 #define VKI_ETHTOOL_GGRO 0x0000002b
3850 #define VKI_ETHTOOL_SGRO 0x0000002c
3851 #define VKI_ETHTOOL_RESET 0x00000034
3852 #define VKI_ETHTOOL_GSSET_INFO 0x00000037
3853 #define VKI_ETHTOOL_GFEATURES 0x0000003a
3854 #define VKI_ETHTOOL_SFEATURES 0x0000003b
3855 #define VKI_ETHTOOL_GCHANNELS 0x0000003c
3856 #define VKI_ETHTOOL_SCHANNELS 0x0000003d
3857 #define VKI_ETHTOOL_GET_TS_INFO 0x00000041
3858
3859
3860
3861
3862
3863 typedef int vki_ion_user_handle_t;
3864
3865 struct vki_ion_allocation_data {
3866 vki_size_t len;
3867 vki_size_t align;
3868 unsigned int heap_id_mask;
3869 unsigned int flags;
3870 vki_ion_user_handle_t handle;
3871 };
3872
3873 struct vki_ion_fd_data {
3874 vki_ion_user_handle_t handle;
3875 int fd;
3876 };
3877
3878 struct vki_ion_handle_data {
3879 vki_ion_user_handle_t handle;
3880 };
3881
3882 struct vki_ion_custom_data {
3883 unsigned int cmd;
3884 unsigned long arg;
3885 };
3886
3887 #define VKI_ION_IOC_MAGIC 'I'
3888
3889 #define VKI_ION_IOC_ALLOC \
3890 _VKI_IOWR(VKI_ION_IOC_MAGIC, 0, struct vki_ion_allocation_data)
3891
3892 #define VKI_ION_IOC_FREE \
3893 _VKI_IOWR(VKI_ION_IOC_MAGIC, 1, struct vki_ion_handle_data)
3894
3895 #define VKI_ION_IOC_MAP \
3896 _VKI_IOWR(VKI_ION_IOC_MAGIC, 2, struct vki_ion_fd_data)
3897
3898 #define VKI_ION_IOC_SHARE \
3899 _VKI_IOWR(VKI_ION_IOC_MAGIC, 4, struct vki_ion_fd_data)
3900
3901 #define VKI_ION_IOC_IMPORT \
3902 _VKI_IOWR(VKI_ION_IOC_MAGIC, 5, struct vki_ion_fd_data)
3903
3904 #define VKI_ION_IOC_SYNC \
3905 _VKI_IOWR(VKI_ION_IOC_MAGIC, 7, struct vki_ion_fd_data)
3906
3907 #define VKI_ION_IOC_CUSTOM \
3908 _VKI_IOWR(VKI_ION_IOC_MAGIC, 6, struct vki_ion_custom_data)
3909
3910 struct vki_procmap_query {
3911 __vki_u64 size;
3912 __vki_u64 query_flags;
3913 __vki_u64 query_addr;
3914 __vki_u64 vma_start;
3915 __vki_u64 vma_end;
3916 __vki_u64 vma_flags;
3917 __vki_u64 vma_page_size;
3918 __vki_u64 vma_offset;
3919 __vki_u64 inode;
3920 __vki_u32 dev_major;
3921 __vki_u32 dev_minor;
3922 __vki_u32 vma_name_size;
3923 __vki_u32 build_id_size;
3924 __vki_u64 vma_name_addr;
3925 __vki_u64 build_id_addr;
3926 };
3927
3928
3929 #define VKI_PROCFS_IOCTL_MAGIC 'f'
3930
3931 #define VKI_PROCMAP_QUERY \
3932 _VKI_IOWR(VKI_PROCFS_IOCTL_MAGIC, 17, struct vki_procmap_query)
3933
3934
3935
3936
3937
3938 struct vki_sync_merge_data {
3939 char name[32];
3940 __vki_s32 fd2;
3941 __vki_s32 fence;
3942 __vki_u32 flags;
3943 __vki_u32 pad;
3944 };
3945
3946 struct vki_sync_fence_info {
3947 char obj_name[32];
3948 char driver_name[32];
3949 __vki_s32 status;
3950 __vki_u32 flags;
3951 __vki_u64 timestamp_ns;
3952 };
3953
3954 struct vki_sync_file_info {
3955 char name[32];
3956 __vki_s32 status;
3957 __vki_u32 flags;
3958 __vki_u32 num_fences;
3959 __vki_u32 pad;
3960 __vki_u64 sync_fence_info;
3961 };
3962
3963 struct vki_sync_set_deadline {
3964 __vki_u64 deadline_ns;
3965 __vki_u64 pad;
3966 };
3967
3968 #define VKI_SYNC_IOC_MAGIC '>'
3969
3970 #define VKI_SYNC_IOC_WAIT \
3971 _VKI_IOW(VKI_SYNC_IOC_MAGIC, 0, __vki_s32)
3972
3973 #define VKI_SYNC_IOC_MERGE \
3974 _VKI_IOWR(VKI_SYNC_IOC_MAGIC, 3, struct vki_sync_merge_data)
3975
3976 #define VKI_SYNC_IOC_FILE_INFO \
3977 _VKI_IOWR(VKI_SYNC_IOC_MAGIC, 4, struct vki_sync_file_info)
3978
3979 #define VKI_SYNC_IOC_SET_DEADLINE \
3980 _VKI_IOW(VKI_SYNC_IOC_MAGIC, 5, struct vki_sync_set_deadline)
3981
3982
3983
3984
3985
3986 struct vki_lu_fid {
3987 __vki_u64 f_seq;
3988 __vki_u32 f_oid;
3989 __vki_u32 f_ver;
3990 };
3991
3992
3993
3994
3995
3996 struct vki_getinfo_fid2path {
3997 struct vki_lu_fid gf_fid;
3998 __vki_u64 gf_recno;
3999 __vki_u32 gf_linkno;
4000 __vki_u32 gf_pathlen;
4001 char gf_path[0];
4002 } __attribute__((packed));
4003
4004
4005
4006
4007
4008 #define VKI_OBD_IOC_DATA_TYPE long
4009
4010
4011
4012
4013
4014 #define VKI_OBD_IOC_FID2PATH \
4015 _VKI_IOWR ('f', 150, VKI_OBD_IOC_DATA_TYPE)
4016 #define VKI_LL_IOC_PATH2FID \
4017 _VKI_IOR ('f', 173, long)
4018
4019
4020
4021
4022
4023 struct vki_getparent {
4024 struct vki_lu_fid gp_fid;
4025 __vki_u32 gp_linkno;
4026 __vki_u32 gp_name_size;
4027 char gp_name[0];
4028 } __attribute__((packed));
4029
4030
4031
4032
4033 #define VKI_LL_IOC_GROUP_LOCK \
4034 _VKI_IOW('f', 158, long)
4035 #define VKI_LL_IOC_GROUP_UNLOCK \
4036 _VKI_IOW('f', 159, long)
4037 #define VKI_LL_IOC_GETPARENT \
4038 _VKI_IOWR('f', 249, struct vki_getparent)
4039
4040
4041 struct vki_v4l2_rect {
4042 __vki_s32 left;
4043 __vki_s32 top;
4044 __vki_u32 width;
4045 __vki_u32 height;
4046 };
4047
4048 struct vki_v4l2_fract {
4049 __vki_u32 numerator;
4050 __vki_u32 denominator;
4051 };
4052
4053 struct vki_v4l2_capability {
4054 __vki_u8 driver[16];
4055 __vki_u8 card[32];
4056 __vki_u8 bus_info[32];
4057 __vki_u32 version;
4058 __vki_u32 capabilities;
4059 __vki_u32 device_caps;
4060 __vki_u32 reserved[3];
4061 };
4062
4063 struct vki_v4l2_pix_format {
4064 __vki_u32 width;
4065 __vki_u32 height;
4066 __vki_u32 pixelformat;
4067 __vki_u32 field;
4068 __vki_u32 bytesperline;
4069 __vki_u32 sizeimage;
4070 __vki_u32 colorspace;
4071 __vki_u32 priv;
4072 __vki_u32 flags;
4073 __vki_u32 ycbcr_enc;
4074 __vki_u32 quantization;
4075 };
4076
4077 struct vki_v4l2_fmtdesc {
4078 __vki_u32 index;
4079 __vki_u32 type;
4080 __vki_u32 flags;
4081 __vki_u8 description[32];
4082 __vki_u32 pixelformat;
4083 __vki_u32 reserved[4];
4084 };
4085
4086 struct vki_v4l2_frmsize_discrete {
4087 __vki_u32 width;
4088 __vki_u32 height;
4089 };
4090
4091 struct vki_v4l2_frmsize_stepwise {
4092 __vki_u32 min_width;
4093 __vki_u32 max_width;
4094 __vki_u32 step_width;
4095 __vki_u32 min_height;
4096 __vki_u32 max_height;
4097 __vki_u32 step_height;
4098 };
4099
4100 struct vki_v4l2_frmsizeenum {
4101 __vki_u32 index;
4102 __vki_u32 pixel_format;
4103 __vki_u32 type;
4104
4105 union {
4106 struct vki_v4l2_frmsize_discrete discrete;
4107 struct vki_v4l2_frmsize_stepwise stepwise;
4108 };
4109
4110 __vki_u32 reserved[2];
4111 };
4112
4113 struct vki_v4l2_frmival_stepwise {
4114 struct vki_v4l2_fract min;
4115 struct vki_v4l2_fract max;
4116 struct vki_v4l2_fract step;
4117 };
4118
4119 struct vki_v4l2_frmivalenum {
4120 __vki_u32 index;
4121 __vki_u32 pixel_format;
4122 __vki_u32 width;
4123 __vki_u32 height;
4124 __vki_u32 type;
4125
4126 union {
4127 struct vki_v4l2_fract discrete;
4128 struct vki_v4l2_frmival_stepwise stepwise;
4129 };
4130
4131 __vki_u32 reserved[2];
4132 };
4133
4134 struct vki_v4l2_timecode {
4135 __vki_u32 type;
4136 __vki_u32 flags;
4137 __vki_u8 frames;
4138 __vki_u8 seconds;
4139 __vki_u8 minutes;
4140 __vki_u8 hours;
4141 __vki_u8 userbits[4];
4142 };
4143
4144 struct vki_v4l2_jpegcompression {
4145 int quality;
4146 int APPn;
4147 int APP_len;
4148 char APP_data[60];
4149 int COM_len;
4150 char COM_data[60];
4151 __vki_u32 jpeg_markers;
4152 };
4153
4154 struct vki_v4l2_requestbuffers {
4155 __vki_u32 count;
4156 __vki_u32 type;
4157 __vki_u32 memory;
4158 __vki_u32 reserved[2];
4159 };
4160
4161 struct vki_v4l2_plane {
4162 __vki_u32 bytesused;
4163 __vki_u32 length;
4164 union {
4165 __vki_u32 mem_offset;
4166 unsigned long userptr;
4167 __vki_s32 fd;
4168 } m;
4169 __vki_u32 data_offset;
4170 __vki_u32 reserved[11];
4171 };
4172
4173 #define VKI_V4L2_MEMORY_MMAP 1
4174 #define VKI_V4L2_MEMORY_DMABUF 4
4175 #define VKI_V4L2_BUF_FLAG_TIMESTAMP_MASK 0x0000e000
4176 #define VKI_V4L2_BUF_FLAG_TIMESTAMP_COPY 0x00004000
4177 struct vki_v4l2_buffer {
4178 __vki_u32 index;
4179 __vki_u32 type;
4180 __vki_u32 bytesused;
4181 __vki_u32 flags;
4182 __vki_u32 field;
4183 struct vki_timeval timestamp;
4184 struct vki_v4l2_timecode timecode;
4185 __vki_u32 sequence;
4186
4187
4188 __vki_u32 memory;
4189 union {
4190 __vki_u32 offset;
4191 unsigned long userptr;
4192 struct vki_v4l2_plane *planes;
4193 __vki_s32 fd;
4194 } m;
4195 __vki_u32 length;
4196 __vki_u32 reserved2;
4197 __vki_u32 reserved;
4198 };
4199
4200 struct vki_v4l2_exportbuffer {
4201 __vki_u32 type;
4202 __vki_u32 index;
4203 __vki_u32 plane;
4204 __vki_u32 flags;
4205 __vki_s32 fd;
4206 __vki_u32 reserved[11];
4207 };
4208
4209 struct vki_v4l2_framebuffer {
4210 __vki_u32 capability;
4211 __vki_u32 flags;
4212 void *base;
4213 struct {
4214 __vki_u32 width;
4215 __vki_u32 height;
4216 __vki_u32 pixelformat;
4217 __vki_u32 field;
4218 __vki_u32 bytesperline;
4219 __vki_u32 sizeimage;
4220 __vki_u32 colorspace;
4221 __vki_u32 priv;
4222 } fmt;
4223 };
4224
4225 struct vki_v4l2_clip {
4226 struct vki_v4l2_rect c;
4227 struct vki_v4l2_clip __user *next;
4228 };
4229
4230 struct vki_v4l2_window {
4231 struct vki_v4l2_rect w;
4232 __vki_u32 field;
4233 __vki_u32 chromakey;
4234 struct vki_v4l2_clip __user *clips;
4235 __vki_u32 clipcount;
4236 void __user *bitmap;
4237 __vki_u8 global_alpha;
4238 };
4239
4240 struct vki_v4l2_captureparm {
4241 __vki_u32 capability;
4242 __vki_u32 capturemode;
4243 struct vki_v4l2_fract timeperframe;
4244 __vki_u32 extendedmode;
4245 __vki_u32 readbuffers;
4246 __vki_u32 reserved[4];
4247 };
4248
4249 struct vki_v4l2_outputparm {
4250 __vki_u32 capability;
4251 __vki_u32 outputmode;
4252 struct vki_v4l2_fract timeperframe;
4253 __vki_u32 extendedmode;
4254 __vki_u32 writebuffers;
4255 __vki_u32 reserved[4];
4256 };
4257
4258 struct vki_v4l2_cropcap {
4259 __vki_u32 type;
4260 struct vki_v4l2_rect bounds;
4261 struct vki_v4l2_rect defrect;
4262 struct vki_v4l2_fract pixelaspect;
4263 };
4264
4265 struct vki_v4l2_crop {
4266 __vki_u32 type;
4267 struct vki_v4l2_rect c;
4268 };
4269
4270 struct vki_v4l2_selection {
4271 __vki_u32 type;
4272 __vki_u32 target;
4273 __vki_u32 flags;
4274 struct vki_v4l2_rect r;
4275 __vki_u32 reserved[9];
4276 };
4277
4278 typedef __vki_u64 vki_v4l2_std_id;
4279
4280 struct vki_v4l2_standard {
4281 __vki_u32 index;
4282 vki_v4l2_std_id id;
4283 __vki_u8 name[24];
4284 struct vki_v4l2_fract frameperiod;
4285 __vki_u32 framelines;
4286 __vki_u32 reserved[4];
4287 };
4288
4289 struct vki_v4l2_bt_timings {
4290 __vki_u32 width;
4291 __vki_u32 height;
4292 __vki_u32 interlaced;
4293 __vki_u32 polarities;
4294 __vki_u64 pixelclock;
4295 __vki_u32 hfrontporch;
4296 __vki_u32 hsync;
4297 __vki_u32 hbackporch;
4298 __vki_u32 vfrontporch;
4299 __vki_u32 vsync;
4300 __vki_u32 vbackporch;
4301 __vki_u32 il_vfrontporch;
4302 __vki_u32 il_vsync;
4303 __vki_u32 il_vbackporch;
4304 __vki_u32 standards;
4305 __vki_u32 flags;
4306 __vki_u32 reserved[14];
4307 } __attribute__ ((packed));
4308
4309 struct vki_v4l2_dv_timings {
4310 __vki_u32 type;
4311 union {
4312 struct vki_v4l2_bt_timings bt;
4313 __vki_u32 reserved[32];
4314 };
4315 } __attribute__ ((packed));
4316
4317 struct vki_v4l2_enum_dv_timings {
4318 __vki_u32 index;
4319 __vki_u32 pad;
4320 __vki_u32 reserved[2];
4321 struct vki_v4l2_dv_timings timings;
4322 };
4323
4324 struct vki_v4l2_bt_timings_cap {
4325 __vki_u32 min_width;
4326 __vki_u32 max_width;
4327 __vki_u32 min_height;
4328 __vki_u32 max_height;
4329 __vki_u64 min_pixelclock;
4330 __vki_u64 max_pixelclock;
4331 __vki_u32 standards;
4332 __vki_u32 capabilities;
4333 __vki_u32 reserved[16];
4334 } __attribute__ ((packed));
4335
4336 struct vki_v4l2_dv_timings_cap {
4337 __vki_u32 type;
4338 __vki_u32 pad;
4339 __vki_u32 reserved[2];
4340 union {
4341 struct vki_v4l2_bt_timings_cap bt;
4342 __vki_u32 raw_data[32];
4343 };
4344 };
4345
4346 struct vki_v4l2_input {
4347 __vki_u32 index;
4348 __vki_u8 name[32];
4349 __vki_u32 type;
4350 __vki_u32 audioset;
4351 __vki_u32 tuner;
4352 vki_v4l2_std_id std;
4353 __vki_u32 status;
4354 __vki_u32 capabilities;
4355 __vki_u32 reserved[3];
4356 };
4357
4358 struct vki_v4l2_output {
4359 __vki_u32 index;
4360 __vki_u8 name[32];
4361 __vki_u32 type;
4362 __vki_u32 audioset;
4363 __vki_u32 modulator;
4364 vki_v4l2_std_id std;
4365 __vki_u32 capabilities;
4366 __vki_u32 reserved[3];
4367 };
4368
4369 struct vki_v4l2_control {
4370 __vki_u32 id;
4371 __vki_s32 value;
4372 };
4373
4374 struct vki_v4l2_ext_control {
4375 __vki_u32 id;
4376 __vki_u32 size;
4377 __vki_u32 reserved2[1];
4378 union {
4379 __vki_s32 value;
4380 __vki_s64 value64;
4381 char *string;
4382 __vki_u8 *p_u8;
4383 __vki_u16 *p_u16;
4384 __vki_u32 *p_u32;
4385 void *ptr;
4386 };
4387 } __attribute__ ((packed));
4388
4389 struct vki_v4l2_ext_controls {
4390 __vki_u32 ctrl_class;
4391 __vki_u32 count;
4392 __vki_u32 error_idx;
4393 __vki_u32 reserved[2];
4394 struct vki_v4l2_ext_control *controls;
4395 };
4396
4397 struct vki_v4l2_queryctrl {
4398 __vki_u32 id;
4399 __vki_u32 type;
4400 __vki_u8 name[32];
4401 __vki_s32 minimum;
4402 __vki_s32 maximum;
4403 __vki_s32 step;
4404 __vki_s32 default_value;
4405 __vki_u32 flags;
4406 __vki_u32 reserved[2];
4407 };
4408
4409 #define VKI_V4L2_CTRL_MAX_DIMS (4)
4410 struct vki_v4l2_query_ext_ctrl {
4411 __vki_u32 id;
4412 __vki_u32 type;
4413 char name[32];
4414 __vki_s64 minimum;
4415 __vki_s64 maximum;
4416 __vki_u64 step;
4417 __vki_s64 default_value;
4418 __vki_u32 flags;
4419 __vki_u32 elem_size;
4420 __vki_u32 elems;
4421 __vki_u32 nr_of_dims;
4422 __vki_u32 dims[VKI_V4L2_CTRL_MAX_DIMS];
4423 __vki_u32 reserved[32];
4424 };
4425
4426 struct vki_v4l2_querymenu {
4427 __vki_u32 id;
4428 __vki_u32 index;
4429 union {
4430 __vki_u8 name[32];
4431 __vki_s64 value;
4432 };
4433 __vki_u32 reserved;
4434 } __attribute__ ((packed));
4435
4436 struct vki_v4l2_tuner {
4437 __vki_u32 index;
4438 __vki_u8 name[32];
4439 __vki_u32 type;
4440 __vki_u32 capability;
4441 __vki_u32 rangelow;
4442 __vki_u32 rangehigh;
4443 __vki_u32 rxsubchans;
4444 __vki_u32 audmode;
4445 __vki_s32 signal;
4446 __vki_s32 afc;
4447 __vki_u32 reserved[4];
4448 };
4449
4450 struct vki_v4l2_modulator {
4451 __vki_u32 index;
4452 __vki_u8 name[32];
4453 __vki_u32 capability;
4454 __vki_u32 rangelow;
4455 __vki_u32 rangehigh;
4456 __vki_u32 txsubchans;
4457 __vki_u32 reserved[4];
4458 };
4459
4460 struct vki_v4l2_frequency {
4461 __vki_u32 tuner;
4462 __vki_u32 type;
4463 __vki_u32 frequency;
4464 __vki_u32 reserved[8];
4465 };
4466
4467 struct vki_v4l2_frequency_band {
4468 __vki_u32 tuner;
4469 __vki_u32 type;
4470 __vki_u32 index;
4471 __vki_u32 capability;
4472 __vki_u32 rangelow;
4473 __vki_u32 rangehigh;
4474 __vki_u32 modulation;
4475 __vki_u32 reserved[9];
4476 };
4477
4478 struct vki_v4l2_hw_freq_seek {
4479 __vki_u32 tuner;
4480 __vki_u32 type;
4481 __vki_u32 seek_upward;
4482 __vki_u32 wrap_around;
4483 __vki_u32 spacing;
4484 __vki_u32 rangelow;
4485 __vki_u32 rangehigh;
4486 __vki_u32 reserved[5];
4487 };
4488
4489 struct vki_v4l2_audio {
4490 __vki_u32 index;
4491 __vki_u8 name[32];
4492 __vki_u32 capability;
4493 __vki_u32 mode;
4494 __vki_u32 reserved[2];
4495 };
4496
4497 struct vki_v4l2_audioout {
4498 __vki_u32 index;
4499 __vki_u8 name[32];
4500 __vki_u32 capability;
4501 __vki_u32 mode;
4502 __vki_u32 reserved[2];
4503 };
4504
4505 struct vki_v4l2_enc_idx_entry {
4506 __vki_u64 offset;
4507 __vki_u64 pts;
4508 __vki_u32 length;
4509 __vki_u32 flags;
4510 __vki_u32 reserved[2];
4511 };
4512
4513 #define VKI_V4L2_ENC_IDX_ENTRIES (64)
4514 struct vki_v4l2_enc_idx {
4515 __vki_u32 entries;
4516 __vki_u32 entries_cap;
4517 __vki_u32 reserved[4];
4518 struct vki_v4l2_enc_idx_entry entry[VKI_V4L2_ENC_IDX_ENTRIES];
4519 };
4520
4521 struct vki_v4l2_encoder_cmd {
4522 __vki_u32 cmd;
4523 __vki_u32 flags;
4524 union {
4525 struct {
4526 __vki_u32 data[8];
4527 } raw;
4528 };
4529 };
4530
4531 struct vki_v4l2_decoder_cmd {
4532 __vki_u32 cmd;
4533 __vki_u32 flags;
4534 union {
4535 struct {
4536 __vki_u64 pts;
4537 } stop;
4538
4539 struct {
4540 __vki_s32 speed;
4541 __vki_u32 format;
4542 } start;
4543
4544 struct {
4545 __vki_u32 data[16];
4546 } raw;
4547 };
4548 };
4549
4550 struct vki_v4l2_vbi_format {
4551 __vki_u32 sampling_rate;
4552 __vki_u32 offset;
4553 __vki_u32 samples_per_line;
4554 __vki_u32 sample_format;
4555 __vki_s32 start[2];
4556 __vki_u32 count[2];
4557 __vki_u32 flags;
4558 __vki_u32 reserved[2];
4559 };
4560
4561 struct vki_v4l2_sliced_vbi_format {
4562 __vki_u16 service_set;
4563 __vki_u16 service_lines[2][24];
4564 __vki_u32 io_size;
4565 __vki_u32 reserved[2];
4566 };
4567
4568 struct vki_v4l2_sliced_vbi_cap {
4569 __vki_u16 service_set;
4570 __vki_u16 service_lines[2][24];
4571 __vki_u32 type;
4572 __vki_u32 reserved[3];
4573 };
4574
4575 struct vki_v4l2_sliced_vbi_data {
4576 __vki_u32 id;
4577 __vki_u32 field;
4578 __vki_u32 line;
4579 __vki_u32 reserved;
4580 __vki_u8 data[48];
4581 };
4582
4583 struct vki_v4l2_plane_pix_format {
4584 __vki_u32 sizeimage;
4585 __vki_u32 bytesperline;
4586 __vki_u16 reserved[6];
4587 } __attribute__ ((packed));
4588
4589 #define VKI_VIDEO_MAX_PLANES 8
4590
4591 struct vki_v4l2_pix_format_mplane {
4592 __vki_u32 width;
4593 __vki_u32 height;
4594 __vki_u32 pixelformat;
4595 __vki_u32 field;
4596 __vki_u32 colorspace;
4597
4598 struct vki_v4l2_plane_pix_format plane_fmt[VKI_VIDEO_MAX_PLANES];
4599 __vki_u8 num_planes;
4600 __vki_u8 flags;
4601 __vki_u8 ycbcr_enc;
4602 __vki_u8 quantization;
4603 __vki_u8 reserved[8];
4604 } __attribute__ ((packed));
4605
4606 struct vki_v4l2_sdr_format {
4607 __vki_u32 pixelformat;
4608 __vki_u32 buffersize;
4609 __vki_u8 reserved[24];
4610 } __attribute__ ((packed));
4611
4612 enum vki_v4l2_buf_type {
4613 VKI_V4L2_BUF_TYPE_VIDEO_CAPTURE = 1,
4614 VKI_V4L2_BUF_TYPE_VIDEO_OUTPUT = 2,
4615 VKI_V4L2_BUF_TYPE_VIDEO_OVERLAY = 3,
4616 VKI_V4L2_BUF_TYPE_VBI_CAPTURE = 4,
4617 VKI_V4L2_BUF_TYPE_VBI_OUTPUT = 5,
4618 VKI_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6,
4619 VKI_V4L2_BUF_TYPE_SLICED_VBI_OUTPUT = 7,
4620 VKI_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8,
4621 VKI_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9,
4622 VKI_V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE = 10,
4623 VKI_V4L2_BUF_TYPE_SDR_CAPTURE = 11,
4624 };
4625
4626 struct vki_v4l2_format {
4627 __vki_u32 type;
4628 union {
4629 struct vki_v4l2_pix_format pix;
4630 struct vki_v4l2_pix_format_mplane pix_mp;
4631 struct vki_v4l2_window win;
4632 struct vki_v4l2_vbi_format vbi;
4633 struct vki_v4l2_sliced_vbi_format sliced;
4634 struct vki_v4l2_sdr_format sdr;
4635 __vki_u8 raw_data[200];
4636 } fmt;
4637 };
4638
4639 struct vki_v4l2_streamparm {
4640 __vki_u32 type;
4641 union {
4642 struct vki_v4l2_captureparm capture;
4643 struct vki_v4l2_outputparm output;
4644 __vki_u8 raw_data[200];
4645 } parm;
4646 };
4647
4648 struct vki_v4l2_event_vsync {
4649 __vki_u8 field;
4650 } __attribute__ ((packed));
4651
4652 struct vki_v4l2_event_ctrl {
4653 __vki_u32 changes;
4654 __vki_u32 type;
4655 union {
4656 __vki_s32 value;
4657 __vki_s64 value64;
4658 };
4659 __vki_u32 flags;
4660 __vki_s32 minimum;
4661 __vki_s32 maximum;
4662 __vki_s32 step;
4663 __vki_s32 default_value;
4664 };
4665
4666 struct vki_v4l2_event_frame_sync {
4667 __vki_u32 frame_sequence;
4668 };
4669
4670 struct vki_v4l2_event_src_change {
4671 __vki_u32 changes;
4672 };
4673
4674 struct vki_v4l2_event_motion_det {
4675 __vki_u32 flags;
4676 __vki_u32 frame_sequence;
4677 __vki_u32 region_mask;
4678 };
4679
4680 struct vki_v4l2_event {
4681 __vki_u32 type;
4682 union {
4683 struct vki_v4l2_event_vsync vsync;
4684 struct vki_v4l2_event_ctrl ctrl;
4685 struct vki_v4l2_event_frame_sync frame_sync;
4686 struct vki_v4l2_event_src_change src_change;
4687 struct vki_v4l2_event_motion_det motion_det;
4688 __vki_u8 data[64];
4689 } u;
4690 __vki_u32 pending;
4691 __vki_u32 sequence;
4692 struct vki_timespec timestamp;
4693 __vki_u32 id;
4694 __vki_u32 reserved[8];
4695 };
4696
4697 struct vki_v4l2_event_subscription {
4698 __vki_u32 type;
4699 __vki_u32 id;
4700 __vki_u32 flags;
4701 __vki_u32 reserved[5];
4702 };
4703
4704 struct vki_v4l2_dbg_match {
4705 __vki_u32 type;
4706 union {
4707 __vki_u32 addr;
4708 char name[32];
4709 };
4710 } __attribute__ ((packed));
4711
4712 struct vki_v4l2_dbg_register {
4713 struct vki_v4l2_dbg_match match;
4714 __vki_u32 size;
4715 __vki_u64 reg;
4716 __vki_u64 val;
4717 } __attribute__ ((packed));
4718
4719 struct vki_v4l2_dbg_chip_info {
4720 struct vki_v4l2_dbg_match match;
4721 char name[32];
4722 __vki_u32 flags;
4723 __vki_u32 reserved[32];
4724 } __attribute__ ((packed));
4725
4726 struct vki_v4l2_create_buffers {
4727 __vki_u32 index;
4728 __vki_u32 count;
4729 __vki_u32 memory;
4730 struct vki_v4l2_format format;
4731 __vki_u32 reserved[8];
4732 };
4733
4734 struct vki_v4l2_edid {
4735 __vki_u32 pad;
4736 __vki_u32 start_block;
4737 __vki_u32 blocks;
4738 __vki_u32 reserved[5];
4739 __vki_u8 *edid;
4740 };
4741
4742 #define VKI_V4L2_QUERYCAP _VKI_IOR('V', 0, struct vki_v4l2_capability)
4743 #define VKI_V4L2_ENUM_FMT _VKI_IOWR('V', 2, struct vki_v4l2_fmtdesc)
4744 #define VKI_V4L2_G_FMT _VKI_IOWR('V', 4, struct vki_v4l2_format)
4745 #define VKI_V4L2_S_FMT _VKI_IOWR('V', 5, struct vki_v4l2_format)
4746 #define VKI_V4L2_REQBUFS _VKI_IOWR('V', 8, struct vki_v4l2_requestbuffers)
4747 #define VKI_V4L2_QUERYBUF _VKI_IOWR('V', 9, struct vki_v4l2_buffer)
4748 #define VKI_V4L2_G_FBUF _VKI_IOR('V', 10, struct vki_v4l2_framebuffer)
4749 #define VKI_V4L2_S_FBUF _VKI_IOW('V', 11, struct vki_v4l2_framebuffer)
4750 #define VKI_V4L2_OVERLAY _VKI_IOW('V', 14, int)
4751 #define VKI_V4L2_QBUF _VKI_IOWR('V', 15, struct vki_v4l2_buffer)
4752 #define VKI_V4L2_EXPBUF _VKI_IOWR('V', 16, struct vki_v4l2_exportbuffer)
4753 #define VKI_V4L2_DQBUF _VKI_IOWR('V', 17, struct vki_v4l2_buffer)
4754 #define VKI_V4L2_STREAMON _VKI_IOW('V', 18, int)
4755 #define VKI_V4L2_STREAMOFF _VKI_IOW('V', 19, int)
4756 #define VKI_V4L2_G_PARM _VKI_IOWR('V', 21, struct vki_v4l2_streamparm)
4757 #define VKI_V4L2_S_PARM _VKI_IOWR('V', 22, struct vki_v4l2_streamparm)
4758 #define VKI_V4L2_G_STD _VKI_IOR('V', 23, vki_v4l2_std_id)
4759 #define VKI_V4L2_S_STD _VKI_IOW('V', 24, vki_v4l2_std_id)
4760 #define VKI_V4L2_ENUMSTD _VKI_IOWR('V', 25, struct vki_v4l2_standard)
4761 #define VKI_V4L2_ENUMINPUT _VKI_IOWR('V', 26, struct vki_v4l2_input)
4762 #define VKI_V4L2_G_CTRL _VKI_IOWR('V', 27, struct vki_v4l2_control)
4763 #define VKI_V4L2_S_CTRL _VKI_IOWR('V', 28, struct vki_v4l2_control)
4764 #define VKI_V4L2_G_TUNER _VKI_IOWR('V', 29, struct vki_v4l2_tuner)
4765 #define VKI_V4L2_S_TUNER _VKI_IOW('V', 30, struct vki_v4l2_tuner)
4766 #define VKI_V4L2_G_AUDIO _VKI_IOR('V', 33, struct vki_v4l2_audio)
4767 #define VKI_V4L2_S_AUDIO _VKI_IOW('V', 34, struct vki_v4l2_audio)
4768 #define VKI_V4L2_QUERYCTRL _VKI_IOWR('V', 36, struct vki_v4l2_queryctrl)
4769 #define VKI_V4L2_QUERYMENU _VKI_IOWR('V', 37, struct vki_v4l2_querymenu)
4770 #define VKI_V4L2_G_INPUT _VKI_IOR('V', 38, int)
4771 #define VKI_V4L2_S_INPUT _VKI_IOWR('V', 39, int)
4772 #define VKI_V4L2_G_EDID _VKI_IOWR('V', 40, struct vki_v4l2_edid)
4773 #define VKI_V4L2_S_EDID _VKI_IOWR('V', 41, struct vki_v4l2_edid)
4774 #define VKI_V4L2_G_OUTPUT _VKI_IOR('V', 46, int)
4775 #define VKI_V4L2_S_OUTPUT _VKI_IOWR('V', 47, int)
4776 #define VKI_V4L2_ENUMOUTPUT _VKI_IOWR('V', 48, struct vki_v4l2_output)
4777 #define VKI_V4L2_G_AUDOUT _VKI_IOR('V', 49, struct vki_v4l2_audioout)
4778 #define VKI_V4L2_S_AUDOUT _VKI_IOW('V', 50, struct vki_v4l2_audioout)
4779 #define VKI_V4L2_G_MODULATOR _VKI_IOWR('V', 54, struct vki_v4l2_modulator)
4780 #define VKI_V4L2_S_MODULATOR _VKI_IOW('V', 55, struct vki_v4l2_modulator)
4781 #define VKI_V4L2_G_FREQUENCY _VKI_IOWR('V', 56, struct vki_v4l2_frequency)
4782 #define VKI_V4L2_S_FREQUENCY _VKI_IOW('V', 57, struct vki_v4l2_frequency)
4783 #define VKI_V4L2_CROPCAP _VKI_IOWR('V', 58, struct vki_v4l2_cropcap)
4784 #define VKI_V4L2_G_CROP _VKI_IOWR('V', 59, struct vki_v4l2_crop)
4785 #define VKI_V4L2_S_CROP _VKI_IOW('V', 60, struct vki_v4l2_crop)
4786 #define VKI_V4L2_G_JPEGCOMP _VKI_IOR('V', 61, struct vki_v4l2_jpegcompression)
4787 #define VKI_V4L2_S_JPEGCOMP _VKI_IOW('V', 62, struct vki_v4l2_jpegcompression)
4788 #define VKI_V4L2_QUERYSTD _VKI_IOR('V', 63, vki_v4l2_std_id)
4789 #define VKI_V4L2_TRY_FMT _VKI_IOWR('V', 64, struct vki_v4l2_format)
4790 #define VKI_V4L2_ENUMAUDIO _VKI_IOWR('V', 65, struct vki_v4l2_audio)
4791 #define VKI_V4L2_ENUMAUDOUT _VKI_IOWR('V', 66, struct vki_v4l2_audioout)
4792 #define VKI_V4L2_G_PRIORITY _VKI_IOR('V', 67, __vki_u32)
4793 #define VKI_V4L2_S_PRIORITY _VKI_IOW('V', 68, __vki_u32)
4794 #define VKI_V4L2_G_SLICED_VBI_CAP _VKI_IOWR('V', 69, struct vki_v4l2_sliced_vbi_cap)
4795 #define VKI_V4L2_LOG_STATUS _VKI_IO('V', 70)
4796 #define VKI_V4L2_G_EXT_CTRLS _VKI_IOWR('V', 71, struct vki_v4l2_ext_controls)
4797 #define VKI_V4L2_S_EXT_CTRLS _VKI_IOWR('V', 72, struct vki_v4l2_ext_controls)
4798 #define VKI_V4L2_TRY_EXT_CTRLS _VKI_IOWR('V', 73, struct vki_v4l2_ext_controls)
4799 #define VKI_V4L2_ENUM_FRAMESIZES _VKI_IOWR('V', 74, struct vki_v4l2_frmsizeenum)
4800 #define VKI_V4L2_ENUM_FRAMEINTERVALS _VKI_IOWR('V', 75, struct vki_v4l2_frmivalenum)
4801 #define VKI_V4L2_G_ENC_INDEX _VKI_IOR('V', 76, struct vki_v4l2_enc_idx)
4802 #define VKI_V4L2_ENCODER_CMD _VKI_IOWR('V', 77, struct vki_v4l2_encoder_cmd)
4803 #define VKI_V4L2_TRY_ENCODER_CMD _VKI_IOWR('V', 78, struct vki_v4l2_encoder_cmd)
4804 #define VKI_V4L2_DBG_S_REGISTER _VKI_IOW('V', 79, struct vki_v4l2_dbg_register)
4805 #define VKI_V4L2_DBG_G_REGISTER _VKI_IOWR('V', 80, struct vki_v4l2_dbg_register)
4806 #define VKI_V4L2_S_HW_FREQ_SEEK _VKI_IOW('V', 82, struct vki_v4l2_hw_freq_seek)
4807 #define VKI_V4L2_S_DV_TIMINGS _VKI_IOWR('V', 87, struct vki_v4l2_dv_timings)
4808 #define VKI_V4L2_G_DV_TIMINGS _VKI_IOWR('V', 88, struct vki_v4l2_dv_timings)
4809 #define VKI_V4L2_DQEVENT _VKI_IOR('V', 89, struct vki_v4l2_event)
4810 #define VKI_V4L2_SUBSCRIBE_EVENT _VKI_IOW('V', 90, struct vki_v4l2_event_subscription)
4811 #define VKI_V4L2_UNSUBSCRIBE_EVENT _VKI_IOW('V', 91, struct vki_v4l2_event_subscription)
4812 #define VKI_V4L2_CREATE_BUFS _VKI_IOWR('V', 92, struct vki_v4l2_create_buffers)
4813 #define VKI_V4L2_PREPARE_BUF _VKI_IOWR('V', 93, struct vki_v4l2_buffer)
4814 #define VKI_V4L2_G_SELECTION _VKI_IOWR('V', 94, struct vki_v4l2_selection)
4815 #define VKI_V4L2_S_SELECTION _VKI_IOWR('V', 95, struct vki_v4l2_selection)
4816 #define VKI_V4L2_DECODER_CMD _VKI_IOWR('V', 96, struct vki_v4l2_decoder_cmd)
4817 #define VKI_V4L2_TRY_DECODER_CMD _VKI_IOWR('V', 97, struct vki_v4l2_decoder_cmd)
4818 #define VKI_V4L2_ENUM_DV_TIMINGS _VKI_IOWR('V', 98, struct vki_v4l2_enum_dv_timings)
4819 #define VKI_V4L2_QUERY_DV_TIMINGS _VKI_IOR('V', 99, struct vki_v4l2_dv_timings)
4820 #define VKI_V4L2_DV_TIMINGS_CAP _VKI_IOWR('V', 100, struct vki_v4l2_dv_timings_cap)
4821 #define VKI_V4L2_ENUM_FREQ_BANDS _VKI_IOWR('V', 101, struct vki_v4l2_frequency_band)
4822 #define VKI_V4L2_DBG_G_CHIP_INFO _VKI_IOWR('V', 102, struct vki_v4l2_dbg_chip_info)
4823 #define VKI_V4L2_QUERY_EXT_CTRL _VKI_IOWR('V', 103, struct vki_v4l2_query_ext_ctrl)
4824
4825 struct vki_v4l2_mbus_framefmt {
4826 __vki_u32 width;
4827 __vki_u32 height;
4828 __vki_u32 code;
4829 __vki_u32 field;
4830 __vki_u32 colorspace;
4831 __vki_u16 ycbcr_enc;
4832 __vki_u16 quantization;
4833 __vki_u32 reserved[6];
4834 };
4835
4836 struct vki_v4l2_subdev_format {
4837 __vki_u32 which;
4838 __vki_u32 pad;
4839 struct vki_v4l2_mbus_framefmt format;
4840 __vki_u32 reserved[8];
4841 };
4842
4843 struct vki_v4l2_subdev_crop {
4844 __vki_u32 which;
4845 __vki_u32 pad;
4846 struct vki_v4l2_rect rect;
4847 __vki_u32 reserved[8];
4848 };
4849
4850 struct vki_v4l2_subdev_mbus_code_enum {
4851 __vki_u32 pad;
4852 __vki_u32 index;
4853 __vki_u32 code;
4854 __vki_u32 which;
4855 __vki_u32 reserved[8];
4856 };
4857
4858 struct vki_v4l2_subdev_frame_size_enum {
4859 __vki_u32 index;
4860 __vki_u32 pad;
4861 __vki_u32 code;
4862 __vki_u32 min_width;
4863 __vki_u32 max_width;
4864 __vki_u32 min_height;
4865 __vki_u32 max_height;
4866 __vki_u32 which;
4867 __vki_u32 reserved[8];
4868 };
4869
4870 struct vki_v4l2_subdev_frame_interval {
4871 __vki_u32 pad;
4872 struct vki_v4l2_fract interval;
4873 __vki_u32 reserved[9];
4874 };
4875
4876 struct vki_v4l2_subdev_frame_interval_enum {
4877 __vki_u32 index;
4878 __vki_u32 pad;
4879 __vki_u32 code;
4880 __vki_u32 width;
4881 __vki_u32 height;
4882 struct vki_v4l2_fract interval;
4883 __vki_u32 which;
4884 __vki_u32 reserved[8];
4885 };
4886
4887 struct vki_v4l2_subdev_selection {
4888 __vki_u32 which;
4889 __vki_u32 pad;
4890 __vki_u32 target;
4891 __vki_u32 flags;
4892 struct vki_v4l2_rect r;
4893 __vki_u32 reserved[8];
4894 };
4895
4896 #define VKI_V4L2_SUBDEV_G_FMT _VKI_IOWR('V', 4, struct vki_v4l2_subdev_format)
4897 #define VKI_V4L2_SUBDEV_S_FMT _VKI_IOWR('V', 5, struct vki_v4l2_subdev_format)
4898 #define VKI_V4L2_SUBDEV_G_FRAME_INTERVAL _VKI_IOWR('V', 21, struct vki_v4l2_subdev_frame_interval)
4899 #define VKI_V4L2_SUBDEV_S_FRAME_INTERVAL _VKI_IOWR('V', 22, struct vki_v4l2_subdev_frame_interval)
4900 #define VKI_V4L2_SUBDEV_ENUM_MBUS_CODE _VKI_IOWR('V', 2, struct vki_v4l2_subdev_mbus_code_enum)
4901 #define VKI_V4L2_SUBDEV_ENUM_FRAME_SIZE _VKI_IOWR('V', 74, struct vki_v4l2_subdev_frame_size_enum)
4902 #define VKI_V4L2_SUBDEV_ENUM_FRAME_INTERVAL _VKI_IOWR('V', 75, struct vki_v4l2_subdev_frame_interval_enum)
4903 #define VKI_V4L2_SUBDEV_G_CROP _VKI_IOWR('V', 59, struct vki_v4l2_subdev_crop)
4904 #define VKI_V4L2_SUBDEV_S_CROP _VKI_IOWR('V', 60, struct vki_v4l2_subdev_crop)
4905 #define VKI_V4L2_SUBDEV_G_SELECTION _VKI_IOWR('V', 61, struct vki_v4l2_subdev_selection)
4906 #define VKI_V4L2_SUBDEV_S_SELECTION _VKI_IOWR('V', 62, struct vki_v4l2_subdev_selection)
4907
4908 struct vki_media_device_info {
4909 char driver[16];
4910 char model[32];
4911 char serial[40];
4912 char bus_info[32];
4913 __vki_u32 media_version;
4914 __vki_u32 hw_revision;
4915 __vki_u32 driver_version;
4916 __vki_u32 reserved[31];
4917 };
4918
4919 struct vki_media_entity_desc {
4920 __vki_u32 id;
4921 char name[32];
4922 __vki_u32 type;
4923 __vki_u32 revision;
4924 __vki_u32 flags;
4925 __vki_u32 group_id;
4926 __vki_u16 pads;
4927 __vki_u16 links;
4928
4929 __vki_u32 reserved[4];
4930
4931 union {
4932
4933 struct {
4934 __vki_u32 major;
4935 __vki_u32 minor;
4936 } v4l;
4937 struct {
4938 __vki_u32 major;
4939 __vki_u32 minor;
4940 } fb;
4941 struct {
4942 __vki_u32 card;
4943 __vki_u32 device;
4944 __vki_u32 subdevice;
4945 } alsa;
4946 int dvb;
4947
4948
4949
4950 __vki_u8 raw[184];
4951 };
4952 };
4953
4954 struct vki_media_pad_desc {
4955 __vki_u32 entity;
4956 __vki_u16 index;
4957 __vki_u32 flags;
4958 __vki_u32 reserved[2];
4959 };
4960
4961 struct vki_media_link_desc {
4962 struct vki_media_pad_desc source;
4963 struct vki_media_pad_desc sink;
4964 __vki_u32 flags;
4965 __vki_u32 reserved[2];
4966 };
4967
4968 struct vki_media_links_enum {
4969 __vki_u32 entity;
4970 struct vki_media_pad_desc __user *pads;
4971 struct vki_media_link_desc __user *links;
4972 __vki_u32 reserved[4];
4973 };
4974
4975 #define VKI_MEDIA_IOC_DEVICE_INFO _VKI_IOWR('|', 0x00, struct vki_media_device_info)
4976 #define VKI_MEDIA_IOC_ENUM_ENTITIES _VKI_IOWR('|', 0x01, struct vki_media_entity_desc)
4977 #define VKI_MEDIA_IOC_ENUM_LINKS _VKI_IOWR('|', 0x02, struct vki_media_links_enum)
4978 #define VKI_MEDIA_IOC_SETUP_LINK _VKI_IOWR('|', 0x03, struct vki_media_link_desc)
4979
4980
4981 #define VKI_DMX_STOP _VKI_IO('o', 42)
4982
4983
4984 enum vki_kcmp_type {
4985 VKI_KCMP_FILE,
4986 VKI_KCMP_VM,
4987 VKI_KCMP_FILES,
4988 VKI_KCMP_FS,
4989 VKI_KCMP_SIGHAND,
4990 VKI_KCMP_IO,
4991 VKI_KCMP_SYSVSEM,
4992
4993 VKI_KCMP_TYPES
4994 };
4995
4996
4997
4998
4999
5000 #define VKI_SECCOMP_MODE_FILTER 2
5001
5002
5003
5004
5005 #define VKI_BINPRM_BUF_SIZE 128
5006
5007
5008
5009
5010
5011 struct vki_serial_struct {
5012 int type;
5013 int line;
5014 unsigned int port;
5015 int irq;
5016 int flags;
5017 int xmit_fifo_size;
5018 int custom_divisor;
5019 int baud_base;
5020 unsigned short close_delay;
5021 char io_type;
5022 char reserved_char[1];
5023 int hub6;
5024 unsigned short closing_wait;
5025 unsigned short closing_wait2;
5026 unsigned char *iomem_base;
5027 unsigned short iomem_reg_shift;
5028 unsigned int port_high;
5029 unsigned long iomap_base;
5030 };
5031
5032
5033
5034
5035
5036 #if !defined(VKI_INIT_ARCH_ELF_STATE)
5037
5038
5039
5040
5041
5042 struct vki_arch_elf_state {
5043 };
5044
5045 # define VKI_INIT_ARCH_ELF_STATE { }
5046
5047 #endif
5048
5049
5050
5051
5052
5053 #define VKI_PR_SET_FP_MODE 45
5054 #define VKI_PR_GET_FP_MODE 46
5055 # define VKI_PR_FP_MODE_FR (1 << 0)
5056 # define VKI_PR_FP_MODE_FRE (1 << 1)
5057
5058 #endif
5059
5060
5061
5062
5063
5064 struct vki_blk_zone {
5065 __vki_u64 start;
5066 __vki_u64 len;
5067 __vki_u64 wp;
5068 __vki_u8 type;
5069 __vki_u8 cond;
5070 __vki_u8 non_seq;
5071 __vki_u8 reset;
5072 __vki_u8 reserved[36];
5073 };
5074
5075 struct vki_blk_zone_report {
5076 __vki_u64 sector;
5077 __vki_u32 nr_zones;
5078 __vki_u8 reserved[4];
5079 struct vki_blk_zone zones[0];
5080 };
5081
5082 struct vki_blk_zone_range {
5083 __vki_u64 sector;
5084 __vki_u64 nr_sectors;
5085 };
5086
5087 #define VKI_BLKREPORTZONE _VKI_IOWR(0x12, 130, struct vki_blk_zone_report)
5088 #define VKI_BLKRESETZONE _VKI_IOW(0x12, 131, struct vki_blk_zone_range)
5089
5090
5091
5092
5093
5094 struct vki_bpf_insn {
5095 __vki_u8 code;
5096 __vki_u8 dst_reg:4;
5097 __vki_u8 src_reg:4;
5098 __vki_s16 off;
5099 __vki_s32 imm;
5100 };
5101
5102 enum vki_bpf_cmd {
5103 VKI_BPF_MAP_CREATE,
5104 VKI_BPF_MAP_LOOKUP_ELEM,
5105 VKI_BPF_MAP_UPDATE_ELEM,
5106 VKI_BPF_MAP_DELETE_ELEM,
5107 VKI_BPF_MAP_GET_NEXT_KEY,
5108 VKI_BPF_PROG_LOAD,
5109 VKI_BPF_OBJ_PIN,
5110 VKI_BPF_OBJ_GET,
5111 VKI_BPF_PROG_ATTACH,
5112 VKI_BPF_PROG_DETACH,
5113 VKI_BPF_PROG_TEST_RUN,
5114 VKI_BPF_PROG_GET_NEXT_ID,
5115 VKI_BPF_MAP_GET_NEXT_ID,
5116 VKI_BPF_PROG_GET_FD_BY_ID,
5117 VKI_BPF_MAP_GET_FD_BY_ID,
5118 VKI_BPF_OBJ_GET_INFO_BY_FD,
5119 VKI_BPF_PROG_QUERY,
5120 VKI_BPF_RAW_TRACEPOINT_OPEN,
5121 VKI_BPF_BTF_LOAD,
5122 VKI_BPF_BTF_GET_FD_BY_ID,
5123 VKI_BPF_TASK_FD_QUERY,
5124 VKI_BPF_MAP_LOOKUP_AND_DELETE_ELEM,
5125 VKI_BPF_MAP_FREEZE,
5126 };
5127
5128 enum vki_bpf_map_type {
5129 VKI_BPF_MAP_TYPE_UNSPEC,
5130 VKI_BPF_MAP_TYPE_HASH,
5131 VKI_BPF_MAP_TYPE_ARRAY,
5132 VKI_BPF_MAP_TYPE_PROG_ARRAY,
5133 VKI_BPF_MAP_TYPE_PERF_EVENT_ARRAY,
5134 VKI_BPF_MAP_TYPE_PERCPU_HASH,
5135 VKI_BPF_MAP_TYPE_PERCPU_ARRAY,
5136 VKI_BPF_MAP_TYPE_STACK_TRACE,
5137 VKI_BPF_MAP_TYPE_CGROUP_ARRAY,
5138 VKI_BPF_MAP_TYPE_LRU_HASH,
5139 VKI_BPF_MAP_TYPE_LRU_PERCPU_HASH,
5140 VKI_BPF_MAP_TYPE_LPM_TRIE,
5141 VKI_BPF_MAP_TYPE_ARRAY_OF_MAPS,
5142 VKI_BPF_MAP_TYPE_HASH_OF_MAPS,
5143 VKI_BPF_MAP_TYPE_DEVMAP,
5144 VKI_BPF_MAP_TYPE_SOCKMAP,
5145 VKI_BPF_MAP_TYPE_CPUMAP,
5146 VKI_BPF_MAP_TYPE_XSKMAP,
5147 VKI_BPF_MAP_TYPE_SOCKHASH,
5148 };
5149
5150 enum vki_bpf_prog_type {
5151 VKI_BPF_PROG_TYPE_UNSPEC,
5152 VKI_BPF_PROG_TYPE_SOCKET_FILTER,
5153 VKI_BPF_PROG_TYPE_KPROBE,
5154 VKI_BPF_PROG_TYPE_SCHED_CLS,
5155 VKI_BPF_PROG_TYPE_SCHED_ACT,
5156 VKI_BPF_PROG_TYPE_TRACEPOINT,
5157 VKI_BPF_PROG_TYPE_XDP,
5158 VKI_BPF_PROG_TYPE_PERF_EVENT,
5159 VKI_BPF_PROG_TYPE_CGROUP_SKB,
5160 VKI_BPF_PROG_TYPE_CGROUP_SOCK,
5161 VKI_BPF_PROG_TYPE_LWT_IN,
5162 VKI_BPF_PROG_TYPE_LWT_OUT,
5163 VKI_BPF_PROG_TYPE_LWT_XMIT,
5164 VKI_BPF_PROG_TYPE_SOCK_OPS,
5165 VKI_BPF_PROG_TYPE_SK_SKB,
5166 VKI_BPF_PROG_TYPE_CGROUP_DEVICE,
5167 VKI_BPF_PROG_TYPE_SK_MSG,
5168 VKI_BPF_PROG_TYPE_RAW_TRACEPOINT,
5169 VKI_BPF_PROG_TYPE_CGROUP_SOCK_ADDR,
5170 VKI_BPF_PROG_TYPE_LWT_SEG6LOCAL,
5171 VKI_BPF_PROG_TYPE_LIRC_MODE2,
5172 };
5173
5174 enum vki_bpf_attach_type {
5175 VKI_BPF_CGROUP_INET_INGRESS,
5176 VKI_BPF_CGROUP_INET_EGRESS,
5177 VKI_BPF_CGROUP_INET_SOCK_CREATE,
5178 VKI_BPF_CGROUP_SOCK_OPS,
5179 VKI_BPF_SK_SKB_STREAM_PARSER,
5180 VKI_BPF_SK_SKB_STREAM_VERDICT,
5181 VKI_BPF_CGROUP_DEVICE,
5182 VKI_BPF_SK_MSG_VERDICT,
5183 VKI_BPF_CGROUP_INET4_BIND,
5184 VKI_BPF_CGROUP_INET6_BIND,
5185 VKI_BPF_CGROUP_INET4_CONNECT,
5186 VKI_BPF_CGROUP_INET6_CONNECT,
5187 VKI_BPF_CGROUP_INET4_POST_BIND,
5188 VKI_BPF_CGROUP_INET6_POST_BIND,
5189 VKI_BPF_CGROUP_UDP4_SENDMSG,
5190 VKI_BPF_CGROUP_UDP6_SENDMSG,
5191 VKI_BPF_LIRC_MODE2,
5192 __VKI_MAX_BPF_ATTACH_TYPE
5193 };
5194
5195
5196 #define VKI_BPF_F_NUMA_NODE (1U << 2)
5197
5198 #define VKI_BPF_OBJ_NAME_LEN 16U
5199
5200 union vki_bpf_attr {
5201 struct {
5202 __vki_u32 map_type;
5203 __vki_u32 key_size;
5204 __vki_u32 value_size;
5205 __vki_u32 max_entries;
5206 __vki_u32 map_flags;
5207
5208
5209 __vki_u32 inner_map_fd;
5210 __vki_u32 numa_node;
5211
5212
5213 char map_name[VKI_BPF_OBJ_NAME_LEN];
5214 __vki_u32 map_ifindex;
5215 __vki_u32 btf_fd;
5216 __vki_u32 btf_key_type_id;
5217 __vki_u32 btf_value_type_id;
5218 };
5219
5220 struct {
5221 __vki_u32 map_fd;
5222 __vki_aligned_u64 key;
5223 union {
5224 __vki_aligned_u64 value;
5225 __vki_aligned_u64 next_key;
5226 };
5227 __vki_u64 flags;
5228 };
5229
5230 struct {
5231 __vki_u32 prog_type;
5232 __vki_u32 insn_cnt;
5233 __vki_aligned_u64 insns;
5234 __vki_aligned_u64 license;
5235 __vki_u32 log_level;
5236 __vki_u32 log_size;
5237 __vki_aligned_u64 log_buf;
5238 __vki_u32 kern_version;
5239 __vki_u32 prog_flags;
5240 char prog_name[VKI_BPF_OBJ_NAME_LEN];
5241 __vki_u32 prog_ifindex;
5242
5243
5244
5245
5246 __vki_u32 expected_attach_type;
5247 };
5248
5249 struct {
5250 __vki_aligned_u64 pathname;
5251 __vki_u32 bpf_fd;
5252 __vki_u32 file_flags;
5253 };
5254
5255 struct {
5256 __vki_u32 target_fd;
5257 __vki_u32 attach_bpf_fd;
5258 __vki_u32 attach_type;
5259 __vki_u32 attach_flags;
5260 };
5261
5262 struct {
5263 __vki_u32 prog_fd;
5264 __vki_u32 retval;
5265 __vki_u32 data_size_in;
5266 __vki_u32 data_size_out;
5267 __vki_aligned_u64 data_in;
5268 __vki_aligned_u64 data_out;
5269 __vki_u32 repeat;
5270 __vki_u32 duration;
5271 } test;
5272
5273 struct {
5274 union {
5275 __vki_u32 start_id;
5276 __vki_u32 prog_id;
5277 __vki_u32 map_id;
5278 __vki_u32 btf_id;
5279 };
5280 __vki_u32 next_id;
5281 __vki_u32 open_flags;
5282 };
5283
5284 struct {
5285 __vki_u32 bpf_fd;
5286 __vki_u32 info_len;
5287 __vki_aligned_u64 info;
5288 } info;
5289
5290 struct {
5291 __vki_u32 target_fd;
5292 __vki_u32 attach_type;
5293 __vki_u32 query_flags;
5294 __vki_u32 attach_flags;
5295 __vki_aligned_u64 prog_ids;
5296 __vki_u32 prog_cnt;
5297 } query;
5298
5299 struct {
5300 __vki_u64 name;
5301 __vki_u32 prog_fd;
5302 } raw_tracepoint;
5303
5304 struct {
5305 __vki_aligned_u64 btf;
5306 __vki_aligned_u64 btf_log_buf;
5307 __vki_u32 btf_size;
5308 __vki_u32 btf_log_size;
5309 __vki_u32 btf_log_level;
5310 };
5311
5312 struct {
5313 __vki_u32 pid;
5314 __vki_u32 fd;
5315 __vki_u32 flags;
5316 __vki_u32 buf_len;
5317 __vki_aligned_u64 buf;
5318
5319
5320
5321
5322 __vki_u32 prog_id;
5323 __vki_u32 fd_type;
5324 __vki_u64 probe_offset;
5325 __vki_u64 probe_addr;
5326 } task_fd_query;
5327 } __attribute__((aligned(8)));
5328
5329 #define VKI_XDP_PACKET_HEADROOM 256
5330
5331 #define VKI_BPF_TAG_SIZE 8
5332
5333 struct vki_bpf_prog_info {
5334 __vki_u32 type;
5335 __vki_u32 id;
5336 __vki_u8 tag[VKI_BPF_TAG_SIZE];
5337 __vki_u32 jited_prog_len;
5338 __vki_u32 xlated_prog_len;
5339 __vki_aligned_u64 jited_prog_insns;
5340 __vki_aligned_u64 xlated_prog_insns;
5341 __vki_u64 load_time;
5342 __vki_u32 created_by_uid;
5343 __vki_u32 nr_map_ids;
5344 __vki_aligned_u64 map_ids;
5345 char name[VKI_BPF_OBJ_NAME_LEN];
5346 __vki_u32 ifindex;
5347 __vki_u32 gpl_compatible:1;
5348 __vki_u64 netns_dev;
5349 __vki_u64 netns_ino;
5350 __vki_u32 nr_jited_ksyms;
5351 __vki_u32 nr_jited_func_lens;
5352 __vki_aligned_u64 jited_ksyms;
5353 __vki_aligned_u64 jited_func_lens;
5354 } __attribute__((aligned(8)));
5355
5356 struct vki_bpf_map_info {
5357 __vki_u32 type;
5358 __vki_u32 id;
5359 __vki_u32 key_size;
5360 __vki_u32 value_size;
5361 __vki_u32 max_entries;
5362 __vki_u32 map_flags;
5363 char name[VKI_BPF_OBJ_NAME_LEN];
5364 __vki_u32 ifindex;
5365 __vki_u32 :32;
5366 __vki_u64 netns_dev;
5367 __vki_u64 netns_ino;
5368 __vki_u32 btf_id;
5369 __vki_u32 btf_key_type_id;
5370 __vki_u32 btf_value_type_id;
5371 } __attribute__((aligned(8)));
5372
5373 struct vki_bpf_btf_info {
5374 __vki_aligned_u64 btf;
5375 __vki_u32 btf_size;
5376 __vki_u32 id;
5377 } __attribute__((aligned(8)));
5378
5379
5380
5381
5382
5383 struct vki_pps_ktime {
5384 __vki_s64 sec;
5385 __vki_s32 nsec;
5386 __vki_u32 flags;
5387 };
5388
5389 struct vki_pps_kinfo {
5390 __vki_u32 assert_sequence;
5391 __vki_u32 clear_sequence;
5392 struct vki_pps_ktime assert_tu;
5393 struct vki_pps_ktime clear_tu;
5394 int current_mode;
5395 };
5396
5397 struct vki_pps_kparams {
5398 int api_version;
5399 int mode;
5400 struct vki_pps_ktime assert_off_tu;
5401 struct vki_pps_ktime clear_off_tu;
5402 };
5403
5404 struct vki_pps_fdata {
5405 struct vki_pps_kinfo info;
5406 struct vki_pps_ktime timeout;
5407 };
5408
5409 struct vki_pps_bind_args {
5410 int tsformat;
5411 int edge;
5412 int consumer;
5413 };
5414
5415 #define VKI_PPS_GETPARAMS _VKI_IOR('p', 0xa1, struct vki_pps_kparams *)
5416 #define VKI_PPS_SETPARAMS _VKI_IOW('p', 0xa2, struct vki_pps_kparams *)
5417 #define VKI_PPS_GETCAP _VKI_IOR('p', 0xa3, int *)
5418 #define VKI_PPS_FETCH _VKI_IOWR('p', 0xa4, struct vki_pps_fdata *)
5419 #define VKI_PPS_KC_BIND _VKI_IOW('p', 0xa5, struct vki_pps_bind_args *)
5420
5421
5422
5423
5424
5425 struct vki_ptp_clock_time {
5426 __vki_s64 sec;
5427 __vki_u32 nsec;
5428 __vki_u32 reserved;
5429 };
5430
5431 struct vki_ptp_clock_caps {
5432 int max_adj;
5433 int n_alarm;
5434 int n_ext_ts;
5435 int n_per_out;
5436 int pps;
5437 int n_pins;
5438 int cross_timestamping;
5439 int rsv[13];
5440 };
5441
5442 struct vki_ptp_extts_request {
5443 unsigned int index;
5444 unsigned int flags;
5445 unsigned int rsv[2];
5446 };
5447
5448 struct vki_ptp_perout_request {
5449 struct vki_ptp_clock_time start;
5450 struct vki_ptp_clock_time period;
5451 unsigned int index;
5452 unsigned int flags;
5453 unsigned int rsv[4];
5454 };
5455
5456 #define VKI_PTP_MAX_SAMPLES 25
5457
5458 struct vki_ptp_sys_offset {
5459 unsigned int n_samples;
5460 unsigned int rsv[3];
5461 struct vki_ptp_clock_time ts[2 * VKI_PTP_MAX_SAMPLES + 1];
5462 };
5463
5464 struct vki_ptp_sys_offset_extended {
5465 unsigned int n_samples;
5466 unsigned int rsv[3];
5467 struct vki_ptp_clock_time ts[VKI_PTP_MAX_SAMPLES][3];
5468 };
5469
5470 struct vki_ptp_sys_offset_precise {
5471 struct vki_ptp_clock_time device;
5472 struct vki_ptp_clock_time sys_realtime;
5473 struct vki_ptp_clock_time sys_monoraw;
5474 unsigned int rsv[4];
5475 };
5476
5477 struct vki_ptp_pin_desc {
5478 char name[64];
5479 unsigned int index;
5480 unsigned int func;
5481 unsigned int chan;
5482 unsigned int rsv[5];
5483 };
5484
5485 #define VKI_PTP_CLOCK_GETCAPS _VKI_IOR('=', 1, struct vki_ptp_clock_caps)
5486 #define VKI_PTP_EXTTS_REQUEST _VKI_IOW('=', 2, struct vki_ptp_extts_request)
5487 #define VKI_PTP_PEROUT_REQUEST _VKI_IOW('=', 3, struct vki_ptp_perout_request)
5488 #define VKI_PTP_ENABLE_PPS _VKI_IOW('=', 4, int)
5489 #define VKI_PTP_SYS_OFFSET _VKI_IOW('=', 5, struct vki_ptp_sys_offset)
5490 #define VKI_PTP_PIN_GETFUNC _VKI_IOWR('=', 6, struct vki_ptp_pin_desc)
5491 #define VKI_PTP_PIN_SETFUNC _VKI_IOW('=', 7, struct vki_ptp_pin_desc)
5492 #define VKI_PTP_SYS_OFFSET_PRECISE \
5493 _VKI_IOWR('=', 8, struct vki_ptp_sys_offset_precise)
5494 #define VKI_PTP_SYS_OFFSET_EXTENDED \
5495 _VKI_IOWR('=', 9, struct vki_ptp_sys_offset_extended)
5496
5497
5498
5499 typedef vki_int64_t vki_time64_t;
5500
5501
5502
5503
5504
5505 struct vki_timespec64 {
5506 vki_time64_t tv_sec;
5507 #if defined(VKI_BIG_ENDIAN)
5508 vki_int32_t tv_pad;
5509 vki_int32_t tv_nsec;
5510 #elif defined(VKI_LITTLE_ENDIAN)
5511 vki_int32_t tv_nsec;
5512 vki_int32_t tv_pad;
5513 #else
5514 #error edit for your odd byteorder.
5515 #endif
5516 };
5517
5518 struct vki_itimerspec64 {
5519 struct vki_timespec it_interval;
5520 struct vki_timespec it_value;
5521 };
5522
5523
5524
5525 struct vki_open_how {
5526 vki_uint64_t vki_flags;
5527 vki_uint64_t vki_mode;
5528 vki_uint64_t vki_resolve;
5529 };
5530
5531 #define VKI_RESOLVE_NO_XDEV 0x01
5532 #define VKI_RESOLVE_NO_MAGICLINKS 0x02
5533 #define VKI_RESOLVE_NO_SYMLINKS 0x04
5534 #define VKI_RESOLVE_BENEATH 0x08
5535 #define VKI_RESOLVE_IN_ROOT 0x10
5536 #define VKI_RESOLVE_CACHED 0x20
5537
5538 #ifndef VKI_RLIM_INFINITY
5539 #define VKI_RLIM_INFINITY (~0UL)
5540 #endif
5541
5542 #define VKI_RLIM64_INFINITY (~0ULL)
5543
5544 #define VKI_CLOSE_RANGE_UNSHARE (1U << 1)
5545 #define VKI_CLOSE_RANGE_CLOEXEC (1U << 2)
5546
5547 struct vki_cachestat_range {
5548 __vki_u64 off;
5549 __vki_u64 len;
5550 };
5551
5552 struct vki_cachestat {
5553 __vki_u64 nr_cache;
5554 __vki_u64 nr_dirty;
5555 __vki_u64 nr_writeback;
5556 __vki_u64 nr_evicted;
5557 __vki_u64 nr_recently_evicted;
5558 };
5559
5560
5561
5562
5563
5564 #define VKI_BTRFS_SUPER_MAGIC 0x9123683E
5565
5566 struct vki__aio_sigset {
5567 const vki_sigset_t __user *sigmask;
5568 vki_size_t sigsetsize;
5569 };
5570
5571
5572
5573
5574
5575 struct vki_mnt_id_req {
5576 __vki_u32 size;
5577 __vki_u32 spare;
5578 __vki_u64 mnt_id;
5579 __vki_u64 param;
5580 __vki_u64 mnt_ns_id;
5581 };
5582
5583 struct vki_statmount {
5584 __vki_u32 size;
5585 __vki_u32 mnt_opts;
5586 __vki_u64 mask;
5587 __vki_u32 sb_dev_major;
5588 __vki_u32 sb_dev_minor;
5589 __vki_u64 sb_magic;
5590 __vki_u32 sb_flags;
5591 __vki_u32 fs_type;
5592 __vki_u64 mnt_id;
5593 __vki_u64 mnt_parent_id;
5594 __vki_u32 mnt_id_old;
5595 __vki_u32 mnt_parent_id_old;
5596 __vki_u64 mnt_attr;
5597 __vki_u64 mnt_propagation;
5598 __vki_u64 mnt_peer_group;
5599 __vki_u64 mnt_master;
5600 __vki_u64 propagate_from;
5601 __vki_u32 mnt_root;
5602 __vki_u32 mnt_point;
5603 __vki_u64 mnt_ns_id;
5604 __vki_u64 __spare2[49];
5605 char str[];
5606 };
5607
5608
5609
5610
5611
5612 struct vki_file_attr {
5613 __vki_u64 fa_xflags;
5614 __vki_u32 fa_extsize;
5615 __vki_u32 fa_nextents;
5616 __vki_u32 fa_projid;
5617 __vki_u32 fa_cowextsize;
5618 };
5619
5620
5621
5622
5623
5624 #define VKI_SUBCMDMASK 0x00ff
5625 #define VKI_SUBCMDSHIFT 8
5626
5627 #define VKI_Q_SYNC 0x800001
5628 #define VKI_Q_QUOTAON 0x800002
5629 #define VKI_Q_QUOTAOFF 0x800003
5630 #define VKI_Q_GETFMT 0x800004
5631 #define VKI_Q_GETINFO 0x800005
5632 #define VKI_Q_SETINFO 0x800006
5633 #define VKI_Q_GETQUOTA 0x800007
5634 #define VKI_Q_SETQUOTA 0x800008
5635 #define VKI_Q_GETNEXTQUOTA 0x800009
5636
5637 struct vki_dqblk
5638 {
5639 __vki_u64 dqb_bhardlimit;
5640 __vki_u64 dqb_bsoftlimit;
5641 __vki_u64 dqb_curspace;
5642 __vki_u64 dqb_ihardlimit;
5643 __vki_u64 dqb_isoftlimit;
5644 __vki_u64 dqb_curinodes;
5645 __vki_u64 dqb_btime;
5646 __vki_u64 dqb_itime;
5647 __vki_u32 dqb_valid;
5648 };
5649
5650
5651 struct vki_nextdqblk {
5652 __vki_u64 dqb_bhardlimit;
5653 __vki_u64 dqb_bsoftlimit;
5654 __vki_u64 dqb_curspace;
5655 __vki_u64 dqb_ihardlimit;
5656 __vki_u64 dqb_isoftlimit;
5657 __vki_u64 dqb_curinodes;
5658 __vki_u64 dqb_btime;
5659 __vki_u64 dqb_itime;
5660 __vki_u32 dqb_valid;
5661 __vki_u32 dqb_id;
5662 };
5663
5664 struct vki_dqinfo {
5665 __vki_u64 dqi_bgrace;
5666 __vki_u64 dqi_igrace;
5667 __vki_u32 dqi_flags;
5668 __vki_u32 dqi_valid;
5669 };
5670
5671
5672
5673
5674
5675 struct vki_lsm_ctx {
5676 __vki_u64 id;
5677 __vki_u64 flags;
5678 __vki_u64 len;
5679 __vki_u64 ctx_len;
5680 __vki_u8 ctx[];
5681 };
5682
5683
5684
5685