Re: [hatari-devel] Fforce() fails with GEMDOS drive emulation

[ Thread Index | Date Index | More lists.tuxfamily.org/hatari-devel Archives ]


Am Thu, 14 Mar 2013 12:20:16 +0200
schrieb Eero Tamminen <oak@xxxxxxxxxxxxxx>:

> Hi,
> 
> (Moving the technical discussion from users to devel where everybody
> is.)
> 
> On keskiviikko 13 maaliskuu 2013, Eero Tamminen wrote:
> > On keskiviikko 13 maaliskuu 2013, Eero Tamminen wrote:
> > > Redirecting the handle is easy, but when Hatari should stop
> > > redirecting it?
> > > 
> > > When program calls something else (what?)?
> > 
> > On Fclose() redirection should be removed.  This is easy.
> > 
> > Attached patch adds that and Fforce() emulation.  However...
> > 
> > > When the program exits (=must hook also Pterm())?
> > 
> > ..this is much trickier.  I noticed that Hatari doesn't
> > close *any* file handles when program terminates.
> > 
> > I.e. if one runs in a row a large number of programs that open
> > many files, but which don't close them before exiting, Hatari
> > GEMDOS emulation will run out of internal file handles.
> > 
> > I could add a hook for Pterm(), Pterm0() and Ptermres()
> > that will close files and unalias them, but which of the open
> > emulated files should be closed/unaliased on program exit?
> > 
> > How Hatari could know that given file is for current program
> > and not for a program that started it?
> > 
> > And what should happen if program crashes instead of
> > terminating normally?
> 
> I was thinking that I could track program startup and termination,
> keep counter for current program [1] and use that to identify which
> file handles belong to which program & are valid for it.
> 
> However, reliably detecting progam startup and termination so
> that they don't get out of sync, is quite tricky, so I need some
> advice.

IIRC there is an official method for determine the current running
GEMDOS process - the "p_run" system variable. Hatari already keeps a
pointer to its location in the "act_pd" variable. So you could try to
find out the corresponding process via that variable?

 Thomas



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/