KERNEL THREADS


Freezer

Upon entering a suspended state the system will freeze all
tasks. This is done by delivering pseudosignals. This affects
kernel threads, too. To successfully freeze a kernel thread
the thread has to check for the pseudosignal and enter the
refrigerator. Code to do this looks like this:

	do {
		hub_events();
		wait_event_interruptible(khubd_wait, !list_empty(&hub_event_list));
		try_to_freeze();
	} while (!signal_pending(current));

from drivers/usb/core/hub.c::hub_thread()


The Unfreezable

Some kernel threads however, must not be frozen. The kernel must
be able to finish pending IO operations and later on be able to
write the memory image to disk. Kernel threads needed to do IO
must stay awake. Such threads must mark themselves unfreezable
like this:

	/*
	 * This thread doesn't need any user-level access,
	 * so get rid of all our resources.
	 */
	daemonize("usb-storage");

	current->flags |= PF_NOFREEZE;

from drivers/usb/storage/usb.c::usb_stor_control_thread()

Such drivers are themselves responsible for staying quiet during
the actual snapshotting.
