This is an old version from the tos.hyp. The new is on GitHub!

HomeMagiCDas Iconify in MagiCDer Aufbau der MAGX.INF-Datei

11.11 Das Laufwerk U: in MagiC

Unter MagiC wird Laufwerk U: bei der Initialisierung des DOS angelegt. Damit es von gängigen Programmen als existent erkannt wird, wird das entsprechende Bit in _drvbits gesetzt; es existiert jedoch kein entsprechendes BIOS-Laufwerk.

Innerhalb des Laufwerks gibt es einige Spezialverzeichnisse, und zwar:

Im Gegensatz zu MiNT sind dies jedoch keine eigenen Dateisysteme, sondern einfach nur Unterverzeichnisse des DFS für Laufwerk U:. Je nach Unterverzeichnis legt das U-DFS verschiedene Dateitypen und -treiber an. Da die Verzeichniskontrolle dem DOS_XFS obliegt, werden z.B. Schreibzugriffe auf ein Device im Verzeichnis per Dateidatum protokolliert. Das geht sogar soweit, daß ein Schreibzugriff auf das Wurzelverzeichnis von Laufwerk A: automatisch das Dateidatum von U:\A verändert.

Alle Verzeichnisse sind z.Zt. auf maximal 32 Einträge beschränkt, und Aufrufe von Dfree liefern nur den Wert Null zurück. Auf dem Wurzelverzeichnis können außer den bestehenden Dateien nur symbolische Links (per Fsymlink) erstellt werden.

Vor jedem Zugriff auf Laufwerk U: werden neu hinzugekommene Laufwerke per symbolischem Link hinzugefügt bzw. nicht mehr existierende entfernt; dies wird über _drvbits erkannt. Ein symbolischer Link für Laufwerk X: wird standardmäßig unter dem Namen U:\X angemeldet, und zeigt auf das Verzeichnis X:\. Symbolische Links können umbenannt oder gelöscht werden (auch ein umbenannter Link wird automatisch gelöscht, wenn das entsprechende Bit in der Systemvariablen _drvbits gelöscht wird).

Achtung: MiNT bindet die Laufwerke nicht als symbolische Links ein, daher kann man folgende Befehlsfolge absetzen:

Dsetdrv U:
Dsetpath U:\A
Dgetpath ==> U:\A
Dsetpath ..
Dgetpath ==> U:\

Bei einem symbolischen Link wechselt man hingegen tatsächlich den Pfad, d.h. in der dritten Zeile erscheint A:\ als aktueller Pfad. Um dieses Problem zu umgehen, gibt es eine Sonderbehandlung im Kernel, der die obige Befehlsfolge auch in MagiC ermöglicht. Dabei gibt es allerdings ein Problem: Der symbolische Link darf nicht umbenannt werden, da sonst folgendes passiert:

Frename U:\A U:\FLOPPY
Dsetdrv U:
Dsetpath U:\FLOPPY
Dgetpath ==> U:\A
Dsetpath ..
Dgetpath ==> U:\

Weil alle Dateifunktionen auf U: genauso funktionieren wie auf einer Diskette ist es auch möglich, Verzeichnisse wie U:\DEV umzubenennen. Achtung: Dies sollte tunlichst vermieden werden, da sonst Anwenderprogramme ihre Gerätetreiber nicht mehr finden können.

Querverweis: BIOS   GEMDOS   XFS-Konzept in MagiC   Test auf Pipes

11.11.1 Das Verzeichnis U:\DEV

In diesem Verzeichnis werden Gerätetreiber (Devices) eingetragen. Es handelt sich dabei um Pseudodateien, die nur dem DOS, nicht jedoch dem BIOS bekannt sind.

Auch die altbekannten Gerätenamen finden sich in diesem Verzeichnis wieder, denn es gilt:

Da auf die hier installierten Geräte mit den normalen Dateifunktionen des GEMDOS zugegriffen werden kann, ist es z.B. möglich ein Textdokument durch einfaches Speichern per Fwrite auf dem Drucker auszugeben. Dateinamen wie CON: werden dabei vom Kernel automatisch in die richtige Form umgewandelt (in diesem Fall also: U:\DEV\CON).

Abhängig vom Rechnermodell stehen per Default die folgenden Devices zur Verfügung:

Gerät Beschreibung
   
AUX BIOS-Gerät 2
CON Console
LAN BIOS-Gerät 7, i.a. SCC, Kanal A
MIDI BIOS-Gerät 3, beim Ausgabestatus hingegen das Gerät mit der Nummer 4.
MODEM1 BIOS-Gerät 6, i.a. die mit dem ST-MFP realisierte serielle Schnittstelle, auf dem Falcon der SCC mit Kanal-B.
MODEM2 BIOS-Gerät 7, i.a. SCC, Kanal B
NULL leere Pseudodatei, liefert beim Schreiben immer den Status Ok und beim Lesen den Wert EOF (kein Zeichen verfügbar).
PRN BIOS-Gerät 0, bei der Ausgabe wird bei einem Timeout abgebrochen.
SERIAL1 BIOS-Gerät 8, i.a. der TT-MFP
SERIAL2 BIOS-Gerät 9, i.a. SCC, Kanal A

