Merge tag 'mac80211-next-for-davem-2017-01-13' of git://git.kernel.org/pub/scm/linux...
[sfrench/cifs-2.6.git] / include / linux / restart_block.h
1 /*
2  * Common syscall restarting data
3  */
4 #ifndef __LINUX_RESTART_BLOCK_H
5 #define __LINUX_RESTART_BLOCK_H
6
7 #include <linux/compiler.h>
8 #include <linux/types.h>
9
10 struct timespec;
11 struct compat_timespec;
12 struct pollfd;
13
14 /*
15  * System call restart block.
16  */
17 struct restart_block {
18         long (*fn)(struct restart_block *);
19         union {
20                 /* For futex_wait and futex_wait_requeue_pi */
21                 struct {
22                         u32 __user *uaddr;
23                         u32 val;
24                         u32 flags;
25                         u32 bitset;
26                         u64 time;
27                         u32 __user *uaddr2;
28                 } futex;
29                 /* For nanosleep */
30                 struct {
31                         clockid_t clockid;
32                         struct timespec __user *rmtp;
33 #ifdef CONFIG_COMPAT
34                         struct compat_timespec __user *compat_rmtp;
35 #endif
36                         u64 expires;
37                 } nanosleep;
38                 /* For poll */
39                 struct {
40                         struct pollfd __user *ufds;
41                         int nfds;
42                         int has_timeout;
43                         unsigned long tv_sec;
44                         unsigned long tv_nsec;
45                 } poll;
46         };
47 };
48
49 extern long do_no_restart_syscall(struct restart_block *parm);
50
51 #endif /* __LINUX_RESTART_BLOCK_H */