Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  * Copyright (C) 2020 Collabora Ltd.
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 /* CONFIG_GENERIC_ENTRY */
0039 
0040 #endif /* _SYSCALL_USER_DISPATCH_H */