/* Generated by Makefile from dirent.c fetch_seccomp_fprog.c fetch_struct_flock.c ipc_msgctl.c ipc_shmctl.c print_mq_attr.c print_msgbuf.c print_sigevent.c print_time.c print_timex.c printrusage.c printsiginfo.c sigaltstack.c sysinfo.c times.c utime.c; do not edit. */
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 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);
