/* 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_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rtc.c.mpers.i sigaltstack.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
extern int mx32_block_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
extern int mx32_btrfs_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
extern int mx32_evdev_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
extern _Bool mx32_fetch_seccomp_fprog(struct tcb *tcp, const long addr, void *p);
extern _Bool mx32_fetch_struct_flock(struct tcb *tcp, const long addr, void *p);
extern _Bool mx32_fetch_struct_flock64(struct tcb *tcp, const long addr, void *p);
extern int mx32_fetch_struct_mmsghdr(struct tcb *tcp, const unsigned long addr, void *p);
extern unsigned int mx32_sizeof_struct_mmsghdr(void);
extern int mx32_fetch_struct_msghdr(struct tcb *tcp, const unsigned long addr, void *p);
extern _Bool mx32_fetch_struct_statfs(struct tcb *tcp, const long addr, struct strace_statfs *p);
extern _Bool mx32_fetch_struct_statfs64(struct tcb *tcp, const long addr, const unsigned long size, struct strace_statfs *p);
extern int mx32_hdio_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
extern int mx32_mtd_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
extern void mx32_printmqattr(struct tcb *tcp, const long addr);
extern void mx32_tprint_msgbuf(struct tcb *tcp, const long addr, const unsigned long count);
extern void mx32_print_sigevent(struct tcb *tcp, const long addr);
extern void mx32_print_timespec(struct tcb *tcp, const long addr);
extern const char * mx32_sprint_timespec(struct tcb *tcp, const long addr);
extern void mx32_print_timespec_utime_pair(struct tcb *tcp, const long addr);
extern void mx32_print_itimerspec(struct tcb *tcp, const long addr);
extern void mx32_print_timeval(struct tcb *tcp, const long addr);
extern void mx32_print_timeval_pair(struct tcb *tcp, const long addr);
extern const char * mx32_sprint_timeval(struct tcb *tcp, const long addr);
extern void mx32_print_itimerval(struct tcb *tcp, const long addr);
extern int mx32_print_timex(struct tcb *tcp, const long addr);
extern void mx32_printrusage(struct tcb *tcp, long addr);
extern void mx32_printsiginfo_at(struct tcb *tcp, long addr);
extern void mx32_print_siginfo_array(struct tcb *tcp, unsigned long addr, unsigned long len);
extern int mx32_rtc_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
extern int mx32_v4l2_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
