/* 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 m32_block_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
extern int m32_btrfs_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
extern int m32_evdev_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
extern _Bool m32_fetch_seccomp_fprog(struct tcb *tcp, const long addr, void *p);
extern _Bool m32_fetch_struct_flock(struct tcb *tcp, const long addr, void *p);
extern _Bool m32_fetch_struct_flock64(struct tcb *tcp, const long addr, void *p);
extern _Bool m32_fetch_struct_statfs(struct tcb *tcp, const long addr, struct strace_statfs *p);
extern _Bool m32_fetch_struct_statfs64(struct tcb *tcp, const long addr, const unsigned long size, struct strace_statfs *p);
extern int m32_hdio_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
extern int m32_mtd_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
extern void m32_printmqattr(struct tcb *tcp, const long addr);
extern void m32_tprint_msgbuf(struct tcb *tcp, const long addr, const unsigned long count);
extern void m32_print_sigevent(struct tcb *tcp, const long addr);
extern void m32_print_timespec(struct tcb *tcp, const long addr);
extern const char * m32_sprint_timespec(struct tcb *tcp, const long addr);
extern void m32_print_timespec_utime_pair(struct tcb *tcp, const long addr);
extern void m32_print_itimerspec(struct tcb *tcp, const long addr);
extern void m32_print_timeval(struct tcb *tcp, const long addr);
extern void m32_print_timeval_pair(struct tcb *tcp, const long addr);
extern const char * m32_sprint_timeval(struct tcb *tcp, const long addr);
extern void m32_print_itimerval(struct tcb *tcp, const long addr);
extern int m32_print_timex(struct tcb *tcp, const long addr);
extern void m32_printrusage(struct tcb *tcp, long addr);
extern void m32_printsiginfo_at(struct tcb *tcp, long addr);
extern void m32_print_siginfo_array(struct tcb *tcp, unsigned long addr, unsigned long len);
extern int m32_rtc_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
extern int m32_v4l2_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
