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.11.26 Psetlimit TOS Name: »Psetlimit« - Limits der Systemresourcen setzen/erfragen. Gemdosnummer: 287 Deklaration: int32_t Psetlimit ( int16_t lim, int32_t value ); Beschreibung: Die Funktion dient dem Setzen/Abfragen einer Resourcenbegrenzung für den aktuellen Prozess. Der Parameter lim bestimmt die gewünschte Resource-Art: lim Bedeutung 1 max. CPU-Zeit für den Prozess (Millisekunden) 2 max. Gesamtspeicher des Prozesses in Bytes 3 max. allozierbarer Speicher für den Prozess (in Bytes). Der Unterschied zwischen 2 und 3 besteht darin, daß der Gesamtspeicher auch die TEXT-, DATA- und BSS-Segmente des Prozesses umfaßt. Mit Hilfe dieser Funktion werden die Resource- Begrenzungen sowohl für den aktuellen Prozess, als auch für alle später erzeugten Childs einzeln eingestellt. Wenn ein Prozess also ein CPU-Limit einstellt, und danach mehrere Child-Prozesse erzeugt, dann gilt dieses CPU-Limit auch für jeden einzelnen Child, und nicht etwa für alle Childs zusammen. Der Parameter value bestimmt den Wert, den eine Resource annehmen soll. Ein Wert von 0 bedeutet in diesem Zusammenhang, daß die Resource unbegrenzt ist. Ein negativer Wert läßt die Resource unverändert. Hinweis: Es gibt keine Restriktionen beim Vergrößern der Begrenzungen. Jeder Prozess kann jede seiner Begrenzungen beliebig verändern oder sogar auf unbegrenzt setzen. Speicherbegrenzungen kommen bei Pexec nicht zur Anwendung. Ist z.B. ein Prozess auf 256Kbyte begrenzt, kann er dennoch mit Pexec einen Tochterprozess starten, der mehr Speicher verbraucht. Achtung: Dies gilt nicht in MagiC; hier werden Speicherbegrenzungen bei Pexec vererbt! Speicherbegrenzungen sind nicht rückwirkend gültig. Besitzt ein Prozess z.B. 256Kbyte und ruft dann Psetlimit auf, um seinen Bedarf auf 128Kbyte zu reduzieren, dann wird er zwar nicht beendet, aber er kann keinen Speicher mehr allozieren, bis seine Größe unter die angegebenen 128Kbyte fällt. Begrenzungen der CPU-Zeit wirken hingegen rückwirkend. Verkürzt ein Prozess seine CPU-Zeit unter den bisher gültigen Wert, dann empfängt er sofort ein SIGXCPU- Signal. Achtung: Ungültige Funktionsnummern und solche, die von MagiC nicht unterstützt werden, liefern EINVFN. Hinweis zu MagiC: Ist ein Programm mit dem Dienstprogramm LIMITMEM modifiziert worden, hat diese Einstellung Vorrang vor dem Speicherlimit des aufrufenden Prozesses. Psetlimit wird vom erweiterten shel_write()-Modus unterstützt; damit können speicherbeschränkte Applikationen auch parallel gestartet werden. Ergebnis: Die Funktion liefert den alten Begrenzungswert zurück. Verfügbar: MagiC ab Version 4.0 (17.09.1996) und ab der ersten in MultiTOS integrierten MiNT Version 1.04. Gruppe: Prozessfunktionen Querverweis: Binding Prusage Signale