SCR/AL1 - TOME III. Les librairies utilitaires
Ce groupe permet d'utiliser en DOS la mémoire étendue de type EMM. En cas d'absence ou de remplissage de l'EMM, un fichier temporaire est créé, permettant de "swapper" les données sur fichier. En Unix, seule cette dernière possibilité a du sens.
La fonction SW_init() est appelée automatiquement lors de la première utilisation du SWAP dans le programme. Par contre, la fonction SW_end() doit être appelée par l'utilisateur en fin de programme.
Le seul cas où SW_init() est requis est celui où l'EMS ne doit pas être utilisé, bien que disponible (SW_init(0)).
Le processus est simple : une allocation (ou une réallocation) fournit en retour un "Handle" de type SWHDL. Pour obtenir le pointeur réel, il suffit d'appeler la fonction SW_getptr() qui retourne un pointeur vers un char.
Par le principe même du swap, les pointeurs obtenus ne sont valables que pendant une durée limitée, leur valeur pouvant être swappée en EMS ou sur disque. Il faut donc prendre garde à appeler SW_getptr() chaque fois qu'on désire utiler une valeur allouée via les fonctions de swapping.
Les fonctions sont subdivisées ci-dessous en groupes fonctionnels.
Dans la version actuelle, seuls 30000 éléments peuvent être alloués. Chacun de ces éléments ne peut excéder 16000 bytes. De plus, la mémoire conventionnelle étant utilisée pour stocker les adresses de stockage et la taille des objets alloués, celle-ci peut faire défaut et provoquer un "swap panic".
Fonctions de base
Fonctions utilitaires
Fonctions d'allocation de mémoire conventionnelle
Fonction redéfinissable
Fonctions de gestion EMS
Variables et structures
6.1 SW_init (file s_swmisc.c:27)
6.2 SW_end (file s_swmisc.c:96)
6.3 SW_alloc (file s_swallc.c:54)
6.4 SW_realloc (file s_swallc.c:249)
6.5 SW_free (file s_swallc.c:206)
6.6 SW_getptr (file s_swallc.c:316)
6.7 SW_coreleft (file s_swmisc.c:226)
6.8 SW_status (file s_swmisc.c:244)
6.11 SW_nfree (file s_swallc.c:461)
6.12 SW_abort (file s_swab.c:41)
6.13 EMS_init (file s_swems.c:24)
6.14 EMS_end (file s_swems.c:67)
6.15 EMS_map (file s_swems.c:87)
6.16 EMS_error_text (file s_swems.c:132)
6.17 EMS_inst (file s_swems.c:164)
Copyright © 1998-2015 Jean-Marc Paul and Bernard PAUL - Envoyez vos remarques ou commentaires à bernard@xon.be