/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev_mpers.c.mpers.i fetch_bpf_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_keyctl_kdf_params.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 fetch_struct_xfs_quotastat.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 perf_ioctl.c.mpers.i print_aio_sigset.c.mpers.i print_group_req.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. */
typedef struct {
 int (*block_ioctl)(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg);
#define block_ioctl MPERS_PRINTER_NAME(block_ioctl)

 int (*btrfs_ioctl)(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg);
#define btrfs_ioctl MPERS_PRINTER_NAME(btrfs_ioctl)

 int (*evdev_write_ioctl_mpers)(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg);
#define evdev_write_ioctl_mpers MPERS_PRINTER_NAME(evdev_write_ioctl_mpers)

 unsigned int (*get_sock_fprog_size)(void);
#define get_sock_fprog_size MPERS_PRINTER_NAME(get_sock_fprog_size)

 _Bool (*fetch_bpf_fprog)(struct tcb *const tcp, const kernel_ulong_t addr, void *const p);
#define fetch_bpf_fprog MPERS_PRINTER_NAME(fetch_bpf_fprog)

 _Bool (*fetch_struct_flock)(struct tcb *const tcp, const kernel_ulong_t addr, void *const p);
#define fetch_struct_flock MPERS_PRINTER_NAME(fetch_struct_flock)

 _Bool (*fetch_struct_flock64)(struct tcb *const tcp, const kernel_ulong_t addr, void *const p);
#define fetch_struct_flock64 MPERS_PRINTER_NAME(fetch_struct_flock64)

 int (*fetch_keyctl_kdf_params)(struct tcb *const tcp, kernel_ulong_t addr, struct strace_keyctl_kdf_params *p);
#define fetch_keyctl_kdf_params MPERS_PRINTER_NAME(fetch_keyctl_kdf_params)

 int (*fetch_struct_mmsghdr)(struct tcb *const tcp, const kernel_ulong_t addr, void *const p);
#define fetch_struct_mmsghdr MPERS_PRINTER_NAME(fetch_struct_mmsghdr)

 unsigned int (*sizeof_struct_mmsghdr)(void);
#define sizeof_struct_mmsghdr MPERS_PRINTER_NAME(sizeof_struct_mmsghdr)

 int (*fetch_struct_msghdr)(struct tcb *const tcp, const kernel_ulong_t addr, void *const p);
#define fetch_struct_msghdr MPERS_PRINTER_NAME(fetch_struct_msghdr)

 _Bool (*fetch_struct_stat)(struct tcb *const tcp, const kernel_ulong_t addr, struct strace_stat *const dst);
#define fetch_struct_stat MPERS_PRINTER_NAME(fetch_struct_stat)

 _Bool (*fetch_struct_stat64)(struct tcb *const tcp, const kernel_ulong_t addr, struct strace_stat *const dst);
#define fetch_struct_stat64 MPERS_PRINTER_NAME(fetch_struct_stat64)

 _Bool (*fetch_struct_statfs)(struct tcb *const tcp, const kernel_ulong_t addr, struct strace_statfs *const p);
#define fetch_struct_statfs MPERS_PRINTER_NAME(fetch_struct_statfs)

 _Bool (*fetch_struct_statfs64)(struct tcb *const tcp, const kernel_ulong_t addr, const kernel_ulong_t size, struct strace_statfs *const p);
#define fetch_struct_statfs64 MPERS_PRINTER_NAME(fetch_struct_statfs64)

 _Bool (*fetch_struct_quotastat)(struct tcb *const tcp, const kernel_ulong_t data, void *p);
#define fetch_struct_quotastat MPERS_PRINTER_NAME(fetch_struct_quotastat)

 int (*hdio_ioctl)(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg);
#define hdio_ioctl MPERS_PRINTER_NAME(hdio_ioctl)

 int (*loop_ioctl)(struct tcb *tcp, const unsigned int code, const kernel_ulong_t arg);
#define loop_ioctl MPERS_PRINTER_NAME(loop_ioctl)

 int (*mtd_ioctl)(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg);
#define mtd_ioctl MPERS_PRINTER_NAME(mtd_ioctl)

 int (*perf_ioctl)(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg);
#define perf_ioctl MPERS_PRINTER_NAME(perf_ioctl)

 void (*print_aio_sigset)(struct tcb *tcp, const kernel_ulong_t addr);
#define print_aio_sigset MPERS_PRINTER_NAME(print_aio_sigset)

 void (*print_group_req)(struct tcb *const tcp, const kernel_ulong_t addr, const int len);
#define print_group_req MPERS_PRINTER_NAME(print_group_req)

 void (*printmqattr)(struct tcb *const tcp, const kernel_ulong_t addr, const _Bool decode_flags);
#define printmqattr MPERS_PRINTER_NAME(printmqattr)

 void (*tprint_msgbuf)(struct tcb *const tcp, const kernel_ulong_t addr, const kernel_ulong_t count);
#define tprint_msgbuf MPERS_PRINTER_NAME(tprint_msgbuf)

 int (*decode_sg_req_info)(struct tcb *const tcp, const kernel_ulong_t arg);
#define decode_sg_req_info MPERS_PRINTER_NAME(decode_sg_req_info)

 void (*print_sigevent)(struct tcb *const tcp, const kernel_ulong_t addr);
#define print_sigevent MPERS_PRINTER_NAME(print_sigevent)

 _Bool (*print_struct_timespec_data_size)(const void *arg, const size_t size);
#define print_struct_timespec_data_size MPERS_PRINTER_NAME(print_struct_timespec_data_size)

 _Bool (*print_struct_timespec_array_data_size)(const void *arg, const unsigned int nmemb, const size_t size);
#define print_struct_timespec_array_data_size MPERS_PRINTER_NAME(print_struct_timespec_array_data_size)

 void (*print_timespec)(struct tcb *const tcp, const kernel_ulong_t addr);
#define print_timespec MPERS_PRINTER_NAME(print_timespec)

 const char * (*sprint_timespec)(struct tcb *const tcp, const kernel_ulong_t addr);
#define sprint_timespec MPERS_PRINTER_NAME(sprint_timespec)

 void (*print_timespec_utime_pair)(struct tcb *const tcp, const kernel_ulong_t addr);
#define print_timespec_utime_pair MPERS_PRINTER_NAME(print_timespec_utime_pair)

 void (*print_itimerspec)(struct tcb *const tcp, const kernel_ulong_t addr);
#define print_itimerspec MPERS_PRINTER_NAME(print_itimerspec)

 void (*print_struct_timeval)(const void *arg);
#define print_struct_timeval MPERS_PRINTER_NAME(print_struct_timeval)

 _Bool (*print_struct_timeval_data_size)(const void *arg, const size_t size);
#define print_struct_timeval_data_size MPERS_PRINTER_NAME(print_struct_timeval_data_size)

 void (*print_timeval)(struct tcb *const tcp, const kernel_ulong_t addr);
#define print_timeval MPERS_PRINTER_NAME(print_timeval)

 void (*print_timeval_utimes)(struct tcb *const tcp, const kernel_ulong_t addr);
#define print_timeval_utimes MPERS_PRINTER_NAME(print_timeval_utimes)

 const char * (*sprint_timeval)(struct tcb *const tcp, const kernel_ulong_t addr);
#define sprint_timeval MPERS_PRINTER_NAME(sprint_timeval)

 void (*print_itimerval)(struct tcb *const tcp, const kernel_ulong_t addr);
#define print_itimerval MPERS_PRINTER_NAME(print_itimerval)

 int (*print_timex)(struct tcb *const tcp, const kernel_ulong_t addr);
#define print_timex MPERS_PRINTER_NAME(print_timex)

 void (*printrusage)(struct tcb *const tcp, const kernel_ulong_t addr);
#define printrusage MPERS_PRINTER_NAME(printrusage)

 void (*printsiginfo_at)(struct tcb *const tcp, const kernel_ulong_t addr);
#define printsiginfo_at MPERS_PRINTER_NAME(printsiginfo_at)

 void (*print_siginfo_array)(struct tcb *const tcp, const kernel_ulong_t addr, const kernel_ulong_t len);
#define print_siginfo_array MPERS_PRINTER_NAME(print_siginfo_array)

 int (*rtc_ioctl)(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg);
#define rtc_ioctl MPERS_PRINTER_NAME(rtc_ioctl)

 int (*decode_sg_io_v3)(struct tcb *const tcp, const kernel_ulong_t arg);
#define decode_sg_io_v3 MPERS_PRINTER_NAME(decode_sg_io_v3)

 int (*sock_ioctl)(struct tcb *tcp, const unsigned int code, const kernel_ulong_t arg);
#define sock_ioctl MPERS_PRINTER_NAME(sock_ioctl)

 int (*v4l2_ioctl)(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg);
#define v4l2_ioctl MPERS_PRINTER_NAME(v4l2_ioctl)

} struct_printers;
extern const struct_printers *printers;
#define MPERS_PRINTER_NAME(printer_name) printers->printer_name
