taille maximale allouable en RAM sur PalmOS 5.4

Le
Thomas Pornin
Hello,

j'ai sous la main un Palm Z22. Il tourne apparemment sous PalmOS 5.4. Si
je veux le programmer, je peux fabriquer un binaire pour processeurs
m68k, et l'envoyer sur le Palm qui le fera tourner dans un émulateur de
processeur 68000. Je peux aussi fabriquer du code ARM et l'invoquer
depuis le code 68000, moyennant quelques restrictions parce que je ne
peux pas prévoir à quelle adresse le code ARM sera chargé, et que l'OS
ne fournit pas de linker dynamique pour ce chargement (je pourrais
écrire ce linker, mais pour le moment ce n'est pas fait).

Je souhaiterais allouer de la RAM tranquillement, par morceaux assez
gros au besoin. Le Z22 dispose d'une quantité non négligeable de
méga-octets. PalmOS a une limite traditionnelle de 64 Ko (en fait un peu
moins) par bloc alloué (avec MemPtrNew()), ce que je trouve un peu
bas

J'ai essayé et je peux allouer au plus 65505 octets d'un coup avec
MemPtrNew() sur mon Z22. Mais la documentation (le "Palm OS Companion")
dit à quelques endroits que cette limitation à 64 Ko pourrait être
supprimée dans une future version. Ma question principale est donc :
est-ce que le PalmOS 5.4 que j'ai sous la main a toujours,
intrinsèquement, cette limitation, ou est-ce qu'il y a moyen d'avoir un
gros bloc de mémoire dans lequel je pourrais taper librement ? C'est
pour un accès depuis le code ARM et la compatibilité avec d'autres
modèles m'indiffère.

Évidemment, sous réserve qu'il n'y ait pas de MMU active, je pourrais
toujours taper directement dans la RAM à la sauvage, mais ce serait
mieux si je pouvais faire en sorte que l'allocateur mémoire standard
évite la zone que je m'attribue.

En bref, quelqu'un a-t-il de la documentation un peu précise sur le
sujet ?


--Thomas Pornin
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
LTH
Le #8254521
Patrick V a écrit :

Je souhaiterais allouer de la RAM tranquillement, par morceaux assez
gros au besoin. Le Z22 dispose d'une quantité non négligeable de
méga-octets. PalmOS a une limite traditionnelle de 64 Ko (en fait un peu
moins) par bloc alloué (avec MemPtrNew()), ce que je trouve un peu
bas...



C'est bas.




et c'est vieux, non ? c'est plutot MemHandleNew voire même plutôt ce qui
il ya dans la gluelib
LTH
Le #8254481
Patrick V a écrit :
LTH a écrit, le 03/06/2007 15:42 :

et c'est vieux, non ? c'est plutot MemHandleNew



Bah, MemHandleNew() permet des blocs mouvants, mais ça obliger à locker.

voire même plutôt ce qui il ya dans la gluelib



Y'a des trucs dans la glue qu'il n'y aurait pas en 5.4 ???




ben... je sais pas.. je lis la doc... peut être que la doc AUSSI est
foireuse ;-)

MemGluePtrNew Function
Purpose

Allocate a new nonmovable chunk in the dynamic heap. Unlike MemPtrNew(),
this function lets you request chunks larger than 64KB.
Declared In
MemGlue.h
Prototype

MemPtr MemGluePtrNew (
UInt32 size
)

Parameters

? size
The desired size of the chunk.

Returns

Returns a pointer to the new chunk, or NULL if unsuccessful.
Comments

On versions of Palm OS prior to 3.5, this function acts exactly like
MemPtrNew() and won't allocate chunks larger than 64K.
Thomas Pornin
Le #8254461
According to LTH
ben... je sais pas.. je lis la doc... peut être que la doc AUSSI est
foireuse ;-)

MemGluePtrNew Function
Purpose

Allocate a new nonmovable chunk in the dynamic heap. Unlike MemPtrNew(),
this function lets you request chunks larger than 64KB.



Ça marche chez moi. Je peux allouer 2 Mo d'un coup sur mon Z22 avec
cette fonction. Un peu de google me dit que MemPtrNew() et MemGluePtrNew()
reposent sur la même primitive du système, avec des flags différents.

Merci !


--Thomas Pornin
Publicité
Poster une réponse
Anonyme