Commit | Line | Data |
---|---|---|
6fa3eb70 S |
1 | /* |
2 | * kernel/power/tuxonice_extent.h | |
3 | * | |
4 | * Copyright (C) 2003-2010 Nigel Cunningham (nigel at tuxonice net) | |
5 | * | |
6 | * This file is released under the GPLv2. | |
7 | * | |
8 | * It contains declarations related to extents. Extents are | |
9 | * TuxOnIce's method of storing some of the metadata for the image. | |
10 | * See tuxonice_extent.c for more info. | |
11 | * | |
12 | */ | |
13 | ||
14 | #include "tuxonice_modules.h" | |
15 | ||
16 | #ifndef EXTENT_H | |
17 | #define EXTENT_H | |
18 | ||
19 | struct hibernate_extent { | |
20 | unsigned long start, end; | |
21 | struct hibernate_extent *next; | |
22 | }; | |
23 | ||
24 | struct hibernate_extent_chain { | |
25 | unsigned long size; /* size of the chain ie sum (max-min+1) */ | |
26 | int num_extents; | |
27 | struct hibernate_extent *first, *last_touched; | |
28 | struct hibernate_extent *current_extent; | |
29 | unsigned long current_offset; | |
30 | }; | |
31 | ||
32 | /* Simplify iterating through all the values in an extent chain */ | |
33 | #define toi_extent_for_each(extent_chain, extentpointer, value) \ | |
34 | if ((extent_chain)->first) \ | |
35 | for ((extentpointer) = (extent_chain)->first, (value) = \ | |
36 | (extentpointer)->start; \ | |
37 | ((extentpointer) && ((extentpointer)->next || (value) <= \ | |
38 | (extentpointer)->end)); \ | |
39 | (((value) == (extentpointer)->end) ? \ | |
40 | ((extentpointer) = (extentpointer)->next, (value) = \ | |
41 | ((extentpointer) ? (extentpointer)->start : 0)) : \ | |
42 | (value)++)) | |
43 | ||
44 | #endif |