[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [MiNT] Freeing child's base page
Le Wed, 27 Jan 2010 11:42:36 +0100
Vincent Rivière <vincent.riviere@freesbee.fr> a écrit:
> Miro Kropacek wrote :
> > So, if I understand it correctly, when Pexec() returns (using Pterm or
> > Pterm0) :
> >
> > 1. all dynamic memory (using M[x]alloc) is returned back to OS, all
> > opened files are closed
>
> In the normal mode PE_LOADGO (0), I think it is true. But I don't know
> hot it behaves in other modes.
>
> > 2. its text/data/bss segment is still intact, waiting for our Mfree()
> > call (and this can be changed by using Pexec (6, ...) but don't want it
> > of course)
>
> Probably true in mode PE_LOAD (3).
>
> > 3. static variables are in data segment, i.e. point 2 applies here, i.e.
> > we can use it as long as basepage isn't free'd
>
> Yes, sure.
>
> > However, it seems that MiNT handle special executable flags to share
> > the text segment among several process, but I never tried them as
> > this is a very specific case.
> >
> > You mean PE_NOSHARE mode? This is default off, i.e. child's memory is
> > shared with parent, so no worries here.
>
> Yes, this flag. But I didn't understand that flag like you. I understood
> it was about sharing the text segment between several process of the
> same executable to save the identical RAM. In other words, using the
> text segment like a shared library (useful for sh and make). I don't
> know if this is still well supported by the kernel and the binutils.
> However, as you said, this mode is off by default, it is out of topic here.
>
> Further information from a kernel guru would be welcome here.
Just looking at the compendium, Pexec() on more recent Gemdos versions
support PE_GOTHENFREE (6) which automatically frees child memory when
the child Pterm() itself.
--
Patrice Mandin
WWW: http://pmandin.atari.org/
Programmeur Linux, Atari
Spécialité: Développement, jeux