Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ psdf(4) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

dksetup(8)

dkindex(8)

dkpsdfinit(8)

psdf(4)                                                             psdf(4)

NAME
     psdf - Plattenformat

SYNTAX
     #include <sys/dkondisk.h>

BESCHREIBUNG
     PSDF (Pyramid Standard Disk Format) steht für eine Reihe von Daten-
     strukturen, mit denen Konfigurationsinformationen auf Plattengeräten
     gespeichert werden können. Da dafür gesonderte Bereiche der Platte
     benutzt werden und von den Informationen redundante Kopien erstellt
     und aufbewahrt werden, wird man dadurch gegen die meisten Plattende-
     fekte abgesichert.

     PSDF besteht aus einem Positions-Index mit Zeigern auf die Platten-
     Positionen mit den verschiedenen Konfigurations-Datenstrukturen sowie
     auf die Konfigurations-Datenstrukturen selbst. Das Verweissystem für
     eine bestimmte Platte ist vom jeweiligen Gerätetreiber abhängig.

     Der Positions-Index enthält Zeiger auf die redundanten Kopien der Aus-
     weichsektortabelle (Tabelle der fehlerhaften Blöcke), die Gerätetyp-
     Struktur (struct dktype), die Plattenbereichs-Struktur (struct dkpart)
     sowie die Platten-Tuning-Struktur (struct dktune). Jede dieser Struk-
     turen ist auf der Platte in eine Sektorpuffer-Struktur eingebettet,
     die eine Versionsnummer sowie eine Dateiformatkennung (magic number)
     enthält.  Bei den Puffer-Strukturen handelt es sich um die nachfolgend
     gezeigten struct xxxondisk-Strukturen. Die auf einer bestimmten
     Platte enthaltene Struktur wird in die Version umgewandelt, die im
     aktuellen System benutzt wird; dies wird durch den Systemkern erle-
     digt, wenn die Struktur von der Platte gelesen wird. Die Strukturen
     werden auf jeden Fall in der Version geschrieben, die aktuell vom
     System benutzt wird.

     Diese Strukturen können mit den folgenden ioctl-Funktionsaufrufen
     gelesen und geschrieben werden:

          struct dkindex
                    DKIOCGETINDEX und DKIOCSETINDEX

          struct dktype
                    DKIOCGETTYPE und DKIOCSETTYPE

          struct dkpart
                    DKIOCGETPART und DKIOCSETPART

          struct dktune
                    DKIOCGETTUNE und DKIOCSETTUNE

     Außerdem kann der ioctl-Funktionsaufruf DKIOCSETMODE im DKMODENOPSDF-
     Modus benutzt werden, um dem Treiber mitzuteilen, daß die Platte das
     PSDF nicht unterstützt und die oben aufgeführten ioctl-
     Funktionsaufrufe DKIOCSET... daher nicht zu der Datenstruktur führen



Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

psdf(4)                                                             psdf(4)

     sollten, die gerade auf die Platte geschrieben wird.

     /*
      * "@(#)dkondisk.h        Revision: 1.8     3/11/91 19:26:17"
      */

     /*    Pyramid Technology - Apr 1990    */
     #ifndef dkondiskh
     #define dkondiskh
     #ident     "@(#)dkondisk.h PTrev: 1.8 3/11/91 19:26:17"

     #ifdef KERNEL
     #include "sys/dkio.h"
     #else
     #include <sys/dkio.h>
     #endif

     /*
      * Die Konfigurationsstrukturen auf der Platte
      */

     #define DKMAGIC      0xf1e2d3c4L  /* Dateiformatkennung für alle Strukturen  */
     #define DKXMAGIC     0xc4d3e2f1L  /* Dateiformatkennung für Indexstrukturen */
     #define DKNINDEX     4            /* Anzahl der Indizes pro Platte */
     #define DKNCOPIES    8            /* Maximale Anzahl der Datenstruktur-Kopien */
     #define DKSTRUCTSIZE 2048         /* Mindestgröße der Strukturen auf der Platte*/
     #define DKMAXSECTOR  4096         /* Unterstützte maximale Sektorgröße
                                           Auch kleinere Sektoren sind zulässig */
     #define DKIDLEN      64           /* Maximale Länge der Kennungs-Zeichenkette */

     /*
      * Die Indexstruktur ist auf der Platte an einer bekannten Position enthalten
      * und enthält Zeiger auf die übrigen Informationen, die auf der Platte
      * enthalten sind.
      */
     struct dkindexondisk
     {
         long  dkversion;
         long  dkmagic;
         union
         {
             struct dkindexv1
             {
                 char dkxid[DKIDLEN];   /* Eindeutige gerätespezifische
                                             Kennungs-Zeichenkette */
                 struct dkaddr
                 {
                     long cylinder;
                     long head;
                     long sector;
                 } dkxasm[DKNCOPIES],   /* Ausweichsektortabelle */
                   dkxtype[DKNCOPIES],  /* struct dktype */


Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

psdf(4)                                                             psdf(4)

                   dkxpart[DKNCOPIES],  /* struct dkpart */
                   dkxtune[DKNCOPIES],  /* struct dktune */
                   dkxmisc[DKNCOPIES];  /* reserviert */
             } dkxv1;
             char fill[DKSTRUCTSIZE - 2*sizeof(long)];
         } U;
     };
     typedef struct dkindexv1 dkindext;   /* Die aktuellste Version */

     struct dktypeondisk
     {
         long  dkversion;
         long  dkmagic;
         union
         {
             struct dktype dktv1;
             char fill[DKSTRUCTSIZE - 2*sizeof(long)];
         } U;
     };
     typedef struct dktype dktypet;        /* Die aktuellste Version */

     struct dkpartondisk
     {
         long  dkversion;
         long  dkmagic;
         union
         {
             struct dkpart dkpv1;
             char fill[DKSTRUCTSIZE - 2*sizeof(long)];
         } U;
     };
     typedef struct dkpart dkpartt;        /* Die aktuellste Version */

     struct dktuneondisk
     {
         long  dkversion;
         long  dkmagic;
         union
         {
             struct dktune dkuv1;
             /* Groß lassen, damit sie einfach zu erweitern ist */
             char fill[DKMAXSECTOR - 2*sizeof(long)];
         } U;
     };
     typedef struct dktune dktunet;        /* Die aktuellste Version  */

     #endif /* dkondiskh */

SIEHE AUCH
     dksetup(8), dkindex(8), dkpsdfinit(8).




Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026