Forum » » OS4 sur AmigaOne X5000 » » A la recherche de RAM disparue
Posté : 29-08-2019 15:55
Et encore si on enlève les tests de bon fonctionnement et autres de l'exemple du WIKI on a que ça qui fait le boulot:
// init du programme: on crée un gros bloc mémoire de la taille blocksize64 au delà des 2 Go
iextmem = AllocSysObjectTags(ASOT_EXTMEM, ASOEXTMEM_Size, &blocksize64, ASOEXTMEM_AllocationPolicy, EXTMEMPOLICY_IMMEDIATE, TAG_END);
// adresse de la fenêtre sur le gros bloc commençant à l'offset windowoffset64 et de la taille windowsize32
data = iextmem->Map(0,windowsize32, windowoffset64, 0);
// là on modifie les données du bloc en lecture ou écriture comme on veut
x=data[100];
y=data[101];
data[10]=100;
data[12]=2 00;
etc...
// on relâche la mémoire
iextmem->Unmap(data, windowsize32);
// on a fini le programme on libère le gros bloc mémoire
FreeSysObject(ASOT_EXTMEM,iextmem);
Il semblerait que NetSurf les utilise aussi
Utiliser ce procédé permet aussi de pas utiliser la mémoire sous les 2 Go et donc d'en laisser plus aux autres applis moins malines
SketchBlock et NetSurf l'utilisent de la même manière : avec des blocs pouvant tenir dans une seule fenêtre (cad windowsize32=blocksize64 )
Cet article provient de Le site des utilisateurs francophones actuels et futurs d'AmigaOS 4.x
https://amiga-ng.org/viewtopic.php?topic=2609&forum=21