Von CON: einmal abgesehen, arbeiten alle Geräte im "Raw-Modus", d.h. Steuersequenzen wie Control-C werden nicht berücksichtigt.

Weitere Geräte können jederzeit per Dcntl erstellt und eingetragen werden; aufgrund des inkompatiblen Treiberformates muß jedoch der Opcode DEV_M_INSTALL und nicht wie sonst üblich DEV_INSTALL benutzt werden. Die vorhandenen Geräte können mit den üblichen Methoden umbenannt und gelöscht werden; im Gegensatz zu MiNT wird das Löschen eines Gerätes über den Gerätetreiber selbst abgewickelt, der sich so aus den entsprechenden Systemvektoren zurückziehen und den Speicher freigeben bzw. sich beenden kann. Ein weiterer Unterschied zu MiNT besteht darin, daß MagiC die volle Funktionalität des DOS-Dateisystems zur Verfügung stellt, d.h.:

Hinweis: Über Fcreate können hier keine Dateien erzeugt werden; es ist allerdings möglich per Fsymlink symbolische Links anzulegen.

Querverweis: BIOS   GEMDOS   XFS-Konzept in MagiC

11.11.2 Das Verzeichnis U:\PIPE

In diesem Verzeichnis werden Pipes abgelegt; es handelt sich dabei um temporäre Dateien, die insbesondere für den Datenaustausch zwischen Prozessen benutzt werden.

Man unterscheidet unidirektionale und bidirektionale Pipes: erstere erlauben einen Datenfluß nur in einer Richtung, letztere können in beide Richtungen übertragen, jedoch nicht gleichzeitig. Bidirektionale Pipes finden z.B. beim Drag&Drop-Protokoll Verwendung. Pipes liefern beim Lesen per Fread grundsätzlich EOF (End-of-File) wenn sie leer sind, oder kein schreibender Prozeß vorhanden ist. Analog wird beim Schreiben per Fwrite der Wert EOF geliefert, falls kein lesender Prozess vorhanden ist.

Der Zugriff erfolgt dabei rein asynchron, d.h. Applikationen warten auf das Lesen bzw. Schreiben und wecken ggf. eine andere Applikation wieder auf. Pipes werden automatisch gelöscht, wenn das letzte Programm, daß sie benutzt, die sie repräsentierende Datei geschlossen hat.

Hinweis: MagiC unterstützt maximal 32 Pipes gleichzeitig. Ein Fseek auf Pipes führt grundsätztlich zur Rückgabe von 0L, d.h. der Dateizeiger kann nicht beeinflußt werden. Im Verzeichnisfenster erscheinen Pipes mit einer Länge von 2 bzw. 4k und dem Datum ihrer Erstellung. Falls beim Öffnen einer Pipe eine Kennung > 31 geliefert wird, kann die Systemfunktion Fselect nicht benutzt werden.

Darüber hinaus ist ab MagiC 3 folgendes zu beachten:

Querverweis:
Fcreate   Fread   Fwrite   Fclose   Fpipe   Test auf Pipes

11.11.3 Das Verzeichnis U:\PROC

Dieses Verzeichnis gibt einen Überblick über die z.Zt. aktiven Prozesse im System. Jeder Eintrag besteht aus den folgenden Komponenten:

In der Abbildung oben beispielsweise, besitzt der Prozess XCONTROL die PID 4 und belegt z.Zt. 93460 Bytes Speicherplatz.

Prozess IDs werden beim Programmstart vergeben und beim Terminieren freigegeben. Das Löschen einer Datei in diesem Verzeichnis hat zur Folge, daß der entsprechende Prozess (über den Programmanager des AES) zerstört wird.

Hinweis: Die MiNT-konformen Prozess-Attribute (spezielle Dateiattribute) werden von MagiC z.Zt. nicht unterstützt. Der Name eines Prozesses kann auch über die Environment-Variable _PNAM ermittelt werden; die Prozess-ID findet sich auch in der Basepage.

Querverweis: GEM   Style-Guidelines   Task-Manager

11.11.4 Das Verzeichnis U:\SHM

Dieses Verzeichnis dient als 'Ablage' für Shared Memory; hier können also Dateien angelegt werden die Speicherblöcke repräsentieren, und auf die andere Prozesse zugreifen dürfen.

Über Shared Memory (gemeinsamen Speicher) läßt sich sehr leicht eine Interprozess-Kommunikation (IPC) realisieren.

Querverweis: Fcntl   SHMGETBLK   SHMSETBLK


HomeMagiCDas Iconify in MagiCDer Aufbau der MAGX.INF-Datei