/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev.c.mpers.i fetch_seccomp_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_mmsghdr.c.mpers.i fetch_struct_msghdr.c.mpers.i fetch_struct_stat.c.mpers.i fetch_struct_stat64.c.mpers.i fetch_struct_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i loop.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sg_req_info.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timespec.c.mpers.i print_timeval.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rt_sigreturn.c.mpers.i rtc.c.mpers.i sg_io_v3.c.mpers.i sigaltstack.c.mpers.i sock.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i ustat.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
extern int mx32_block_ioctl(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg);
extern int mx32_btrfs_ioctl(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg);
extern int mx32_evdev_ioctl(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg);
extern _Bool mx32_fetch_seccomp_fprog(struct tcb *const tcp, const kernel_ulong_t addr, void *const p);
extern _Bool mx32_fetch_struct_flock(struct tcb *const tcp, const kernel_ulong_t addr, void *const p);
extern _Bool mx32_fetch_struct_flock64(struct tcb *const tcp, const kernel_ulong_t addr, void *const p);
extern int mx32_fetch_struct_mmsghdr(struct tcb *const tcp, const kernel_ulong_t addr, void *const p);
extern unsigned int mx32_sizeof_struct_mmsghdr(void);
extern int mx32_fetch_struct_msghdr(struct tcb *const tcp, const kernel_ulong_t addr, void *const p);
extern _Bool mx32_fetch_struct_stat(struct tcb *const tcp, const kernel_ulong_t addr, struct strace_stat *const dst);
extern _Bool mx32_fetch_struct_stat64(struct tcb *const tcp, const kernel_ulong_t addr, struct strace_stat *const dst);
extern _Bool mx32_fetch_struct_statfs(struct tcb *const tcp, const kernel_ulong_t addr, struct strace_statfs *const p);
extern _Bool mx32_fetch_struct_statfs64(struct tcb *const tcp, const kernel_ulong_t addr, const kernel_ulong_t size, struct strace_statfs *const p);
extern int mx32_hdio_ioctl(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg);
extern int mx32_loop_ioctl(struct tcb *tcp, const unsigned int code, const kernel_ulong_t arg);
extern int mx32_mtd_ioctl(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg);
extern void mx32_printmqattr(struct tcb *const tcp, const kernel_ulong_t addr, const _Bool decode_flags);
extern void mx32_tprint_msgbuf(struct tcb *const tcp, const kernel_ulong_t addr, const kernel_ulong_t count);
extern int mx32_decode_sg_req_info(struct tcb *const tcp, const kernel_ulong_t arg);
extern void mx32_print_sigevent(struct tcb *const tcp, const kernel_ulong_t addr);
extern void mx32_print_timespec(struct tcb *const tcp, const kernel_ulong_t addr);
extern const char * mx32_sprint_timespec(struct tcb *const tcp, const kernel_ulong_t addr);
extern void mx32_print_timespec_utime_pair(struct tcb *const tcp, const kernel_ulong_t addr);
extern void mx32_print_itimerspec(struct tcb *const tcp, const kernel_ulong_t addr);
extern void mx32_print_struct_timeval(const void *arg);
extern void mx32_print_timeval(struct tcb *const tcp, const kernel_ulong_t addr);
extern void mx32_print_timeval_utimes(struct tcb *const tcp, const kernel_ulong_t addr);
extern const char * mx32_sprint_timeval(struct tcb *const tcp, const kernel_ulong_t addr);
extern void mx32_print_itimerval(struct tcb *const tcp, const kernel_ulong_t addr);
extern int mx32_print_timex(struct tcb *const tcp, const kernel_ulong_t addr);
extern void mx32_printrusage(struct tcb *const tcp, const kernel_ulong_t addr);
extern void mx32_printsiginfo_at(struct tcb *const tcp, const kernel_ulong_t addr);
extern void mx32_print_siginfo_array(struct tcb *const tcp, const kernel_ulong_t addr, const kernel_ulong_t len);
extern int mx32_rtc_ioctl(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg);
extern int mx32_decode_sg_io_v3(struct tcb *const tcp, const kernel_ulong_t arg);
extern int mx32_sock_ioctl(struct tcb *tcp, const unsigned int code, const kernel_ulong_t arg);
extern int mx32_v4l2_ioctl(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg);
