/* 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_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 _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);
