Týndur/LostIO — Änderungen 1836 → 1840

Zeile 5: Zeile 5:
  
 
= Funktionen =
 
= Funktionen =
 +
== LostIO ==
  
 +
==VFS-Baum==
 
= Beispiel =
 
= Beispiel =
 
Hier folgen ausschnitte aus dem Quellcode des Diskettentreibers(Die Funktionen fuer den Laufwerkszugriff werden hier nicht gezeigt).
 
Hier folgen ausschnitte aus dem Quellcode des Diskettentreibers(Die Funktionen fuer den Laufwerkszugriff werden hier nicht gezeigt).
  
−
<nowiki>
+
<pre>
 
int main(int argc, char* argv[])
 
int main(int argc, char* argv[])
 
{
 
{
Zeile 16: Zeile 18:
 
     init_service_register("floppy");
 
     init_service_register("floppy");
 
      
 
      
−
     //Diskettenlaufwerk initialisieren
+
     //LostIO initialisieren(Ist nur bei den Treibern notwendig. Bei
−
     //TODO: Das 2. Diskettelaufwerk auch initialiseren falls vorhanden
+
     //Anwendungen, die nur auf andere Treiber zugreifen wollen sollte
−
    register_intr_handler(0x26, &floppy_irq_handler);
+
     //das weggelassen werden.
−
    floppy_select_drive(0);
 
−
    floppy_reset();
 
−
    floppy_set_motor(FALSE);
 
−
   
 
−
     //Den Dateisystem-Baum bereit machen
 
 
     lostio_init();
 
     lostio_init();
 
      
 
      
 +
    //Hier werden 2 vordefinierte Typen benutzbar gemacht:
 +
    //Verzieichnise und Dateien, die den Inhalt direkt im RAM haben.
 +
    //Dann muessen keine eigenen Handler registriert werden.
 
     lostio_type_ramfile_use();
 
     lostio_type_ramfile_use();
 
     lostio_type_directory_use();
 
     lostio_type_directory_use();
 
      
 
      
 +
 +
    //Speicher fuer ein neues typehandle allokieren
 
     typehandle_t* typehandle = malloc(sizeof(typehandle_t));
 
     typehandle_t* typehandle = malloc(sizeof(typehandle_t));
 
      
 
      
 +
    //Die Typen-ID
 
     typehandle->id          = 255;
 
     typehandle->id          = 255;
 +
   
 +
    //Die Pointer auf unsere Handles setzen. NULL wenn für
 +
    //diejenigen Pointer wofür kein Handler zur Verfügung steht.
 
     typehandle->pre_open    = NULL;
 
     typehandle->pre_open    = NULL;
 
     typehandle->post_open  = NULL;
 
     typehandle->post_open  = NULL;
Zeile 38: Zeile 44:
 
     typehandle->seek        = &floppy_seek_handler;
 
     typehandle->seek        = &floppy_seek_handler;
 
     typehandle->close      = NULL;
 
     typehandle->close      = NULL;
 +
 +
    //Das Typehandle bei LostIO registrieren, damit es verfügbar ist.
 
     lostio_register_typehandle(typehandle);
 
     lostio_register_typehandle(typehandle);
  
−
      
+
 
 +
     //Der Inhalt des Version-Ramfile
 
     const char* version = "Version 0.0.1";
 
     const char* version = "Version 0.0.1";
 +
    //Nun wird das Ramfile erstellt
 
     vfstree_create_node("/version", LOSTIO_TYPES_RAMFILE, strlen(version) + 1, (void*)version);
 
     vfstree_create_node("/version", LOSTIO_TYPES_RAMFILE, strlen(version) + 1, (void*)version);
 +
 +
    //Zuerst wird das devices-Verzeichnis erstellt
 
     vfstree_create_node("/devices", LOSTIO_TYPES_DIRECTORY, 0, NULL);
 
     vfstree_create_node("/devices", LOSTIO_TYPES_DIRECTORY, 0, NULL);
 +
    //Die beiden Nodes fuer die beiden Diskettenlaufwerke erstellt
 
     vfstree_create_node("/devices/fd0", 255, 1440 * 1024, (void*)0);
 
     vfstree_create_node("/devices/fd0", 255, 1440 * 1024, (void*)0);
 
     vfstree_create_node("/devices/fd1", 255, 1440 * 1024, (void*)1);
 
     vfstree_create_node("/devices/fd1", 255, 1440 * 1024, (void*)1);
  
−
     //Diese Schleife sorgt dafuer, dass der  
+
     //Diese Schleife sorgt dafuer, dass der Treiber
 
     while(TRUE) yield();
 
     while(TRUE) yield();
 
      
 
      
 
     return 0;
 
     return 0;
 
}
 
}
−
</nowiki>
+
</pre>
  
  
 
[[Category:LOST]]
 
[[Category:LOST]]