Thread View: de.comp.sys.amiga.tech
2 messages
2 total messages
Started by Joerg Kollmann
Wed, 27 Mar 1996 12:29
wie programmiert man low memory handler?
Author: Joerg Kollmann
Date: Wed, 27 Mar 1996 12:29
Date: Wed, 27 Mar 1996 12:29
44 lines
1642 bytes
1642 bytes
Hallo Allerseits,
ich probiere gerade mit einem low memory-handler und habe das Problem, dass er
offenbar nicht tut, was er soll, naemlich Speicher freigeben. Falls sich jemand
damit auskennt und mir mal verraten koennte, wie es richtig ist und ob ich
MEM_TRY_AGAIN, MEM_ALL_DONE und MEM_DID_NOTHING richtig eingesetzt habe, waere
mir sehr geholfen.
In is_Data wird ein Array mit 10 vorher allokierten Bloecken zu je 1MB
uebergeben, das Hauptprogramm wartet nur noch auf CTRL_C.
Die Interrupt-Struktur wird mit
struct Interrupt lowInt = {NULL,NULL,NT_INTERRUPT,0,"LowHandler",pool,lowHandler};
initialisiert.
/* GCC */
int lowHandler()
{
register struct MemHandlerData *mhd asm("a0");
register APTR *data asm("a1");
int i;
APTR h;
if((mhd->memh_RequestFlags & ~MEMF_CHIP) &&
(mhd->memh_RequestSize<=maxmem(data)))
{
i=0;
while((i<10) && (data[i]==NULL)) i++;
if((i<10) && (data[i]))
{
h=data[i];
data[i]=NULL;
FreeMem(h,1024*1024);
if(maxmem(data)>0)
return MEM_TRY_AGAIN;
else
return MEM_ALL_DONE;
}
}
return MEM_DID_NOTHING;
}
Vielen Dank im vorraus,
Joerg
---
joergk@informatik.uni-bremen.de
Re: wie programmiert man low memory handler?
Author: Gunther Nikl
Date: Wed, 27 Mar 1996 16:12
Date: Wed, 27 Mar 1996 16:12
18 lines
1231 bytes
1231 bytes
Joerg Kollmann (joergk@waigel.informatik.uni-bremen.de) wrote:
> ich probiere gerade mit einem low memory-handler und habe das Problem, dass er
> offenbar nicht tut, was er soll, naemlich Speicher freigeben.
>
> /* GCC */
> int lowHandler()
> {
> register struct MemHandlerData *mhd asm("a0");
> register APTR *data asm("a1");
Ich kann nicht sagen, ob der Handler richtig oder falsch ist. Aber die
beide obigen Deklarationen sind nicht ausreichend. Die Parameter sind
in _Scratch_ Register. Damit Du diese Werte in der ganzen Funktion hast,
must Du die Werte in andere Variablen transferieren. Ansonsten kann es
passieren, das alles anstandslos uebersetzt wurde, der Compiler die
Register aber zwischendurch anderweitig nutzt...
Gunther
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads