tuxonice_extent.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. /*
  2. * kernel/power/tuxonice_extent.h
  3. *
  4. * Copyright (C) 2003-2014 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. #include "tuxonice_modules.h"
  14. #ifndef EXTENT_H
  15. #define EXTENT_H
  16. struct hibernate_extent {
  17. unsigned long start, end;
  18. struct hibernate_extent *next;
  19. };
  20. struct hibernate_extent_chain {
  21. unsigned long size; /* size of the chain ie sum (max-min+1) */
  22. int num_extents;
  23. struct hibernate_extent *first, *last_touched;
  24. struct hibernate_extent *current_extent;
  25. unsigned long current_offset;
  26. };
  27. /* Simplify iterating through all the values in an extent chain */
  28. #define toi_extent_for_each(extent_chain, extentpointer, value) \
  29. for ((extentpointer) = ((extent_chain)->first), (value) = ((extentpointer)->start); \
  30. (extentpointer) && (((extentpointer)->next) || ((value) <= ((extentpointer)->end))); \
  31. ((value) == ((extentpointer)->end) ? \
  32. ((extentpointer) = ((extentpointer)->next), (value) = \
  33. ((extentpointer) ? ((extentpointer)->start) : 0)) : ((value)++)))
  34. #endif