1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 29ccd27ccSIngo Molnar #ifndef _LINUX_SCHED_RT_H 39ccd27ccSIngo Molnar #define _LINUX_SCHED_RT_H 48bd75c77SClark Williams 59ccd27ccSIngo Molnar #include <linux/sched.h> 69ccd27ccSIngo Molnar 79ccd27ccSIngo Molnar struct task_struct; 88bd75c77SClark Williams rt_prio(int prio)98bd75c77SClark Williamsstatic inline int rt_prio(int prio) 108bd75c77SClark Williams { 118bd75c77SClark Williams if (unlikely(prio < MAX_RT_PRIO)) 128bd75c77SClark Williams return 1; 138bd75c77SClark Williams return 0; 148bd75c77SClark Williams } 158bd75c77SClark Williams rt_task(struct task_struct * p)168bd75c77SClark Williamsstatic inline int rt_task(struct task_struct *p) 178bd75c77SClark Williams { 188bd75c77SClark Williams return rt_prio(p->prio); 198bd75c77SClark Williams } 208bd75c77SClark Williams task_is_realtime(struct task_struct * tsk)21ff0d4a9dSSebastian Andrzej Siewiorstatic inline bool task_is_realtime(struct task_struct *tsk) 22ff0d4a9dSSebastian Andrzej Siewior { 23ff0d4a9dSSebastian Andrzej Siewior int policy = tsk->policy; 24ff0d4a9dSSebastian Andrzej Siewior 25ff0d4a9dSSebastian Andrzej Siewior if (policy == SCHED_FIFO || policy == SCHED_RR) 26ff0d4a9dSSebastian Andrzej Siewior return true; 27ff0d4a9dSSebastian Andrzej Siewior if (policy == SCHED_DEADLINE) 28ff0d4a9dSSebastian Andrzej Siewior return true; 29ff0d4a9dSSebastian Andrzej Siewior return false; 30ff0d4a9dSSebastian Andrzej Siewior } 31ff0d4a9dSSebastian Andrzej Siewior 328bd75c77SClark Williams #ifdef CONFIG_RT_MUTEXES 33acd58620SPeter Zijlstra /* 34acd58620SPeter Zijlstra * Must hold either p->pi_lock or task_rq(p)->lock. 35acd58620SPeter Zijlstra */ rt_mutex_get_top_task(struct task_struct * p)36acd58620SPeter Zijlstrastatic inline struct task_struct *rt_mutex_get_top_task(struct task_struct *p) 37acd58620SPeter Zijlstra { 38acd58620SPeter Zijlstra return p->pi_top_task; 39acd58620SPeter Zijlstra } 40acd58620SPeter Zijlstra extern void rt_mutex_setprio(struct task_struct *p, struct task_struct *pi_task); 418bd75c77SClark Williams extern void rt_mutex_adjust_pi(struct task_struct *p); 428bd75c77SClark Williams #else rt_mutex_get_top_task(struct task_struct * task)432d3d891dSDario Faggiolistatic inline struct task_struct *rt_mutex_get_top_task(struct task_struct *task) 442d3d891dSDario Faggioli { 452d3d891dSDario Faggioli return NULL; 462d3d891dSDario Faggioli } 478bd75c77SClark Williams # define rt_mutex_adjust_pi(p) do { } while (0) 488bd75c77SClark Williams #endif 498bd75c77SClark Williams 508bd75c77SClark Williams extern void normalize_rt_tasks(void); 518bd75c77SClark Williams 528bd75c77SClark Williams 53bc681593SClark Williams /* 54bc681593SClark Williams * default timeslice is 100 msecs (used only for SCHED_RR tasks). 55bc681593SClark Williams * Timeslices get refilled after they expire. 56bc681593SClark Williams */ 57bc681593SClark Williams #define RR_TIMESLICE (100 * HZ / 1000) 58bc681593SClark Williams 599ccd27ccSIngo Molnar #endif /* _LINUX_SCHED_RT_H */ 60