|
mxDatei.h |
/*
* mxDatei.h
*
* ====================================================================================================================
* Das Modul mxDatei ermoeglicht es, die Benutzerprozesse als externe Bestandteile von MinMax
* erst zur Laufzeit des Betriebssystems aus einem "Dateisystem" zu laden.
* ACHTUNG: gehoert *nicht* zum initialen MinMax, erst ab Aufgabe 5 noetig!
* ====================================================================================================================
*/
#ifndef __mxDatei__
#define __mxDatei__
#include "mxStrukturen.h"
/***************
** defines **
***************/
#define cMaxDateiAnzahl 20
#define cFuellZeichen 0
#define cProgrammFix 1
#define cKonstantenFix 2
#define cDatenFix 3
/***************
** Typen **
***************/
typedef struct { /* Typ für LiesVerzeichnis() */
long Anzahl; /* KEINE Verwendung innerhalb des Dateisystems! */
tDateiName Namen[cMaxDateiAnzahl];
} tNamenVerzeichnis;
typedef struct { /* Programm-Vorspann in der Ramdisk */
unsigned long ProgrammGroesse; /* Groesse des Programms */
unsigned long KonstantenGroesse; /* Groesse des Konstantenbereichs */
unsigned long DatenGroesse; /* Groesse des benoetigten Datensegments */
unsigned long StackGroesse; /* Groesse des benoetigten Stacksegments */
unsigned long FixupAnzahl; /* Anzahl der Stellen an denen im Programm */
} tProgrammInfo; /* Adressumsetzung gemacht werden muss */
typedef struct { /* ein Eintrag in der Fixup-Tabelle */
unsigned long Wohin; /* in welches Segment geht dieser Zugriff */
unsigned long Wo; /* in welchem Segment steht dieser Zugriff */
unsigned long Offset; /* wo im Wo-Segment muss die Umsetzung erfolgen */
} tFixup;
typedef struct { /* Eintrag im Dateiverzeichnis */
tDateiName Name; /* Dateiname, mit cFuellZeichen aufgefuellt */
unsigned long Offset; /* Offset im Speicherbereich des Datei- */
/* systems an der einer Datei beginnt */
} tVerzeichnisEintrag;
typedef tVerzeichnisEintrag tVerzeichnis[cMaxDateiAnzahl+1]; /* Dateiverzeichnis */
/* -------------------------------------------------------------------------------------------------------------------- */
/***************
** Prototypen **
***************/
int SucheDatei(char *DateiName);
/* Sucht im Dateisystem nach einem Programm mit dem Namen <Dateiname> und
* gibt seine Kennung zurueck. Falls kein Programm mit dem Namen existiert,
* wird -1 zurueckgegeben.
*/
void LiesVerzeichnis(tNamenVerzeichnis *Verzeichnis);
/* Gibt die Namen aller im Dateisystem vorhandener Programme zurueck
*/
void LiesProgrammInfo(int DateiKennung, tProgrammInfo *Info);
/* Liest den Infoblock einer Datei aus
*/
void LiesProgramm(int DateiKennung, void* Wohin);
/* Liest das Programm aus einer Datei in das Speicherstueck dessen
* Anfangsadresse in <Wohin> uebergeben wird
*/
void LiesKonstanten(int DateiKennung, void* Wohin);
/* Liest den Konstantenbereich aus einer Datei in das Speicherstueck,
* dessen Anfangsadresse in <Wohin> uebergeben wird
*/
void LiesFixup(int DateiKennung, int Index, tFixup *Fixup);
/* Liest das <Index>-te Fixup aus einer Datei (Beginn bei 0)
*/
int InitDatei(void);
/* Init für das Modul Datei
*/
#endif
Bei Problemen mit der Seite bitte eine Mail an Marek
Converted with C2HTML V0.669 by Iluvatar
Prozeßdatenverarbeitung