The checkpoint library allows you to design and develop your application with the concept of sequenced operations, checkpoints and rollbacks built in. Because this is something that has to be designed in from the initial design, it is best applied when the initial low level design is conceived.
A program written with the checkpoint library is structured into two levels, the sequence level, and the checkpoint level.
A sequence is invoked similarily to the way one might invoke a single function, except that it is done through the API of the client library.
Checkpoints are a facility for allowing the rollback of a partially completed function. Checkpoints are a strictly linear enumeration of the resources allocated by the programmer's code.
The value of the last checkpoint set by a particular normal or rollback function is stored, then presented to the rollback function so that the programmer's rollback code can know what resources it needs to free and/or deconfigure.