power.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #include <linux/suspend.h>
  2. #include <linux/utsname.h>
  3. struct swsusp_info {
  4. struct new_utsname uts;
  5. u32 version_code;
  6. unsigned long num_physpages;
  7. int cpus;
  8. unsigned long image_pages;
  9. unsigned long pages;
  10. } __attribute__((aligned(PAGE_SIZE)));
  11. #ifdef CONFIG_SOFTWARE_SUSPEND
  12. extern int pm_suspend_disk(void);
  13. #else
  14. static inline int pm_suspend_disk(void)
  15. {
  16. return -EPERM;
  17. }
  18. #endif
  19. extern struct semaphore pm_sem;
  20. #define power_attr(_name) \
  21. static struct subsys_attribute _name##_attr = { \
  22. .attr = { \
  23. .name = __stringify(_name), \
  24. .mode = 0644, \
  25. }, \
  26. .show = _name##_show, \
  27. .store = _name##_store, \
  28. }
  29. extern struct subsystem power_subsys;
  30. /* References to section boundaries */
  31. extern const void __nosave_begin, __nosave_end;
  32. extern struct pbe *pagedir_nosave;
  33. /* Preferred image size in bytes (default 500 MB) */
  34. extern unsigned long image_size;
  35. extern int in_suspend;
  36. extern asmlinkage int swsusp_arch_suspend(void);
  37. extern asmlinkage int swsusp_arch_resume(void);
  38. extern unsigned int count_data_pages(void);
  39. extern void swsusp_free(void);
  40. struct snapshot_handle {
  41. loff_t offset;
  42. unsigned int page;
  43. unsigned int page_offset;
  44. unsigned int prev;
  45. struct pbe *pbe;
  46. void *buffer;
  47. unsigned int buf_offset;
  48. };
  49. #define data_of(handle) ((handle).buffer + (handle).buf_offset)
  50. extern int snapshot_read_next(struct snapshot_handle *handle, size_t count);
  51. extern int snapshot_write_next(struct snapshot_handle *handle, size_t count);
  52. int snapshot_image_loaded(struct snapshot_handle *handle);