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.15.10 Dlock TOS Name: »Dlock« - sperrt ein BIOS Gerät bzw. gibt es wieder frei. Gemdosnummer: 309 Deklaration: int32_t Dlock ( int16_t mode, int16_t drv ); Beschreibung: Die Funktion erlaubt es, das BIOS-Gerät drv zu sperren, bzw. wieder freizugeben. Auf einem gelockten Laufwerk sind keine GEMDOS File-Operationen zugelassen; Rwabs ist nur für den sperrenden Prozess erlaubt. Der Sinn und Zweck der Funktion besteht darin, daß Low-Level Programme (etwa zum Formatieren) (X)BIOS Funktionen ausführen können, während das Gerät für normale Dateizugriffe gesperrt bleibt. Bit 0 von mode = 1: Gerät sperren = 0: Gerät freigeben Wird ein Prozeß beendet der noch eine Sperre auf einem Gerät hält, so wird diese Sperre aufgehoben. Bit 1 von mode zeigt an, welche Rückgabewerte gewünscht sind. Ist dieses Bit gesetzt, und das entsprechende Gerät bereits von einem anderen Prozeß gesperrt (oder hat ein anderer Prozeß Files auf diesem Gerät geöffnet), dann wird dessen Prozeß-ID zurückgeliefert. Dies erlaubt sinnvollere Fehlermeldungen an den Benutzer, da nun mitgeteilt werden kann, welcher Prozeß das Gerät benutzt, wenn das Sperren fehlschlagen sollte. Alle anderen Bits von mode sind reserviert und müssen auf 0 gesetzt werden. Ein Sperren eines Gerätes mit unmittelbar folgendem Freigeben desselben, ist einem Medienwechsel sehr ähnlich. Zu beachten ist lediglich, daß nicht gesperrt werden kann, wenn auf dem angegebenen Gerät noch Dateien geöffnet sind. Hinweis für MagiC: Vor Sperren des Laufwerks werden, falls ein Dateisystem für das Laufwerk existiert, die Caches über den Vektor xfs_sync zurückgeschrieben. Dann stellt der Kernel über xfs_drv_close eine Anfrage, ob das Laufwerk gesperrt werden kann. Wenn ja, gibt das XFS seine Strukturen frei und signalisiert dann dem Kernel, daß auch er seine Strukturen für das Laufwerk freigeben und die Sperrung durchführen kann. Ergebnis: Die Funktion kann die folgenden Werte zurückliefern: E_OK : kein Fehler aufgetreten. EACCDN : Gerät konnte nicht gesperrt werden, da offene Dateien bzw. Verzeichnisse vorhanden sind. EDRIVE : drv ist kein gültiges BIOS-Gerät. ELOCKED : Gerät ist bereits von einem Prozeß gesperrt. ENSLOCK : Gerät ist bereits freigegeben. Verfügbar: Verfügbar, wenn ein 'MiNT' Cookie mit einer Versionsnummer von mindestens 0.93 existiert und in MagiC ab Version 3.0. Gruppe: Verzeichnisfunktionen Querverweis: Binding Fxattr XFS-Konzept in MagiC