Click Here

Hier sind die Links, um durch

alle Seiten zu navigieren:

Home Dokumentation der Funktionen Ash_getOSHeader Installation
   TOS-Bibliothek
 Dokumentation der Funktionen

Mxmask

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
Home Dokumentation der Funktionen Ash_getOSHeader Installation