11446e1dfSGabriel Krisman Bertazi /* SPDX-License-Identifier: GPL-2.0 */
21446e1dfSGabriel Krisman Bertazi /*
31446e1dfSGabriel Krisman Bertazi * Copyright (C) 2020 Collabora Ltd.
41446e1dfSGabriel Krisman Bertazi */
51446e1dfSGabriel Krisman Bertazi #ifndef _SYSCALL_USER_DISPATCH_H
61446e1dfSGabriel Krisman Bertazi #define _SYSCALL_USER_DISPATCH_H
71446e1dfSGabriel Krisman Bertazi
81446e1dfSGabriel Krisman Bertazi #include <linux/thread_info.h>
9*55b899aaSKent Overstreet #include <linux/syscall_user_dispatch_types.h>
101446e1dfSGabriel Krisman Bertazi
111446e1dfSGabriel Krisman Bertazi #ifdef CONFIG_GENERIC_ENTRY
121446e1dfSGabriel Krisman Bertazi
131446e1dfSGabriel Krisman Bertazi int set_syscall_user_dispatch(unsigned long mode, unsigned long offset,
141446e1dfSGabriel Krisman Bertazi unsigned long len, char __user *selector);
151446e1dfSGabriel Krisman Bertazi
161446e1dfSGabriel Krisman Bertazi #define clear_syscall_work_syscall_user_dispatch(tsk) \
171446e1dfSGabriel Krisman Bertazi clear_task_syscall_work(tsk, SYSCALL_USER_DISPATCH)
181446e1dfSGabriel Krisman Bertazi
193f67987cSGregory Price int syscall_user_dispatch_get_config(struct task_struct *task, unsigned long size,
203f67987cSGregory Price void __user *data);
213f67987cSGregory Price
223f67987cSGregory Price int syscall_user_dispatch_set_config(struct task_struct *task, unsigned long size,
233f67987cSGregory Price void __user *data);
243f67987cSGregory Price
251446e1dfSGabriel Krisman Bertazi #else
261446e1dfSGabriel Krisman Bertazi
set_syscall_user_dispatch(unsigned long mode,unsigned long offset,unsigned long len,char __user * selector)271446e1dfSGabriel Krisman Bertazi static inline int set_syscall_user_dispatch(unsigned long mode, unsigned long offset,
281446e1dfSGabriel Krisman Bertazi unsigned long len, char __user *selector)
291446e1dfSGabriel Krisman Bertazi {
301446e1dfSGabriel Krisman Bertazi return -EINVAL;
311446e1dfSGabriel Krisman Bertazi }
321446e1dfSGabriel Krisman Bertazi
clear_syscall_work_syscall_user_dispatch(struct task_struct * tsk)331446e1dfSGabriel Krisman Bertazi static inline void clear_syscall_work_syscall_user_dispatch(struct task_struct *tsk)
341446e1dfSGabriel Krisman Bertazi {
351446e1dfSGabriel Krisman Bertazi }
361446e1dfSGabriel Krisman Bertazi
syscall_user_dispatch_get_config(struct task_struct * task,unsigned long size,void __user * data)373f67987cSGregory Price static inline int syscall_user_dispatch_get_config(struct task_struct *task,
383f67987cSGregory Price unsigned long size, void __user *data)
393f67987cSGregory Price {
403f67987cSGregory Price return -EINVAL;
413f67987cSGregory Price }
423f67987cSGregory Price
syscall_user_dispatch_set_config(struct task_struct * task,unsigned long size,void __user * data)433f67987cSGregory Price static inline int syscall_user_dispatch_set_config(struct task_struct *task,
443f67987cSGregory Price unsigned long size, void __user *data)
453f67987cSGregory Price {
463f67987cSGregory Price return -EINVAL;
473f67987cSGregory Price }
483f67987cSGregory Price
491446e1dfSGabriel Krisman Bertazi #endif /* CONFIG_GENERIC_ENTRY */
501446e1dfSGabriel Krisman Bertazi
511446e1dfSGabriel Krisman Bertazi #endif /* _SYSCALL_USER_DISPATCH_H */
52