1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _LINUX_SCHED_AUTOGROUP_H
3#define _LINUX_SCHED_AUTOGROUP_H
4
5struct signal_struct;
6struct task_struct;
7struct task_group;
8struct seq_file;
9
10#ifdef CONFIG_SCHED_AUTOGROUP
11extern void sched_autogroup_create_attach(struct task_struct *p);
12extern void sched_autogroup_detach(struct task_struct *p);
13extern void sched_autogroup_fork(struct signal_struct *sig);
14extern void sched_autogroup_exit(struct signal_struct *sig);
15extern void sched_autogroup_exit_task(struct task_struct *p);
16#ifdef CONFIG_PROC_FS
17extern void proc_sched_autogroup_show_task(struct task_struct *p, struct seq_file *m);
18extern int proc_sched_autogroup_set_nice(struct task_struct *p, int nice);
19#endif
20#else
21static inline void sched_autogroup_create_attach(struct task_struct *p) { }
22static inline void sched_autogroup_detach(struct task_struct *p) { }
23static inline void sched_autogroup_fork(struct signal_struct *sig) { }
24static inline void sched_autogroup_exit(struct signal_struct *sig) { }
25static inline void sched_autogroup_exit_task(struct task_struct *p) { }
26#endif
27
28#ifdef CONFIG_CGROUP_SCHED
29extern struct task_group root_task_group;
30#endif /* CONFIG_CGROUP_SCHED */
31
32#endif /* _LINUX_SCHED_AUTOGROUP_H */
33