TOS-Bibliothek
Dokumentation der Funktionen
Kurzbeschreibung: | Eine Maske für 'mode' von Mxalloc liefern
|
C: | int16 Mxmask( void );
|
Definition: | in TOS.H
|
Die Funktion Mxmask liefert eine Maske für Mxalloc
zurück. Damit kann geprüft werden, ob Mxalloc vorhanden ist
und ob es die Speicherschutz-Flags unterstützt.
Die folgenden Werte werden geliefert:
0 | Mxalloc ist nicht vorhanden, es muß Malloc benutzt werden.
|
3 | Mxalloc ist vorhanden, allerdings werden die Speicherschutz-Flags
niht unterstützt.
|
-1 | Mxalloc ist vorhanden, die Speicherschutz-Flags werden
unterstützt.
|
Beispiel: Die folgende Funktion soll die Verwendung von
Mxmask verdeutlichen:
void *myMxalloc( int32 size, int16 mode )
{
int16 mxmask = Mxmask();
if( mxmask!=0 )
memory = Mxalloc(size, mode & mxmask);
else
memory = Malloc(size);
}
Hintergrund: Die ersten Implementationen von Mxalloc im
GEMDOS stürzten bei Verwendung der Speicherschutz-Flags gnadenlos
ab und rissen die Anwendung, manchmal sogar das gesamte System mit!
Anmerkung: Im MausNet wurden in der Gruppe
Maus.Computer.Atari.Programmieren verschiedene
Implementationsvarianten von Mxmask diskutiert. Schließlich
blieb die hier realisierte Variante übrig. Sie beruht u.a. auf
dem Vorhandensein der Funktion Sysconf. Falls die Funktion Sysconf
vorhanden ist (momentan nur unter MiNT), so können die
Speicherschutz-Flags gefahrlos verwendet werden. Andreas Kromke hat
zugesagt, die Funktion Sysconf spätestens dann in MagiC zu
implementieren, wenn MagiC Speicherschutz unterstützen sollte.
Damit ist die hier implementierte Erkennung auch in Zukunft
abgesichert.
Copyright © Martin Elsässer (martin@melsaesser.de)
Letzte Aktualisierung am 13. Dezember 2005
|