Re: [RFC/RFT][PATCH 0/2] swsusp: improve freeing of memory

Pavel Machek
2005-11-10T10:48:32Z

[-- Attachment #1: Type: text/plain, Size: 1744 bytes --]

Hi!

> > Remove, I need something to encourage people to move reading/writing
> > of image to userland ;-).
>
> OK
> I'll do it in a separate patch if you don't mind.

Ok, of course.

> > > > int swsusp_save(struct pbe **pblist, int *nr_pages)
> > >
> > > Then I'll have to mess up with the assembly parts, which I'd like to avoid
> > > as long as reasonable, especially as far as it gets to the ppc one ...
> >
> > No, I do not think you have to.
>
> I mean swsusp_save() is called from the assembly and currently does not take
> any arguments, so I'll have to change the assembly to make it take
> some.

I was confused, sorry, you are right. I was thinking about swsusp_suspend().

> > Make swsusp_save() assign to
> > pagedir_nosave; that's okay. But swsusp_save is part of snapshot.c,
> > and assembly parts belong logically there, too, so you at least do not
> > export pagedir_nosave uglyness outside snapshot.c.
>
> swsusp_save() already sets pagedir_nosave and that's not a problem.
> [BTW swsusp_save() could return the number of the image pages,
> but this would change the meaning of swsusp_arch_suspend()'s
> return value too.]
>
> The problem with pagedir_nosave is on resume, because we have to tell
> the snapshot part where the pagedir starts. One solution is to make
> swsusp_read() like this:
>
> int swsusp_read(struct pbe **);
>
> and pass the pagedir_nosave's address to it. Analogously, swsusp_write()
> could be made like this:
>
> int swsusp_write(unsigned int nr_pages);
>
> and pass nr_pages to write_suspend_image().
>
> Would that be OK?

Yes. (I'd probably prefer swsusp_write to get both strcut pbe * *and*
nr_pages, so that usage of global variables is reduced).
Pavel

--
Thanks, Sharp!