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.3 Dcntl TOS Name: »Dcntl« - führt eine Filesystem spezifische Operation auf einer Datei bzw. einem Verzeichnis durch. Gemdosnummer: 304 Deklaration: int32_t Dcntl ( int16_t cmd, int8_t *name, int32_t arg ); Beschreibung: Die Funktion führt das Kommando cmd auf dem File bzw. Verzeichnis name aus. Einzelheiten sind vom Filesystem abhängig, auf das sich name bezieht. Die Bedeutung des Parameters arg ist wiederum von cmd abhängig. Standardmäßig wird der Dcntl-Aufruf von den Filesystemen U:\\ und U:\DEV unterstützt. Das Unified-Filesystem U:\ kennt die folgenden Kommandos: Kommando Beschreibung FS_INSTALL (0xf001) installiert ein neues Filesystem name: U:\ arg: Zeiger auf fs_descr Struktur FS_MOUNT (0xf002) Bindet ein bereits existierendes Filesystem in das Unified-System U:\ ein. name: Name unter dem auf das Filesystem zugegriffen werden kann. arg: Zeiger auf fs_descr Struktur FS_UNMOUNT (0xf003) entfernt ein per FS_MOUNT eingehängtes System. name: Name unter dem das Filesystem eingebunden wurde. arg: Zeiger auf fs_descr Struktur FS_UNINSTALL (0xf004) Entfernt ein Filesystem vollständig aus dem Kernel. Dieser Befehl ist nur erlaubt, wenn keine weiteren Verweise auf das Filesystem existieren, also beispielsweise etwaige Mounts rückgängig gemacht wurden. name: U:\\ arg: Zeiger auf fs_descr Struktur FUTIME (0x4603) Ist das Pendant zur gleichnamigen Fcntl()-Funktion. Sie wird von MiNT sowie vom DOS-XFS in MagiC unterstützt. Als Parameter wird ein Zeiger auf eine mutimbuf-Struktur übergeben. KER_GETINFO (0x0100) Ermittelt einen Zeiger auf die Kernelfunktionen von MagiC. Bei den Parametern name und arg muss es sich um NULL-Werte handeln. Zurückgeliefert wird ein Zeiger auf eine MX_KERNEL- Struktur. (*) Ab MagiC 6: MX_KER_GETINFO (0x6d00) (1) KER_DOSLIMITS (0x0101) Fordert den Kernel von MagiC auf, die Limits für FAT- Dateisysteme zu ermitteln. Die Parameter name und arg müssen auf NULL gesetzt werden. Zurückgeliefert wird ein Zeiger auf einen Zeiger auf eine MX_DOSLIMITS Struktur; dieser kann daher auf eine eigene Struktur umgebogen werden, falls ein neuer Treiber installiert wird. Dieser Opcode wird normalerweise nur von Festplattentreibern (wie dem HDDRIVER) verwendet. (*) Ab MagiC 6: MX_KER_DOSLIMITS (0x6d01) (1) KER_INTMAVAIL (0x102) KER_INTGARBC (0x103) Diese Funktionen existierten vor der Version 4.01 von MagiC, und wurden auf Sconfig-Aufrufe umgesetzt, um Konflikte mit Treibern zu vermeiden, die Probleme mit unbekannten Opcodes besitzen (*). KER_DRVSTAT (0x0104) Ermittelt einfache Informationen über ein Laufwerk. Es gilt: name: wird ignoriert arg: Zeiger auf zwei int16_ts. Das erste int16_t muss dabei eine Null enthalten, in das zweite wird eine Laufwerksnummer von 0..25 (A..Z) geschrieben. Die möglichen Rückgabewerte für diesen Opcode lauten: EDRIVE : ungültige Laufwerksnummer ELOCKED : Laufwerk z.Zt. gesperrt Ein Wert von 0 bzw. >0 zeigt an, daß das Laufwerk z.Zt. gemounted bzw. nicht gemounted ist. Dieser Opcode steht erst ab der MagiC-Version vom 09.09.95 zur Verfügung (*). Ab MagiC 6: MX_KER_DRVSTAT (0x6d04) (1) KER_XFSNAME (0x0105) Ermittelt den Namen des Treibers, welcher für ein bestimmtes Verzeichnis zuständig ist. name: Pfadname (kein Dateiname!) arg: Zeiger auf einen mindestens 9 Zeichen großen Puffer, der an einer geraden Adresse liegen muss. Ein Rückgabewert < 0 kennzeichnet einen Fehler; ansonsten wird im angegebenen Puffer der Name des Treibers abgelegt; z.Zt. sind folgende Treibernamen bekannt: (a) "DOS_XFS": altes DOS-XFS (b) "VDOS_XFS": DOS-XFS mit VFAT (c) "MMAC_HFS": MagiCMac-HFS Dieser Opcode steht erst ab der MagiC-Version vom 15.06.1996 zur Verfügung (*). Ab MagiC 6: MX_KER_XFSNAME (0x6d05) (1) KER_INSTXFS (0x0200) Fordert den Kernel von MagiC auf, ein XFS zu installieren. (*) name: NULL-Zeiger arg: einzubindender Treiber Ab MagiC 6: MX_KER_INSTXFS (0x6d02) (1) KER_SETWBACK (0x0300) Fordert den Kernel von MagiC auf, den WriteBack zu konfigurieren. Ab MagiC-Version 4.01 wurde dieser Opcode auf einen Sconfig-Aufruf umgesetzt, um Konflikte mit Treibern zu vermeiden, die Probleme mit unbekannten Opcodes besitzen (*). DFS_GETINFO (0x1100) Ermittelt einen Zeiger auf die DOS_XFS-Funktionen von MagiC. Bei den Parametern name und arg muss es sich um NULL-Werte handeln. Zurückgeliefert wird ein Zeiger auf eine ???- Struktur. (*) Ab MagiC 6: MX_DFS_GETINFO (0x6d40) (1) DFS_INSTDFS (0x1200) Installiert ein DFS unter MagiC (*). name: NULL-Zeiger arg: einzubindender Treiber CDROMEJECT (0x4309) Übernimmt das Auswerfen von Medien. name: Pfad des auszuwerf. Mediums arg: NULL Die Auswurffunktion wird für alle Laufwerke unterstützt, die über einen XHDI-kompatiblen Treiber angesprochen werden, sowie für Macintosh Volumes (unter MagiCMac). Ab MagiC 6: MX_DFS_INSTDFS (0x6d41) (1) VFAT_CNFDFLN (0x5600) Konfiguriert ein VFAT- Dateisystem. name: U:\\ arg: Bitvektor der festlegt, bei welchen Laufwerken lange Dateinamen zugelassen werden. Die Einstellung wird erst beim mounten eines Dateisystems aktiv, daher können bereits gemountete Dateisysteme mit diesem Befehl nicht beeinflußt werden. Dieser Opcode steht erst ab der MagiC-Version vom 02.01.96 zur Verfügung. (*). VFAT_CNFLN (0x5601) Dient der Konfiguration eines VFAT-Dateisystems. Genauer: Legt fest, ob ein gemountetes Laufwerk lange Dateinamen unterstützt, oder nicht. Mit diesem Opcode kann also der per VFAT_CNFDFLN festgelegte Defaultwert überladen werden. Damit die Umstellung für den Benutzer sichtbar wird, sollte eine SH_WDRAW-Nachricht an die System-Shell geschickt werden. Dieser Opcode steht erst ab der MagiC-Version vom 02.01.96 zur Verfügung (*). PROC_CREATE (0xcc00) Diese Funktion ist in MagiC für zukünftige Zwecke reserviert (*). Sie wird ab MagiC 6 nicht mehr verwendet. Das Filesystem U:\DEV kennt folgende Kommandos: Kommando Beschreibung DEV_INSTALL (0xde02) installiert einen neuen Treiber für ein Gerät. name: vollständiger Pfadname des Treibers arg: Zeiger auf dev_descr- Struktur Auf das so installierte Gerät, darf nur über GEMDOS Operationen zugegriffen werden. DEV_M_INSTALL (0xcd00) entspricht DEV_INSTALL und muß aufgrund des inkompatiblen Treiberformates zu MultiTOS in MagiC benutzt werden. (*) name: vollst. Pfadname des Treibers arg: Zeiger auf MX_DDEV- Struktur Ab MagiC 6: MX_DEV_INSTALL (0x6d20) (1) DEV_NEWTTY (0xde00) installiert Treiber für ein neues BIOS Terminal name: Name des Terminals (in der Form 'U:\DEV\DEVNAME') arg: BIOS Gerätenummer des Terminals Das BIOSmuß per Bconmap über das Gerät informiert worden sein, anderenfalls wird jeder Versuch auf das Gerät zuzugreifen mit EUNDEV bestraft. DEV_NEWBIOS (0xde01) installiert einen Treiber für ein neues BIOS nicht-Terminal Gerät. name: vollständiger Name des Geräts arg: zugehörige BIOS Gerätenummer Das BIOSmuß per Bconmap über das Gerät informiert worden sein, anderenfalls wird jeder Versuch auf das Gerät zuzugreifen mit EUNDEV bestraft. Hinweis: Die mit (*) gekennzeichneten Opcodes stehen dabei nur unter MagiC, alle anderen nur unter MiNT bzw. MultiTOS zur Verfügung. Ausnahmen: Die Opcodes FUTIME und CDROMEJECT stehen sowohl unter MiNT/MultiTOS als auch unter MagiC zur Verfügung. (1): Leider gab es Kollisionen zwischen MagiC und dem Minix-XFS für MiNT. Daher enthält MagiC ab der Version 6 neue Codes, die alten werden aber noch unterstützt. Die neuen Codes haben ein 0x6d im oberen Word, diese Kennung ist für MagiC reserviert. Ergebnis: Der Rückgabewert ist abhängig von der gewünschten Operation und dem zugrunde liegenden Filesystem. Bei einem Wert >= 0 ist alles erfolgreich verlaufen. Eine Ausnahme ist der Wert bei DEV_INSTALL, welcher entweder auf eine Informationsstruktur des Kernels zeigt, oder aber den Wert 0 besitzt. Bei einem ungültigen Opcode wird EINVFN zurückgeliefert. Verfügbar: Verfügbar, wenn ein 'MiNT' Cookie mit einer Versionsnummer von mindestens 0.90 existiert und in MagiC ab Version 3.0. Gruppe: Verzeichnisfunktionen Querverweis: Binding XFS-Konzept in MagiC Bconmap Fcntl MagiC Metaioctl