Topic : TOS - das Betriebssystem Author : Version : tos.hyp (5. März 2013) Subject : Programmieren/Atari Nodes : 3001 Index Size : 93602 HCP-Version : 5 Compiled on : Atari @charset : atarist @lang : @default : Titel @help : @options : +g -i -s +x +zz -t4 @width : 70 View Ref-File5.12.5 Mxalloc TOS Name: »Allocate memory (with preference)« - Speicherplatz reservieren. Gemdosnummer: 68 Deklaration: void *Mxalloc ( int32_t amount, int16_t mode ); Beschreibung: Die GEMDOS-Routine Mxalloc reserviert einen Speicherbereich der Größe amount. Über die Bits des Parameters mode kann die gewünschte Speicherart spezifiziert werden; es gilt: Bits Bedeutung 0-2 Behandlung des TT-RAMs 0 = nur ST-RAM 1 = nur TT-RAM 2 = egal, ST-RAM bevorzugt 3 = egal, TT-RAM bevorzugt 3 reserviert 4-7 Speicherschutz-Modus 0 = Abhängig von den Programmflags 1 = Privat 2 = Global 3 = Super 4 = nur lesbar Alle anderen Werte sind undefiniert, und für zukünftige Zwecke reserviert. 14 No-Free-Modus Wenn dieses Bit gesetzt ist und der Besitzer dieses Speichers terminiert, wird der Speicherbereich nicht freigegeben, sondern an das Betriebssystem vererbt. Dieser Modus ist nur für das Betriebssystem interessant, und steht normalen Anwenderprogrammen nicht zur Verfügung. Alle weiteren Bits sind für zukünftige Zwecke reserviert. Mit dem Wert -1 für amount kann man die Länge des größten zusammenhängend verfügbaren Speicherblocks (abhängig von mode) erfragen. Unter MagiC werden alle Speicherallozierungen mitprotokolliert. Wenn die mit LIMITMEM vorgegebene Beschränkung überschritten wird, wird ein Nullzeiger zurückgegeben. Im Fall amount = -1 wird das Minimum von freiem Speicher und noch nicht ausgeschöpfter LIMITMEM-Beschränkung zurückgegeben. Ausnahmen sind Aufrufe des Bildschirm-Managers (SCRENMGR), der die Menüs kontrolliert. Dadurch wird sichergestellt, daß auch per LIMITMEM beschränkte Programme keine Probleme mit dem Redraw bei Menüs haben. Hinweis: Ein Problem besteht darin, festzustellen, wann die erweiterten Modi (Bits 3 und folgende) benutzt werden dürfen. Einige ältere Versionen des GEMDOS kommen nämlich nicht mit diesen Modi zurecht, und sorgen z.T. für den Absturz der Applikation bzw. des ganzen Systems. Aus diesem Grund testen viele Programmierer explizit auf das Vorhandensein von MiNT/MultiTOS oder Versionen von MagiC >= 2.0. Alternativ kann auch die Funktion Mxmask benutzt werden. Ergebnis: Die Funktion liefert als Ergebnis die Anfangsadresse des reservierten Bereichs als typenlosen Zeiger. Mxalloc liefert als Ergebnis eine 0, wenn nicht mehr genügend Speicher vorhanden ist. Verfügbar: Diese Funktion existiert erst ab GEMDOS-Version 0.19. Gruppe: Speicherverwaltung Querverweis: Binding Mfree Malloc Maddalt Programmflags