summaryrefslogtreecommitdiffstats
path: root/kernel/fork.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2015-05-13 16:35:16 -0400
committerTejun Heo <tj@kernel.org>2015-05-26 20:35:00 -0400
commit7d7efec368d537226142cbe559f45797f18672f9 (patch)
tree8b391dada2b97b66f9fbd4315b397516f13199de /kernel/fork.c
parent8ab456ac3697dbd1d3eae5d5817dba941faf89ee (diff)
downloadlinux-7d7efec368d537226142cbe559f45797f18672f9.tar.gz
linux-7d7efec368d537226142cbe559f45797f18672f9.tar.bz2
linux-7d7efec368d537226142cbe559f45797f18672f9.zip
sched, cgroup: reorganize threadgroup locking
threadgroup_change_begin/end() are used to mark the beginning and end of threadgroup modifying operations to allow code paths which require a threadgroup to stay stable across blocking operations to synchronize against those sections using threadgroup_lock/unlock(). It's currently implemented as a general mechanism in sched.h using per-signal_struct rwsem; however, this never grew non-cgroup use cases and becomes noop if !CONFIG_CGROUPS. It turns out that cgroups is gonna be better served with a different sycnrhonization scheme and is a bit silly to keep cgroups specific details as a general mechanism. What's general here is identifying the places where threadgroups are modified. This patch restructures threadgroup locking so that threadgroup_change_begin/end() become a place where subsystems which need to sycnhronize against threadgroup changes can hook into. cgroup_threadgroup_change_begin/end() which operate on the per-signal_struct rwsem are created and threadgroup_lock/unlock() are moved to cgroup.c and made static. This is pure reorganization which doesn't cause any functional changes. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Ingo Molnar <mingo@redhat.com> Cc: Peter Zijlstra <peterz@infradead.org>
Diffstat (limited to 'kernel/fork.c')
0 files changed, 0 insertions, 0 deletions