linux-bk/include/linux/suspend.h
<<
>>
Prefs
   1#ifndef _LINUX_SWSUSP_H
   2#define _LINUX_SWSUSP_H
   3
   4#ifdef CONFIG_X86
   5#include <asm/suspend.h>
   6#endif
   7#include <linux/swap.h>
   8#include <linux/notifier.h>
   9#include <linux/config.h>
  10#include <linux/init.h>
  11
  12extern unsigned char software_suspend_enabled;
  13
  14#define NORESUME         1
  15#define RESUME_SPECIFIED 2
  16
  17#ifdef CONFIG_SOFTWARE_SUSPEND
  18/* page backup entry */
  19typedef struct pbe {
  20        unsigned long address;          /* address of the copy */
  21        unsigned long orig_address;     /* original address of page */
  22        swp_entry_t swap_address;       
  23        swp_entry_t dummy;              /* we need scratch space at 
  24                                         * end of page (see link, diskpage)
  25                                         */
  26} suspend_pagedir_t;
  27
  28#define SWAP_FILENAME_MAXLENGTH 32
  29
  30struct suspend_header {
  31        __u32 version_code;
  32        unsigned long num_physpages;
  33        char machine[8];
  34        char version[20];
  35        int num_cpus;
  36        int page_size;
  37        suspend_pagedir_t *suspend_pagedir;
  38        unsigned int num_pbes;
  39        struct swap_location {
  40                char filename[SWAP_FILENAME_MAXLENGTH];
  41        } swap_location[MAX_SWAPFILES];
  42};
  43
  44#define SUSPEND_PD_PAGES(x)     (((x)*sizeof(struct pbe))/PAGE_SIZE+1)
  45   
  46extern struct tq_struct suspend_tq;
  47
  48/* mm/vmscan.c */
  49extern int shrink_mem(void);
  50
  51/* kernel/suspend.c */
  52extern void software_suspend(void);
  53extern void software_resume(void);
  54
  55extern int register_suspend_notifier(struct notifier_block *);
  56extern int unregister_suspend_notifier(struct notifier_block *);
  57extern void refrigerator(unsigned long);
  58
  59extern int freeze_processes(void);
  60extern void thaw_processes(void);
  61
  62extern unsigned int nr_copy_pages __nosavedata;
  63extern suspend_pagedir_t *pagedir_nosave __nosavedata;
  64
  65/* Communication between kernel/suspend.c and arch/i386/suspend.c */
  66
  67extern void do_magic_resume_1(void);
  68extern void do_magic_resume_2(void);
  69extern void do_magic_suspend_1(void);
  70extern void do_magic_suspend_2(void);
  71
  72/* Communication between acpi and arch/i386/suspend.c */
  73
  74extern void do_suspend_lowlevel(int resume);
  75
  76#else
  77#define software_suspend()              do { } while(0)
  78#define software_resume()               do { } while(0)
  79#define register_suspend_notifier(a)    do { } while(0)
  80#define unregister_suspend_notifier(a)  do { } while(0)
  81#define refrigerator(a)                 do { BUG(); } while(0)
  82#define freeze_processes()              do { panic("You need CONFIG_SOFTWARE_SUSPEND to do sleeps."); } while(0)
  83#define thaw_processes()                do { } while(0)
  84#endif
  85
  86#endif /* _LINUX_SWSUSP_H */
  87
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.