1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (C) 2020 Collabora Ltd.
4 */
5#ifndef _SYSCALL_USER_DISPATCH_H
6#define _SYSCALL_USER_DISPATCH_H
7
8#include <linux/thread_info.h>
9#include <linux/syscall_user_dispatch_types.h>
10
11#ifdef CONFIG_GENERIC_ENTRY
12
13int set_syscall_user_dispatch(unsigned long mode, unsigned long offset,
14			      unsigned long len, char __user *selector);
15
16#define clear_syscall_work_syscall_user_dispatch(tsk) \
17	clear_task_syscall_work(tsk, SYSCALL_USER_DISPATCH)
18
19int syscall_user_dispatch_get_config(struct task_struct *task, unsigned long size,
20				     void __user *data);
21
22int syscall_user_dispatch_set_config(struct task_struct *task, unsigned long size,
23				     void __user *data);
24
25#else
26
27static inline int set_syscall_user_dispatch(unsigned long mode, unsigned long offset,
28					    unsigned long len, char __user *selector)
29{
30	return -EINVAL;
31}
32
33static inline void clear_syscall_work_syscall_user_dispatch(struct task_struct *tsk)
34{
35}
36
37static inline int syscall_user_dispatch_get_config(struct task_struct *task,
38						   unsigned long size, void __user *data)
39{
40	return -EINVAL;
41}
42
43static inline int syscall_user_dispatch_set_config(struct task_struct *task,
44						   unsigned long size, void __user *data)
45{
46	return -EINVAL;
47}
48
49#endif /* CONFIG_GENERIC_ENTRY */
50
51#endif /* _SYSCALL_USER_DISPATCH_H */
52