diff options
Diffstat (limited to 'include/linux/cgroup.h')
| -rw-r--r-- | include/linux/cgroup.h | 43 | 
1 files changed, 43 insertions, 0 deletions
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index 81f58b4a5418..c0077adeea83 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h @@ -881,4 +881,47 @@ static inline void put_cgroup_ns(struct cgroup_namespace *ns)  		free_cgroup_ns(ns);  } +#ifdef CONFIG_CGROUPS + +void cgroup_enter_frozen(void); +void cgroup_leave_frozen(bool always_leave); +void cgroup_update_frozen(struct cgroup *cgrp); +void cgroup_freeze(struct cgroup *cgrp, bool freeze); +void cgroup_freezer_migrate_task(struct task_struct *task, struct cgroup *src, +				 struct cgroup *dst); + +static inline bool cgroup_task_freeze(struct task_struct *task) +{ +	bool ret; + +	if (task->flags & PF_KTHREAD) +		return false; + +	rcu_read_lock(); +	ret = test_bit(CGRP_FREEZE, &task_dfl_cgroup(task)->flags); +	rcu_read_unlock(); + +	return ret; +} + +static inline bool cgroup_task_frozen(struct task_struct *task) +{ +	return task->frozen; +} + +#else /* !CONFIG_CGROUPS */ + +static inline void cgroup_enter_frozen(void) { } +static inline void cgroup_leave_frozen(bool always_leave) { } +static inline bool cgroup_task_freeze(struct task_struct *task) +{ +	return false; +} +static inline bool cgroup_task_frozen(struct task_struct *task) +{ +	return false; +} + +#endif /* !CONFIG_CGROUPS */ +  #endif /* _LINUX_CGROUP_H */  |