From: Pavel Machek <pavel@ucw.cz>
To: torvalds@transmeta.com, kernel list <linux-kernel@vger.kernel.org>
Subject: Cleanup swsusp in 2.5.20
Date: Mon, 3 Jun 2002 22:13:53 +0200 [thread overview]
Message-ID: <20020603201353.GA31818@elf.ucw.cz> (raw)
Hi!
This cleans up swsusp in 2.5.20. Killed sysrq-D support (it is too
much trouble to support suspending from interrupt), kill unused
define, fix compile-time warnings (thanks to Adam). Please apply,
Pavel
--- clean/include/linux/sched.h Mon Jun 3 11:43:38 2002
+++ linux-swsusp/include/linux/sched.h Mon Jun 3 19:15:51 2002
@@ -392,8 +392,7 @@
#define PF_FREEZE 0x00010000 /* this task should be frozen for suspend */
#define PF_IOTHREAD 0x00020000 /* this thread is needed for doing I/O to swap */
-#define PF_KERNTHREAD 0x00040000 /* this thread is a kernel thread that cannot be sent signals to */
-#define PF_FROZEN 0x00080000 /* frozen for system suspend */
+#define PF_FROZEN 0x00040000 /* frozen for system suspend */
/*
* Ptrace flags
--- clean/include/linux/suspend.h Thu May 30 12:21:15 2002
+++ linux-swsusp/include/linux/suspend.h Mon Jun 3 19:15:52 2002
@@ -33,7 +33,7 @@
char version[20];
int num_cpus;
int page_size;
- unsigned long suspend_pagedir;
+ suspend_pagedir_t *suspend_pagedir;
unsigned int num_pbes;
struct swap_location {
char filename[SWAP_FILENAME_MAXLENGTH];
@@ -50,7 +50,6 @@
/* kernel/suspend.c */
extern void software_suspend(void);
extern void software_resume(void);
-extern int resume_setup(char *str);
extern int register_suspend_notifier(struct notifier_block *);
extern int unregister_suspend_notifier(struct notifier_block *);
--- clean/kernel/suspend.c Mon Jun 3 11:43:38 2002
+++ linux-swsusp/kernel/suspend.c Mon Jun 3 18:41:41 2002
@@ -66,6 +66,8 @@
#include <asm/io.h>
#include <linux/swapops.h>
+extern void signal_wake_up(struct task_struct *t);
+
unsigned char software_suspend_enabled = 0;
/* #define SUSPEND_CONSOLE (MAX_NR_CONSOLES-1) */
@@ -118,7 +120,7 @@
collide with anything.
*/
static suspend_pagedir_t *pagedir_nosave __nosavedata = NULL;
-static unsigned long pagedir_save;
+static suspend_pagedir_t *pagedir_save;
static int pagedir_order __nosavedata = 0;
struct link {
@@ -282,7 +284,7 @@
strncpy(sh->version, system_utsname.version, 20);
sh->num_cpus = smp_num_cpus;
sh->page_size = PAGE_SIZE;
- sh->suspend_pagedir = (unsigned long)pagedir_nosave;
+ sh->suspend_pagedir = pagedir_nosave;
if (pagedir_save != pagedir_nosave)
panic("Must not happen");
sh->num_pbes = nr_copy_pages;
@@ -298,15 +300,10 @@
* but that should not be a problem since tasks are stopped..
*/
-static void do_suspend_sync(void)
+static inline void do_suspend_sync(void)
{
- while (1) {
- blk_run_queues();
-#error this is broken, FIXME
- if (!TQ_ACTIVE(tq_disk))
- break;
- printk(KERN_ERR "Hm, tq_disk is not empty after run_task_queue\n");
- }
+ blk_run_queues();
+#warning This might be broken. We need to somehow wait for data to reach the disk
}
/* We memorize in swapfile_used what swap devices are used for suspension */
@@ -412,7 +409,6 @@
int nr_pgdir_pages = SUSPEND_PD_PAGES(nr_copy_pages);
union diskpage *cur, *buffer = (union diskpage *)get_free_page(GFP_ATOMIC);
unsigned long address;
- kdev_t suspend_device;
PRINTS( "Writing data to swap (%d pages): ", nr_copy_pages );
for (i=0; i<nr_copy_pages; i++) {
@@ -427,8 +423,9 @@
address = (pagedir_nosave+i)->address;
lock_page(virt_to_page(address));
{
- long dummy1, dummy2;
- get_swaphandle_info(entry, &dummy1, &suspend_device);
+ long dummy1;
+ struct inode *suspend_file;
+ get_swaphandle_info(entry, &dummy1, &suspend_file);
}
rw_swap_page_nolock(WRITE, entry, (char *) address);
(pagedir_nosave+i)->swap_address = entry;
@@ -806,7 +803,7 @@
panic("pagedir_order changed?!");
PRINTR( "Freeing prev allocated pagedir\n" );
- free_suspend_pagedir(pagedir_save);
+ free_suspend_pagedir((unsigned long) pagedir_save);
__flush_tlb_global(); /* Even mappings of "global" things (vmalloc) need to be fixed */
drivers_resume(RESUME_ALL_PHASES);
spin_unlock_irq(&suspend_pagedir_lock);
@@ -1047,7 +1044,7 @@
return 0;
}
-extern kdev_t __init name_to_kdev_t(char *line);
+extern kdev_t __init name_to_kdev_t(const char *line);
static int resume_try_to_read(const char * specialfile, int noresume)
{
@@ -1064,7 +1061,7 @@
goto resume_read_error;
}
- printk("Resuming from device %x\n", resume_device);
+ printk("Resuming from device %x\n", kdev_t_to_nr(resume_device));
#define READTO(pos, ptr) \
if (bdev_read_page(resume_device, pos, ptr)) { error = -EIO; goto resume_read_error; }
--
(about SSSCA) "I don't say this lightly. However, I really think that the U.S.
no longer is classifiable as a democracy, but rather as a plutocracy." --hpa
reply other threads:[~2002-06-03 20:16 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20020603201353.GA31818@elf.ucw.cz \
--to=pavel@ucw.cz \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@transmeta.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®