0001
0002
0003
0004
0005 #ifndef _SYSCALL_USER_DISPATCH_H
0006 #define _SYSCALL_USER_DISPATCH_H
0007
0008 #include <linux/thread_info.h>
0009
0010 #ifdef CONFIG_GENERIC_ENTRY
0011
0012 struct syscall_user_dispatch {
0013 char __user *selector;
0014 unsigned long offset;
0015 unsigned long len;
0016 bool on_dispatch;
0017 };
0018
0019 int set_syscall_user_dispatch(unsigned long mode, unsigned long offset,
0020 unsigned long len, char __user *selector);
0021
0022 #define clear_syscall_work_syscall_user_dispatch(tsk) \
0023 clear_task_syscall_work(tsk, SYSCALL_USER_DISPATCH)
0024
0025 #else
0026 struct syscall_user_dispatch {};
0027
0028 static inline int set_syscall_user_dispatch(unsigned long mode, unsigned long offset,
0029 unsigned long len, char __user *selector)
0030 {
0031 return -EINVAL;
0032 }
0033
0034 static inline void clear_syscall_work_syscall_user_dispatch(struct task_struct *tsk)
0035 {
0036 }
0037
0038 #endif
0039
0040 #endif