ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Sys-FreezeThaw/README
Revision: 1.1
Committed: Sat Oct 5 17:51:34 2013 UTC (12 years, 8 months ago) by root
Branch: MAIN
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 NAME
2     Sys::FreezeThaw - stop and start all user processes on a machine
3    
4     SYNOPSIS
5     use Sys::FreezeThaw;
6    
7     Sys::FreezeThaw::freezethaw {
8     # run code while system is frozen
9     };
10    
11     my $token = Sys::FreezeThaw::freeze;
12     ... do something ...
13     Sys::FreezeThaw::thaw $token;
14    
15     DESCRIPTION
16     Operating Systems current supported: Linux-2.6.
17    
18     This module implements a very specific feature: stopping(freezing and
19     thawing/continuing all user processes on the machine. It works by
20     sending SIGSTOP to all processes, parent-process first, so that the wait
21     syscall will not trigger on stopped children. Restarting is done in
22     reverse order.
23    
24     Using the combined function Sys::FreezeThaw::freezethaw is recommended
25     as it will catch runtime errors, but stopping and restarting can be dine
26     via seperate function calls.
27    
28     Sys::FreezeThaw::freezethaw { BLOCK }
29     First tries to stop all processes. If successful, runs the given
30     codeblock (or code reference), then restarts all processes again. As
31     the system is basically frozen during the codeblock execution, it
32     should be as fast as possible.
33    
34     Runtime errors will be caught with "eval". If an exception occurs it
35     will be re-thrown after processes are restarted. If processes cannot
36     be frozen or restarted, this function will throw an exception.
37    
38     Signal handlers for SIGPIPE, SIGHUP, SIGALRM, SIGUSR1 and SIGUSR2
39     will temporarily be installed, so if you want to catch these, you
40     have to do so yourself within the executed codeblock.
41    
42     Try to do as few things as possible. For example, outputting text
43     might cause a deadlock, as the terminal emulator on the other side
44     of STDOUT might be stopped, etc.
45    
46     The return value of the codeblock is ignored right now, and the
47     function doesn't yet return anything sensible.
48    
49     $token = Sys::FreezeThaw::freeze;
50     Send SIGSTOP to all processes, and return a token that allows them
51     to be thawed again.
52    
53     If an error occurs, an exception will be thrown and all stopped
54     processes will automatically be thawed.
55    
56     Sys::FreezeThaw::thaw $token
57     Take a token returned by Sys::FreezeThaw::freeze and send all
58     processes a CONT signal, in the order required for them not to
59     receive child STOP notifications.
60    
61     BUGS
62     SIGCONT is not unnoticed by processes. Some programs (such as
63     irssi-text) respond by flickering (IMHO a bug in irssi-text). Other
64     programs might have other problems, but actual problems should be rare.
65     However, one shouldn't overuse this module.
66    
67     AUTHOR
68     Marc Lehmann <schmorp@schmorp.de>
69     http://home.schmorp.de/
70