tuxonice_bio_internal.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /*
  2. * kernel/power/tuxonice_bio_internal.h
  3. *
  4. * Copyright (C) 2009-2014 Nigel Cunningham (nigel at tuxonice net)
  5. *
  6. * Distributed under GPLv2.
  7. *
  8. * This file contains declarations for functions exported from
  9. * tuxonice_bio.c, which contains low level io functions.
  10. */
  11. /* Extent chains */
  12. void toi_extent_state_goto_start(void);
  13. void toi_extent_state_save(int slot);
  14. int go_next_page(int writing, int section_barrier);
  15. void toi_extent_state_restore(int slot);
  16. void free_all_bdev_info(void);
  17. int devices_of_same_priority(struct toi_bdev_info *this);
  18. int toi_register_storage_chain(struct toi_bdev_info *new);
  19. int toi_serialise_extent_chains(void);
  20. int toi_load_extent_chains(void);
  21. int toi_bio_rw_page(int writing, struct page *page, int is_readahead,
  22. int free_group);
  23. int toi_bio_restore_original_signature(void);
  24. int toi_bio_devinfo_storage_needed(void);
  25. unsigned long get_headerblock(void);
  26. dev_t get_header_dev_t(void);
  27. struct block_device *get_header_bdev(void);
  28. int toi_bio_allocate_storage(unsigned long request);
  29. /* Signature functions */
  30. #define HaveImage "HaveImage"
  31. #define NoImage "TuxOnIce"
  32. #define sig_size (sizeof(HaveImage))
  33. struct sig_data {
  34. char sig[sig_size];
  35. int have_image;
  36. int resumed_before;
  37. char have_uuid;
  38. char header_uuid[17];
  39. dev_t header_dev_t;
  40. unsigned long first_header_block;
  41. /* Repeat the signature to be sure we have a header version */
  42. char sig2[sig_size];
  43. int header_version;
  44. };
  45. void forget_signature_page(void);
  46. int toi_check_for_signature(void);
  47. int toi_bio_image_exists(int quiet);
  48. int get_signature_page(void);
  49. int toi_bio_mark_resume_attempted(int);
  50. extern char *toi_cur_sig_page;
  51. extern char *toi_orig_sig_page;
  52. int toi_bio_mark_have_image(void);
  53. extern struct sig_data *toi_sig_data;
  54. extern dev_t resume_dev_t;
  55. extern struct block_device *resume_block_device;
  56. extern struct block_device *header_block_device;
  57. extern unsigned long resume_firstblock;
  58. struct block_device *open_bdev(dev_t device, int display_errs);
  59. extern int current_stream;
  60. extern int more_readahead;
  61. int toi_do_io(int writing, struct block_device *bdev, long block0,
  62. struct page *page, int is_readahead, int syncio, int free_group);
  63. int get_main_pool_phys_params(void);
  64. void toi_close_bdev(struct block_device *bdev);
  65. struct block_device *toi_open_bdev(char *uuid, dev_t default_device,
  66. int display_errs);
  67. extern struct toi_module_ops toi_blockwriter_ops;
  68. void dump_block_chains(void);
  69. void debug_broken_header(void);
  70. extern unsigned long raw_pages_allocd, header_pages_reserved;
  71. int toi_bio_chains_debug_info(char *buffer, int size);
  72. void toi_bio_chains_post_atomic(struct toi_boot_kernel_data *bkd);
  73. int toi_bio_scan_for_image(int quiet);
  74. int toi_bio_get_header_version(void);
  75. void close_resume_dev_t(int force);
  76. int open_resume_dev_t(int force, int quiet);