[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[MiNT] using pexec() to load an overly



Hi,

I'm asking this here because my results change depending on the kernel I
boot with.  Recently compiled a fresh kernel, just before draco mentioned
the minor SLB problem.  I was using an old one from back when Frank fixed
a folder renaming problem.  A project I'm working on seems to fail with the
latest kernel, but works with the older kernel.

Basically what I do is this:
pexec load an assembler overlay with mode 3 (load, don't go)
then call routine to init the overlay that returns a list of pointers
it also returns the adr of memory block it allocates for internal use
so I make various calls, all goes ok...
to remove overlay, I pexec mode 4 (just go), first routine is pterm()
I then mfree the memory block allocated by the overlay
I then mfree the basepage

This all works just fine with my old kernal.  Soon as I install the new
kernel something does not get freed, or deallocated as before.  I am having
trouble figuring out exactly why or where.

I looked in the change log for the kernel and all I can find is some
references to processes not being allowed to free their own basepage
(malloc/mshrink) but I don't know if that is the reason or not.
I assume the overlay is a child of my process so it's legal for me to
work with it as I am?  Or am I doing something bad here?

Any suggestions or such would be helpful.  If it's a stupid design let me
know, I need this to work.  ;-)

-- 
Lonny Pursell