cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

restart_block.h (1138B)


      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
     12struct timespec;
     13struct old_timespec32;
     14struct pollfd;
     15
     16enum timespec_type {
     17	TT_NONE		= 0,
     18	TT_NATIVE	= 1,
     19	TT_COMPAT	= 2,
     20};
     21
     22/*
     23 * System call restart block.
     24 */
     25struct restart_block {
     26	unsigned long arch_data;
     27	long (*fn)(struct restart_block *);
     28	union {
     29		/* For futex_wait and futex_wait_requeue_pi */
     30		struct {
     31			u32 __user *uaddr;
     32			u32 val;
     33			u32 flags;
     34			u32 bitset;
     35			u64 time;
     36			u32 __user *uaddr2;
     37		} futex;
     38		/* For nanosleep */
     39		struct {
     40			clockid_t clockid;
     41			enum timespec_type type;
     42			union {
     43				struct __kernel_timespec __user *rmtp;
     44				struct old_timespec32 __user *compat_rmtp;
     45			};
     46			u64 expires;
     47		} nanosleep;
     48		/* For poll */
     49		struct {
     50			struct pollfd __user *ufds;
     51			int nfds;
     52			int has_timeout;
     53			unsigned long tv_sec;
     54			unsigned long tv_nsec;
     55		} poll;
     56	};
     57};
     58
     59extern long do_no_restart_syscall(struct restart_block *parm);
     60
     61#endif /* __LINUX_RESTART_BLOCK_H */