0001
0002
0003
0004
0005 #ifndef __LINUX_RESTART_BLOCK_H
0006 #define __LINUX_RESTART_BLOCK_H
0007
0008 #include <linux/compiler.h>
0009 #include <linux/types.h>
0010 #include <linux/time64.h>
0011
0012 struct timespec;
0013 struct old_timespec32;
0014 struct pollfd;
0015
0016 enum timespec_type {
0017 TT_NONE = 0,
0018 TT_NATIVE = 1,
0019 TT_COMPAT = 2,
0020 };
0021
0022
0023
0024
0025 struct restart_block {
0026 unsigned long arch_data;
0027 long (*fn)(struct restart_block *);
0028 union {
0029
0030 struct {
0031 u32 __user *uaddr;
0032 u32 val;
0033 u32 flags;
0034 u32 bitset;
0035 u64 time;
0036 u32 __user *uaddr2;
0037 } futex;
0038
0039 struct {
0040 clockid_t clockid;
0041 enum timespec_type type;
0042 union {
0043 struct __kernel_timespec __user *rmtp;
0044 struct old_timespec32 __user *compat_rmtp;
0045 };
0046 u64 expires;
0047 } nanosleep;
0048
0049 struct {
0050 struct pollfd __user *ufds;
0051 int nfds;
0052 int has_timeout;
0053 unsigned long tv_sec;
0054 unsigned long tv_nsec;
0055 } poll;
0056 };
0057 };
0058
0059 extern long do_no_restart_syscall(struct restart_block *parm);
0060
0061 #endif