diff options
Diffstat (limited to 'Documentation/cgroups')
| -rw-r--r-- | Documentation/cgroups/cgroups.txt | 51 |
1 files changed, 21 insertions, 30 deletions
diff --git a/Documentation/cgroups/cgroups.txt b/Documentation/cgroups/cgroups.txt index 9c452ef2328c..a7c96ae5557c 100644 --- a/Documentation/cgroups/cgroups.txt +++ b/Documentation/cgroups/cgroups.txt | |||
| @@ -594,53 +594,44 @@ rmdir() will fail with it. From this behavior, pre_destroy() can be | |||
| 594 | called multiple times against a cgroup. | 594 | called multiple times against a cgroup. |
| 595 | 595 | ||
| 596 | int can_attach(struct cgroup_subsys *ss, struct cgroup *cgrp, | 596 | int can_attach(struct cgroup_subsys *ss, struct cgroup *cgrp, |
| 597 | struct task_struct *task) | 597 | struct cgroup_taskset *tset) |
| 598 | (cgroup_mutex held by caller) | 598 | (cgroup_mutex held by caller) |
| 599 | 599 | ||
| 600 | Called prior to moving a task into a cgroup; if the subsystem | 600 | Called prior to moving one or more tasks into a cgroup; if the |
| 601 | returns an error, this will abort the attach operation. If a NULL | 601 | subsystem returns an error, this will abort the attach operation. |
| 602 | task is passed, then a successful result indicates that *any* | 602 | @tset contains the tasks to be attached and is guaranteed to have at |
| 603 | unspecified task can be moved into the cgroup. Note that this isn't | 603 | least one task in it. |
| 604 | called on a fork. If this method returns 0 (success) then this should | 604 | |
| 605 | remain valid while the caller holds cgroup_mutex and it is ensured that either | 605 | If there are multiple tasks in the taskset, then: |
| 606 | - it's guaranteed that all are from the same thread group | ||
| 607 | - @tset contains all tasks from the thread group whether or not | ||
| 608 | they're switching cgroups | ||
| 609 | - the first task is the leader | ||
| 610 | |||
| 611 | Each @tset entry also contains the task's old cgroup and tasks which | ||
| 612 | aren't switching cgroup can be skipped easily using the | ||
| 613 | cgroup_taskset_for_each() iterator. Note that this isn't called on a | ||
| 614 | fork. If this method returns 0 (success) then this should remain valid | ||
| 615 | while the caller holds cgroup_mutex and it is ensured that either | ||
| 606 | attach() or cancel_attach() will be called in future. | 616 | attach() or cancel_attach() will be called in future. |
| 607 | 617 | ||
| 608 | int can_attach_task(struct cgroup *cgrp, struct task_struct *tsk); | ||
| 609 | (cgroup_mutex held by caller) | ||
| 610 | |||
| 611 | As can_attach, but for operations that must be run once per task to be | ||
| 612 | attached (possibly many when using cgroup_attach_proc). Called after | ||
| 613 | can_attach. | ||
| 614 | |||
| 615 | void cancel_attach(struct cgroup_subsys *ss, struct cgroup *cgrp, | 618 | void cancel_attach(struct cgroup_subsys *ss, struct cgroup *cgrp, |
| 616 | struct task_struct *task, bool threadgroup) | 619 | struct cgroup_taskset *tset) |
| 617 | (cgroup_mutex held by caller) | 620 | (cgroup_mutex held by caller) |
| 618 | 621 | ||
| 619 | Called when a task attach operation has failed after can_attach() has succeeded. | 622 | Called when a task attach operation has failed after can_attach() has succeeded. |
| 620 | A subsystem whose can_attach() has some side-effects should provide this | 623 | A subsystem whose can_attach() has some side-effects should provide this |
| 621 | function, so that the subsystem can implement a rollback. If not, not necessary. | 624 | function, so that the subsystem can implement a rollback. If not, not necessary. |
| 622 | This will be called only about subsystems whose can_attach() operation have | 625 | This will be called only about subsystems whose can_attach() operation have |
| 623 | succeeded. | 626 | succeeded. The parameters are identical to can_attach(). |
| 624 | |||
| 625 | void pre_attach(struct cgroup *cgrp); | ||
| 626 | (cgroup_mutex held by caller) | ||
| 627 | |||
| 628 | For any non-per-thread attachment work that needs to happen before | ||
| 629 | attach_task. Needed by cpuset. | ||
| 630 | 627 | ||
| 631 | void attach(struct cgroup_subsys *ss, struct cgroup *cgrp, | 628 | void attach(struct cgroup_subsys *ss, struct cgroup *cgrp, |
| 632 | struct cgroup *old_cgrp, struct task_struct *task) | 629 | struct cgroup_taskset *tset) |
| 633 | (cgroup_mutex held by caller) | 630 | (cgroup_mutex held by caller) |
| 634 | 631 | ||
| 635 | Called after the task has been attached to the cgroup, to allow any | 632 | Called after the task has been attached to the cgroup, to allow any |
| 636 | post-attachment activity that requires memory allocations or blocking. | 633 | post-attachment activity that requires memory allocations or blocking. |
| 637 | 634 | The parameters are identical to can_attach(). | |
| 638 | void attach_task(struct cgroup *cgrp, struct task_struct *tsk); | ||
| 639 | (cgroup_mutex held by caller) | ||
| 640 | |||
| 641 | As attach, but for operations that must be run once per task to be attached, | ||
| 642 | like can_attach_task. Called before attach. Currently does not support any | ||
| 643 | subsystem that might need the old_cgrp for every thread in the group. | ||
| 644 | 635 | ||
| 645 | void fork(struct cgroup_subsy *ss, struct task_struct *task) | 636 | void fork(struct cgroup_subsy *ss, struct task_struct *task) |
| 646 | 637 | ||
