home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1994-05-14 | 10.1 KB | 210 lines |
- DEFINITION MODULE sys;
- __DEF_SWITCHES__
- #ifdef HM2
- #ifdef __LONG_WHOLE__
- (*$!i+: Modul muss mit $i- uebersetzt werden! *)
- (*$!w+: Modul muss mit $w- uebersetzt werden! *)
- #else
- (*$!i-: Modul muss mit $i+ uebersetzt werden! *)
- (*$!w-: Modul muss mit $w+ uebersetzt werden! *)
- #endif
- #endif
- (*****************************************************************************)
- (* Systeminformationen und -einstellungen. *)
- (* *)
- (* Ein Fehler ist immer dann aufgetreten, wenn bei Funktionen mit Typ INTEGER*)
- (* ein negativer Wert zurueckgegeben wird. *)
- (* Die genaue Fehlerursache kann bei Bedarf ueber "err.errno" und die ent- *)
- (* sprechenden Konstanten ermittelt werden. Die Funktionen veraendern "errno"*)
- (* nur dann, wenn ein Fehler aufgetreten ist, bei erfolgreicher Ausfuehrung *)
- (* wird "errno" nicht veraendert. *)
- (* *)
- (* "GEMDOS": *)
- (* Die Eigenschaften der Funktionen unter dem ``blanken'' "GEMDOS" sind z.T. *)
- (* stark eingeschraenkt; unter dem Stichwort "GEMDOS" ist deswegen immer *)
- (* angegeben, in wieweit die Funktion emuliert werden kann. Ist MiNT-Unter- *)
- (* stuetzung angegeben, so ist unter der Betriebssystemerweiterung "MiNT" *)
- (* eine bessere Unterstuetzung der Funktionen zu erwarten. *)
- (* --------------------------------------------------------------------------*)
- (* 14-Mai-94, Holger Kleinschmidt *)
- (*****************************************************************************)
-
- FROM SYSTEM IMPORT
- (* TYPE *) ADDRESS;
-
- FROM PORTAB IMPORT
- (* CONST*) MAXSIGNEDLONG,
- (* TYPE *) SIGNEDLONG;
-
- FROM types IMPORT
- (* TYPE *) StrPtr, long, int, timeT, sizeT, ssizeT;
-
- (*========================== "statfs()" =====================================*)
-
- (* Nicht POSIX: *)
- TYPE
- (* Typ des Dateisystems:
- * val[0] = 0: TOS-Dateisystem oder unbekannt
- * val[0] = 1: Minix V1-Dateisystem
- * val[0] = 2: Minix V2-Dateisystem
- *)
- fsidT = RECORD
- val : ARRAY [0..1] OF SIGNEDLONG;
- END;
-
- (* Nicht POSIX: *)
- TYPE
- StatfsRec = RECORD
- (* Unbekannte Werte werden auf -1 gesetzt *)
- fType : SIGNEDLONG; (* Typ der Information (= 0) *)
- fBsize : SIGNEDLONG; (* Blockgroesse des Dateisystems *)
- fBlocks : SIGNEDLONG; (* Gesamtzahl von Bloecken *)
- fBfree : SIGNEDLONG; (* Zahl der freien Bloecke *)
- fBavail : SIGNEDLONG; (* Zahl der fuer Benutzer freien Bloecke *)
- fFiles : SIGNEDLONG; (* Gesamtzahl von Inodes im Dateisystem *)
- fFfree : SIGNEDLONG; (* Anzahl freier Inodes im Dateisystem *)
- fFsid : fsidT;
- fSpare : ARRAY [0..6] OF SIGNEDLONG; (* reserviert *)
- END;
-
- (*======================== "gethostname()" ==================================*)
-
- CONST (* Nicht POSIX: *)
- MAXHOSTNAMELEN = 32;
-
- (*=========================== "uname()" =====================================*)
-
- TYPE
- UtsnameRec = RECORD
- (* Laenge und Inhalt der einzelnen Strings sind systemspezifisch *)
- sysname : ARRAY [0..19] OF CHAR;
- nodename : ARRAY [0..MAXHOSTNAMELEN-1] OF CHAR;
- release : ARRAY [0..19] OF CHAR;
- version : ARRAY [0..19] OF CHAR;
- machine : ARRAY [0..19] OF CHAR;
- END;
-
- (*==================== "pathconf()", "sysconf()" ============================*)
-
- CONST (* Nicht POSIX: *)
- UNLIMITED = MAXSIGNEDLONG; (* <=> Wert nur durch Speicher o.ae. begrenzt *)
-
- TYPE
- PConfVal = (
- pcLinkMax, (* Max. Anzahl Links *)
- pcPathMax, (* Max. Laenge einer kompletten Pfadangabe *)
- pcNameMax, (* Max. Laenge eines Dateinamens ohne Pfad *)
- pcPipeBuf, (* Anzahl Bytes, die ``atomar'' in Pipe geschrieben werden *)
- pcNoTrunc, (* Werden Pfadangaben automatisch gekuerzt ? *)
- pcMaxCanon,
- pcMaxInput,
- pcChownRestricted,(* Kann Benutzer seine Dateien fuer andere freigeben ? *)
- pcVdisable
- );
-
- TYPE
- SConfVal = (
- scArgMax, (* Max. Laenge fuer Argumente und Environment bei "exec*()" *)
- scOpenMax, (* Max. Anzahl gleichzeitig offener Dateien *)
- scNGroupsMax,
- scChildMax, (* Max. Anzahl gleichzeitig ex. Prozesse pro Benutzer *)
- scClkTck, (* = CLKTCK, Anzahl Intervalle/Sek bei Typ 'clockT' *)
- scJobControl,(* Wird ``Job Control'' unterstuetzt ? *)
- scSavedIds,
- scVersion (* POSIX-Version, 6 dez. Digits, z.B. 198808 oder 199009 *)
- );
-
- (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
-
- PROCEDURE gethostname ((* EIN/ -- *) buf : StrPtr;
- (* EIN/ -- *) blen : sizeT ): int;
-
- (*--------------------------------------------------------------------------
- | In <buf>^ wird der Name des Rechners in einem Netzwerk abgelegt. |
- | <blen> bezeichnet den Platz in <buf>. Das Ergebnis ist nur dann mit einem|
- | Nullbyte abgeschlossen, falls der Platz ausreicht. Das Ergebnis ist |
- | maximal MAXHOSTNAMELEN Zeichen lang. |
- | |
- | MiNT/GEMDOS: Zuerst wird versucht, den Namen aus der Environmentvariable |
- | 'HOSTNAME'zu ermitteln; falls diese nicht existiert oder |
- | leer ist, wird der Name der Datei '/etc/hostname' entnommen;|
- | falls diese Datei nicht existiert oder leer ist, wird als |
- | Name "?" geliefert. |
- --------------------------------------------------------------------------*)
-
-
- PROCEDURE uname ((* --/AUS *) VAR info : UtsnameRec ): int;
-
- (*--------------------------------------------------------------------------
- | Liefert systemspezifische Informationen ueber das System in Form von |
- | Strings. |
- | |
- | GEMDOS/MiNT: |
- | 'sysname': "TOS/GEMDOS", "TOS/MiNT" oder "Mag!X". |
- | 'nodename': Ergebnis von "gethostname()". |
- | 'release': TOS-Datum, Darstellung ist vom LC_TIME-Locale abhaengig. |
- | 'version': TOS/GEMDOS-Version, TOS/MiNT-Version oder TOS/Mag!X-Version. |
- | 'machine': "Atari ST", "Atari STE", "Atari MEGA/STE", "Atari TT030", |
- | "Atari Falcon030" oder "Atari". |
- --------------------------------------------------------------------------*)
-
-
- PROCEDURE pathconf ((* EIN/ -- *) REF path : ARRAY OF CHAR;
- (* EIN/ -- *) which : PConfVal ): long;
-
- (*--------------------------------------------------------------------------
- | Ermittelt Maximalwerte (siehe Def. 'PConfVal') fuer das Dateisystem, auf |
- | dem sich <path> befindet. |
- | Wenn ein Wert unbegrenzt ist, wird UNLIMITED zurueckgegeben. |
- | |
- | GEMDOS: Die Werte sind feste Konstanten. |
- | MiNT: 'pcLinkMax', 'pcPathMax', 'pcNameMax', 'pcPipeBuf', 'pcNoTrunc' |
- | werden ueber 'Dpathconf' ermittelt, der Rest sind Konstanten. |
- --------------------------------------------------------------------------*)
-
- PROCEDURE sysconf ((* EIN/ -- *) which : SConfVal ): long;
-
- (*--------------------------------------------------------------------------
- | Ermittelt Maximalwerte (siehe Def. 'SConfVal') fuer das System. |
- | Wenn ein Wert unbegrenzt ist, wird UNLIMITED zurueckgegeben. |
- | |
- | GEMDOS: Die Werte sind feste Konstanten. |
- | MiNT: 'scOpenMax', 'scChildMax' und 'scNGroupsMax' werden ueber |
- | 'Sysconf' ermittelt, der Rest sind Konstanten. |
- --------------------------------------------------------------------------*)
-
- (* Nicht POSIX: *)
- PROCEDURE statfs ((* EIN/ -- *) REF path : ARRAY OF CHAR;
- (* -- /AUS *) VAR buf : StatfsRec ): int;
-
- (*--------------------------------------------------------------------------
- | Ermittelt die Daten (siehe Definition des Typs 'StatfsRec') des Datei- |
- | systems, auf dem sich die Datei <path> befindet. |
- --------------------------------------------------------------------------*)
-
-
- PROCEDURE time ((* EIN/ -- *) buf : ADDRESS ): timeT;
-
- (*--------------------------------------------------------------------------
- | Liefert als Funktionswert das aktuelle Datum/die aktuelle Zeit in |
- | Sekunden seit dem 1.1.1970 0:00:00 UTC. Falls <buf> ungleich 'NULL', |
- | wird das Ergebnis ebenfalls in <buf>^ abgelegt. |
- | |
- | GEMDOS: Es wird eine lokale Zeit geliefert. |
- | MiNT: -""- |
- --------------------------------------------------------------------------*)
-
- (* Nicht POSIX: *)
- PROCEDURE stime ((* EIN/ -- *) time : timeT ): int;
-
- (*--------------------------------------------------------------------------
- | Setzt die Systemuhr auf <time>. <time> enthaelt eine Zeit in Sekunden |
- | seit dem 1.1.1970 0:00:00 UTC. Die Funktion kann nur vom Supervisor aus- |
- | gefuehrt werden. |
- | |
- | GEMDOS: <time> muss eine lokale Zeit enthalten. |
- | MiNT: -""- |
- --------------------------------------------------------------------------*)
-
- END sys.
-