root/kernel/sched/autogroup.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. task_group_is_autogroup
  2. autogroup_task_group
  3. autogroup_init
  4. autogroup_free
  5. task_group_is_autogroup
  6. autogroup_task_group
  7. autogroup_path

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifdef CONFIG_SCHED_AUTOGROUP
   3 
   4 struct autogroup {
   5         /*
   6          * Reference doesn't mean how many threads attach to this
   7          * autogroup now. It just stands for the number of tasks
   8          * which could use this autogroup.
   9          */
  10         struct kref             kref;
  11         struct task_group       *tg;
  12         struct rw_semaphore     lock;
  13         unsigned long           id;
  14         int                     nice;
  15 };
  16 
  17 extern void autogroup_init(struct task_struct *init_task);
  18 extern void autogroup_free(struct task_group *tg);
  19 
  20 static inline bool task_group_is_autogroup(struct task_group *tg)
  21 {
  22         return !!tg->autogroup;
  23 }
  24 
  25 extern bool task_wants_autogroup(struct task_struct *p, struct task_group *tg);
  26 
  27 static inline struct task_group *
  28 autogroup_task_group(struct task_struct *p, struct task_group *tg)
  29 {
  30         int enabled = READ_ONCE(sysctl_sched_autogroup_enabled);
  31 
  32         if (enabled && task_wants_autogroup(p, tg))
  33                 return p->signal->autogroup->tg;
  34 
  35         return tg;
  36 }
  37 
  38 extern int autogroup_path(struct task_group *tg, char *buf, int buflen);
  39 
  40 #else /* !CONFIG_SCHED_AUTOGROUP */
  41 
  42 static inline void autogroup_init(struct task_struct *init_task) {  }
  43 static inline void autogroup_free(struct task_group *tg) { }
  44 static inline bool task_group_is_autogroup(struct task_group *tg)
  45 {
  46         return 0;
  47 }
  48 
  49 static inline struct task_group *
  50 autogroup_task_group(struct task_struct *p, struct task_group *tg)
  51 {
  52         return tg;
  53 }
  54 
  55 static inline int autogroup_path(struct task_group *tg, char *buf, int buflen)
  56 {
  57         return 0;
  58 }
  59 
  60 #endif /* CONFIG_SCHED_AUTOGROUP */

/* [<][>][^][v][top][bottom][index][help] */