Matthew Dillon dillon at
Wed Oct 8 21:17:56 PDT 2003

:cvs diff: Diffing .
:Index: signalvar.h
:RCS file: /home/dcvs/src/sys/sys/signalvar.h,v
:retrieving revision 1.5
:diff -r1.5 signalvar.h
:>         sig_t    ps_checkpoint;         /* place to store checkpoint/restore upcall */
:>         sig_t    ps_restore;

    sigacts has the ps_sigact[] array which I believe contains
    128 signals by default.  Since only 32 some odd signals are defined,
    there are plenty of signals available for your checkpoint and restore
    vectors (though I still think there is only a need for a checkpoint
    signal, since the restore can simply resume the signal handler from
    the point where it called freeze()).  There are other little cleanups
    you can do, but I'm sure you are already aware of them (e.g. converting
    those macros like READ_CHECK into inlines and removing
    non-argument-passed dependancies).

    I've played with it a bit, I think you are making excellent progress!
    You even made it a kld.  Wow.

    We need to add a stty signal similar to how ^\ core's a program, to
    checkpoint a program.  That would be so cool.

    Am I correct in that currently the program binary that was checkpointed
    must do the restore?  I tried writing a little program that restore'd
    another program's checkpoint file but it seg faulted.  So, presumably,
    the next step is to save and restore filesystem-based file descriptors
    so as to reacquire the original text image.  That's a fairly tough nut
    to crack, but the result will be incredibly powerful.


More information about the Kernel mailing list