Lines Matching refs:freezer
43 struct freezer { struct
50 static inline struct freezer *css_freezer(struct cgroup_subsys_state *css) in css_freezer() argument
52 return css ? container_of(css, struct freezer, css) : NULL; in css_freezer()
55 static inline struct freezer *task_freezer(struct task_struct *task) in task_freezer()
60 static struct freezer *parent_freezer(struct freezer *freezer) in parent_freezer() argument
62 return css_freezer(freezer->css.parent); in parent_freezer()
88 struct freezer *freezer; in freezer_css_alloc() local
90 freezer = kzalloc(sizeof(struct freezer), GFP_KERNEL); in freezer_css_alloc()
91 if (!freezer) in freezer_css_alloc()
94 return &freezer->css; in freezer_css_alloc()
107 struct freezer *freezer = css_freezer(css); in freezer_css_online() local
108 struct freezer *parent = parent_freezer(freezer); in freezer_css_online()
112 freezer->state |= CGROUP_FREEZER_ONLINE; in freezer_css_online()
115 freezer->state |= CGROUP_FREEZING_PARENT | CGROUP_FROZEN; in freezer_css_online()
132 struct freezer *freezer = css_freezer(css); in freezer_css_offline() local
136 if (freezer->state & CGROUP_FREEZING) in freezer_css_offline()
139 freezer->state = 0; in freezer_css_offline()
176 struct freezer *freezer = css_freezer(new_css); in freezer_attach() local
178 if (!(freezer->state & CGROUP_FREEZING)) { in freezer_attach()
184 while (freezer && (freezer->state & CGROUP_FROZEN)) { in freezer_attach()
185 freezer->state &= ~CGROUP_FROZEN; in freezer_attach()
186 freezer = parent_freezer(freezer); in freezer_attach()
206 struct freezer *freezer; in freezer_fork() local
221 freezer = task_freezer(task); in freezer_fork()
222 if (freezer->state & CGROUP_FREEZING) in freezer_fork()
247 struct freezer *freezer = css_freezer(css); in update_if_frozen() local
254 if (!(freezer->state & CGROUP_FREEZING) || in update_if_frozen()
255 (freezer->state & CGROUP_FROZEN)) in update_if_frozen()
261 struct freezer *child = css_freezer(pos); in update_if_frozen()
279 freezer->state |= CGROUP_FROZEN; in update_if_frozen()
311 static void freeze_cgroup(struct freezer *freezer) in freeze_cgroup() argument
316 css_task_iter_start(&freezer->css, 0, &it); in freeze_cgroup()
322 static void unfreeze_cgroup(struct freezer *freezer) in unfreeze_cgroup() argument
327 css_task_iter_start(&freezer->css, 0, &it); in unfreeze_cgroup()
342 static void freezer_apply_state(struct freezer *freezer, bool freeze, in freezer_apply_state() argument
348 if (!(freezer->state & CGROUP_FREEZER_ONLINE)) in freezer_apply_state()
352 if (!(freezer->state & CGROUP_FREEZING)) in freezer_apply_state()
354 freezer->state |= state; in freezer_apply_state()
355 freeze_cgroup(freezer); in freezer_apply_state()
357 bool was_freezing = freezer->state & CGROUP_FREEZING; in freezer_apply_state()
359 freezer->state &= ~state; in freezer_apply_state()
361 if (!(freezer->state & CGROUP_FREEZING)) { in freezer_apply_state()
362 freezer->state &= ~CGROUP_FROZEN; in freezer_apply_state()
365 unfreeze_cgroup(freezer); in freezer_apply_state()
378 static void freezer_change_state(struct freezer *freezer, bool freeze) in freezer_change_state() argument
389 css_for_each_descendant_pre(pos, &freezer->css) { in freezer_change_state()
390 struct freezer *pos_f = css_freezer(pos); in freezer_change_state()
391 struct freezer *parent = parent_freezer(pos_f); in freezer_change_state()
397 if (pos_f == freezer) in freezer_change_state()
433 struct freezer *freezer = css_freezer(css); in freezer_self_freezing_read() local
435 return (bool)(freezer->state & CGROUP_FREEZING_SELF); in freezer_self_freezing_read()
441 struct freezer *freezer = css_freezer(css); in freezer_parent_freezing_read() local
443 return (bool)(freezer->state & CGROUP_FREEZING_PARENT); in freezer_parent_freezing_read()