/* 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 block_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
extern int btrfs_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
extern int evdev_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
extern _Bool fetch_seccomp_fprog(struct tcb *tcp, const long addr, void *p);
extern _Bool fetch_struct_flock(struct tcb *tcp, const long addr, void *p);
extern _Bool fetch_struct_flock64(struct tcb *tcp, const long addr, void *p);
extern _Bool fetch_struct_statfs(struct tcb *tcp, const long addr, struct strace_statfs *p);
extern _Bool fetch_struct_statfs64(struct tcb *tcp, const long addr, const unsigned long size, struct strace_statfs *p);
extern int hdio_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
extern int mtd_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
extern void printmqattr(struct tcb *tcp, const long addr);
extern void tprint_msgbuf(struct tcb *tcp, const long addr, const unsigned long count);
extern void print_sigevent(struct tcb *tcp, const long addr);
extern void print_timespec(struct tcb *tcp, const long addr);
extern const char * sprint_timespec(struct tcb *tcp, const long addr);
extern void print_timespec_utime_pair(struct tcb *tcp, const long addr);
extern void print_itimerspec(struct tcb *tcp, const long addr);
extern void print_timeval(struct tcb *tcp, const long addr);
extern void print_timeval_pair(struct tcb *tcp, const long addr);
extern const char * sprint_timeval(struct tcb *tcp, const long addr);
extern void print_itimerval(struct tcb *tcp, const long addr);
extern int print_timex(struct tcb *tcp, const long addr);
extern void printrusage(struct tcb *tcp, long addr);
extern void printsiginfo_at(struct tcb *tcp, long addr);
extern void print_siginfo_array(struct tcb *tcp, unsigned long addr, unsigned long len);
extern int rtc_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
extern int v4l2_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
