Rafael J. Wysocki
8314418629
Freezer: make kernel threads nonfreezable by default
...
Currently, the freezer treats all tasks as freezable, except for the kernel
threads that explicitly set the PF_NOFREEZE flag for themselves. This
approach is problematic, since it requires every kernel thread to either
set PF_NOFREEZE explicitly, or call try_to_freeze(), even if it doesn't
care for the freezing of tasks at all.
It seems better to only require the kernel threads that want to or need to
be frozen to use some freezer-related code and to remove any
freezer-related code from the other (nonfreezable) kernel threads, which is
done in this patch.
The patch causes all kernel threads to be nonfreezable by default (ie. to
have PF_NOFREEZE set by default) and introduces the set_freezable()
function that should be called by the freezable kernel threads in order to
unset PF_NOFREEZE. It also makes all of the currently freezable kernel
threads call set_freezable(), so it shouldn't cause any (intentional)
change of behaviour to appear. Additionally, it updates documentation to
describe the freezing of tasks more accurately.
[akpm@linux-foundation.org: build fixes]
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Acked-by: Nigel Cunningham <nigel@nigel.suspend2.net>
Cc: Pavel Machek <pavel@ucw.cz>
Cc: Oleg Nesterov <oleg@tv-sign.ru>
Cc: Gautham R Shenoy <ego@in.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-07-17 10:23:02 -07:00
..
irq
Improve behaviour of spurious IRQ detect
2007-07-16 09:05:46 -07:00
power
PM: introduce set_target method in pm_ops
2007-07-01 12:29:44 -07:00
time
Remove capability.h from mm.h
2007-07-16 09:05:45 -07:00
.gitignore
acct.c
audit.c
Freezer: make kernel threads nonfreezable by default
2007-07-17 10:23:02 -07:00
audit.h
Audit: add TTY input auditing
2007-07-16 09:05:47 -07:00
auditfilter.c
audit: fix oops removing watch if audit disabled
2007-06-24 08:59:12 -07:00
auditsc.c
kerneldoc fix in audit_core_dumps
2007-07-16 09:05:48 -07:00
capability.c
compat.c
signal/timer/event: timerfd compat code
2007-05-11 08:29:36 -07:00
configs.c
use simple_read_from_buffer in kernel/
2007-05-09 12:30:49 -07:00
cpu.c
microcode: use suspend-related CPU hotplug notifications
2007-05-09 12:30:56 -07:00
cpuset.c
Reduce cpuset.c write_lock_irq() to read_lock()
2007-07-16 09:05:43 -07:00
delayacct.c
sched: update delay-accounting to use CFS's precise stats
2007-07-09 18:52:00 +02:00
die_notifier.c
move die notifier handling to common code
2007-05-08 11:15:04 -07:00
dma.c
exec_domain.c
exit.c
Freezer: make kernel threads nonfreezable by default
2007-07-17 10:23:02 -07:00
extable.c
fork.c
Freezer: make kernel threads nonfreezable by default
2007-07-17 10:23:02 -07:00
futex.c
FUTEX: Tidy up the code
2007-07-16 09:05:49 -07:00
futex_compat.c
Revert "futex_requeue_pi optimization"
2007-06-18 09:48:41 -07:00
hrtimer.c
[HRTIMER] Fix cpu pointer arg to clockevents_notify()
2007-07-16 17:29:56 -07:00
itimer.c
The scheduled -EINVAL for invalid timevals in setitimer
2007-05-08 11:15:13 -07:00
kallsyms.c
sprint_symbol() cleanup
2007-07-16 09:05:50 -07:00
Kconfig.hz
Kconfig.preempt
Fix trivial typos in Kconfig* files
2007-05-09 07:12:20 +02:00
kexec.c
kdump/kexec: calculate note size at compile time
2007-05-08 11:15:07 -07:00
kfifo.c
is_power_of_2: kernel/kfifo.c
2007-07-16 09:05:50 -07:00
kmod.c
wait_for_helper: remove unneeded do_sigaction()
2007-05-09 12:30:53 -07:00
kprobes.c
Kprobes: The ON/OFF knob thru debugfs
2007-05-08 11:15:19 -07:00
ksysfs.c
remove "struct subsystem" as it is no longer needed
2007-05-02 18:57:59 -07:00
kthread.c
mm: fix improper .init-type section references
2007-07-16 09:05:36 -07:00
latency.c
lockdep.c
lockdep: removed unused ip argument in mark_lock & mark_held_locks
2007-05-08 11:15:13 -07:00
lockdep_internals.h
lockdep_proc.c
Makefile
user namespace: add the framework
2007-07-16 09:05:47 -07:00
module.c
modules: remove modlist_lock
2007-07-16 09:05:51 -07:00
mutex-debug.c
mutex-debug.h
mutex.c
wrap access to thread_info
2007-05-09 12:30:56 -07:00
mutex.h
nsproxy.c
namespace: ensure clone_flags are always stored in an unsigned long
2007-07-16 09:05:48 -07:00
panic.c
params.c
sysfs: kill unnecessary attribute->owner
2007-07-11 16:09:06 -07:00
pid.c
namespace: ensure clone_flags are always stored in an unsigned long
2007-07-16 09:05:48 -07:00
posix-cpu-timers.c
sched: make posix-cpu-timers use CFS's accounting information
2007-07-09 18:51:58 +02:00
posix-timers.c
posix-timers: Prevent softirq starvation by small intervals and SIG_IGN
2007-06-21 15:57:04 -07:00
printk.c
kernel/printk.c: document possible deadlock against scheduler
2007-07-16 09:05:52 -07:00
profile.c
Detach sched.h from mm.h
2007-05-21 09:18:19 -07:00
ptrace.c
Use write_trylock_irqsave in ptrace_attach
2007-07-16 09:05:40 -07:00
rcupdate.c
Add suspend-related notifications for CPU hotplug
2007-05-09 12:30:56 -07:00
rcutorture.c
Freezer: make kernel threads nonfreezable by default
2007-07-17 10:23:02 -07:00
relay.c
relay: fixup kerneldoc comment
2007-07-13 14:14:28 +02:00
resource.c
libata/IDE: remove combined mode quirk
2007-04-28 14:15:59 -04:00
rtmutex-debug.c
FUTEX: Tidy up the code
2007-07-16 09:05:49 -07:00
rtmutex-debug.h
rtmutex-tester.c
Freezer: make kernel threads nonfreezable by default
2007-07-17 10:23:02 -07:00
rtmutex.c
FUTEX: Tidy up the code
2007-07-16 09:05:49 -07:00
rtmutex.h
rtmutex_common.h
FUTEX: Tidy up the code
2007-07-16 09:05:49 -07:00
rwsem.c
Lockdep treats down_write_trylock like regular down_write
2007-05-08 11:15:09 -07:00
sched.c
Freezer: make kernel threads nonfreezable by default
2007-07-17 10:23:02 -07:00
sched_debug.c
[PATCH] sched: remove stale version info from kernel/sched_debug.c
2007-07-13 10:10:41 -07:00
sched_fair.c
sched: cfs core, kernel/sched_fair.c
2007-07-09 18:51:58 +02:00
sched_idletask.c
sched: cfs core, kernel/sched_idletask.c
2007-07-09 18:51:58 +02:00
sched_rt.c
sched: cfs core, kernel/sched_rt.c
2007-07-09 18:51:58 +02:00
sched_stats.h
sched: update delay-accounting to use CFS's precise stats
2007-07-09 18:52:00 +02:00
seccomp.c
make seccomp zerocost in schedule
2007-07-16 09:05:50 -07:00
signal.c
vdso: print fatal signals
2007-07-16 09:05:43 -07:00
softirq.c
Freezer: make kernel threads nonfreezable by default
2007-07-17 10:23:02 -07:00
softlockup.c
Freezer: make kernel threads nonfreezable by default
2007-07-17 10:23:02 -07:00
spinlock.c
srcu.c
stacktrace.c
stop_machine.c
Fix stop_machine_run problem with naughty real time process
2007-07-16 09:05:41 -07:00
sys.c
move seccomp from /proc to a prctl
2007-07-16 09:05:50 -07:00
sys_ni.c
diskquota: 32bit quota tools on 64bit architectures
2007-07-16 09:05:48 -07:00
sysctl.c
Allow huge page allocations to use GFP_HIGH_MOVABLE
2007-07-17 10:22:59 -07:00
taskstats.c
taskstats: add context-switch counters
2007-07-16 09:05:46 -07:00
time.c
sys_time() speedup
2007-07-16 09:05:48 -07:00
timer.c
Slab allocators: Replace explicit zeroing with __GFP_ZERO
2007-07-17 10:23:02 -07:00
tsacct.c
uid16.c
header cleaning: don't include smp_lock.h when not used
2007-05-08 11:15:07 -07:00
user.c
user namespace: add the framework
2007-07-16 09:05:47 -07:00
user_namespace.c
fix create_new_namespaces() return value
2007-07-16 09:05:47 -07:00
utsname.c
namespace: ensure clone_flags are always stored in an unsigned long
2007-07-16 09:05:48 -07:00
utsname_sysctl.c
remove CONFIG_UTS_NS and CONFIG_IPC_NS
2007-07-16 09:05:47 -07:00
wait.c
Fix occurrences of "the the "
2007-05-09 08:57:56 +02:00
workqueue.c
Freezer: make kernel threads nonfreezable by default
2007-07-17 10:23:02 -07:00