root/include/linux/restart_block.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /*
   3  * Common syscall restarting data
   4  */
   5 #ifndef __LINUX_RESTART_BLOCK_H
   6 #define __LINUX_RESTART_BLOCK_H
   7 
   8 #include <linux/compiler.h>
   9 #include <linux/types.h>
  10 #include <linux/time64.h>
  11 
  12 struct timespec;
  13 struct old_timespec32;
  14 struct pollfd;
  15 
  16 enum timespec_type {
  17         TT_NONE         = 0,
  18         TT_NATIVE       = 1,
  19         TT_COMPAT       = 2,
  20 };
  21 
  22 /*
  23  * System call restart block.
  24  */
  25 struct restart_block {
  26         long (*fn)(struct restart_block *);
  27         union {
  28                 /* For futex_wait and futex_wait_requeue_pi */
  29                 struct {
  30                         u32 __user *uaddr;
  31                         u32 val;
  32                         u32 flags;
  33                         u32 bitset;
  34                         u64 time;
  35                         u32 __user *uaddr2;
  36                 } futex;
  37                 /* For nanosleep */
  38                 struct {
  39                         clockid_t clockid;
  40                         enum timespec_type type;
  41                         union {
  42                                 struct __kernel_timespec __user *rmtp;
  43                                 struct old_timespec32 __user *compat_rmtp;
  44                         };
  45                         u64 expires;
  46                 } nanosleep;
  47                 /* For poll */
  48                 struct {
  49                         struct pollfd __user *ufds;
  50                         int nfds;
  51                         int has_timeout;
  52                         unsigned long tv_sec;
  53                         unsigned long tv_nsec;
  54                 } poll;
  55         };
  56 };
  57 
  58 extern long do_no_restart_syscall(struct restart_block *parm);
  59 
  60 #endif /* __LINUX_RESTART_BLOCK_H */

/* [<][>][^][v][top][bottom][index][help] */