home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 1 / crawlyvol1.bin / program / compiler / m2posx14 / src / sys.dpp < prev    next >
Encoding:
Modula Definition  |  1994-05-14  |  10.1 KB  |  210 lines

  1. DEFINITION MODULE sys;
  2. __DEF_SWITCHES__
  3. #ifdef HM2
  4. #ifdef __LONG_WHOLE__
  5. (*$!i+: Modul muss mit $i- uebersetzt werden! *)
  6. (*$!w+: Modul muss mit $w- uebersetzt werden! *)
  7. #else
  8. (*$!i-: Modul muss mit $i+ uebersetzt werden! *)
  9. (*$!w-: Modul muss mit $w+ uebersetzt werden! *)
  10. #endif
  11. #endif
  12. (*****************************************************************************)
  13. (* Systeminformationen und -einstellungen.                                   *)
  14. (*                                                                           *)
  15. (* Ein Fehler ist immer dann aufgetreten, wenn bei Funktionen mit Typ INTEGER*)
  16. (* ein negativer Wert zurueckgegeben wird.                                   *)
  17. (* Die genaue Fehlerursache kann bei Bedarf ueber "err.errno" und die ent-   *)
  18. (* sprechenden Konstanten ermittelt werden. Die Funktionen veraendern "errno"*)
  19. (* nur dann, wenn ein Fehler aufgetreten ist, bei erfolgreicher Ausfuehrung  *)
  20. (* wird "errno" nicht veraendert.                                            *)
  21. (*                                                                           *)
  22. (* "GEMDOS":                                                                 *)
  23. (* Die Eigenschaften der Funktionen unter dem ``blanken'' "GEMDOS" sind z.T. *)
  24. (* stark eingeschraenkt; unter dem Stichwort "GEMDOS" ist deswegen immer     *)
  25. (* angegeben, in wieweit die Funktion emuliert werden kann. Ist MiNT-Unter-  *)
  26. (* stuetzung angegeben, so ist unter der Betriebssystemerweiterung "MiNT"    *)
  27. (* eine bessere Unterstuetzung der Funktionen zu erwarten.                   *)
  28. (* --------------------------------------------------------------------------*)
  29. (* 14-Mai-94, Holger Kleinschmidt                                            *)
  30. (*****************************************************************************)
  31.  
  32. FROM SYSTEM IMPORT
  33. (* TYPE *) ADDRESS;
  34.  
  35. FROM PORTAB IMPORT
  36. (* CONST*) MAXSIGNEDLONG,
  37. (* TYPE *) SIGNEDLONG;
  38.  
  39. FROM types IMPORT
  40. (* TYPE *) StrPtr, long, int, timeT, sizeT, ssizeT;
  41.  
  42. (*========================== "statfs()" =====================================*)
  43.  
  44. (* Nicht POSIX: *)
  45. TYPE
  46.   (* Typ des Dateisystems:
  47.    *   val[0] = 0: TOS-Dateisystem oder unbekannt
  48.    *   val[0] = 1: Minix V1-Dateisystem
  49.    *   val[0] = 2: Minix V2-Dateisystem
  50.    *)
  51.   fsidT = RECORD
  52.     val : ARRAY [0..1] OF SIGNEDLONG;
  53.   END;
  54.  
  55. (* Nicht POSIX: *)
  56. TYPE
  57.   StatfsRec = RECORD
  58.     (* Unbekannte Werte werden auf -1 gesetzt *)
  59.     fType   : SIGNEDLONG; (* Typ der Information (= 0) *)
  60.     fBsize  : SIGNEDLONG; (* Blockgroesse des Dateisystems *)
  61.     fBlocks : SIGNEDLONG; (* Gesamtzahl von Bloecken *)
  62.     fBfree  : SIGNEDLONG; (* Zahl der freien Bloecke *)
  63.     fBavail : SIGNEDLONG; (* Zahl der fuer Benutzer freien Bloecke *)
  64.     fFiles  : SIGNEDLONG; (* Gesamtzahl von Inodes im Dateisystem *)
  65.     fFfree  : SIGNEDLONG; (* Anzahl freier Inodes im Dateisystem *)
  66.     fFsid   : fsidT;
  67.     fSpare  : ARRAY [0..6] OF SIGNEDLONG; (* reserviert *)
  68.   END;
  69.  
  70. (*======================== "gethostname()" ==================================*)
  71.  
  72. CONST (* Nicht POSIX: *)
  73.   MAXHOSTNAMELEN = 32;
  74.  
  75. (*=========================== "uname()" =====================================*)
  76.  
  77. TYPE
  78.   UtsnameRec = RECORD
  79.     (* Laenge und Inhalt der einzelnen Strings sind systemspezifisch *)
  80.     sysname  : ARRAY [0..19] OF CHAR;
  81.     nodename : ARRAY [0..MAXHOSTNAMELEN-1] OF CHAR;
  82.     release  : ARRAY [0..19] OF CHAR;
  83.     version  : ARRAY [0..19] OF CHAR;
  84.     machine  : ARRAY [0..19] OF CHAR;
  85.   END;
  86.  
  87. (*==================== "pathconf()", "sysconf()" ============================*)
  88.  
  89. CONST (* Nicht POSIX: *)
  90.   UNLIMITED = MAXSIGNEDLONG; (* <=> Wert nur durch Speicher o.ae. begrenzt *)
  91.  
  92. TYPE
  93.   PConfVal = (
  94.     pcLinkMax,   (* Max. Anzahl Links *)
  95.     pcPathMax,   (* Max. Laenge einer kompletten Pfadangabe *)
  96.     pcNameMax,   (* Max. Laenge eines Dateinamens ohne Pfad *)
  97.     pcPipeBuf,   (* Anzahl Bytes, die ``atomar'' in Pipe geschrieben werden *)
  98.     pcNoTrunc,   (* Werden Pfadangaben automatisch gekuerzt ? *)
  99.     pcMaxCanon,
  100.     pcMaxInput,
  101.     pcChownRestricted,(* Kann Benutzer seine Dateien fuer andere freigeben ? *)
  102.     pcVdisable
  103.   );
  104.  
  105. TYPE
  106.   SConfVal = (
  107.     scArgMax,    (* Max. Laenge fuer Argumente und Environment bei "exec*()" *)
  108.     scOpenMax,   (* Max. Anzahl gleichzeitig offener Dateien *)
  109.     scNGroupsMax,
  110.     scChildMax,  (* Max. Anzahl gleichzeitig ex. Prozesse pro Benutzer *)
  111.     scClkTck,    (* = CLKTCK, Anzahl Intervalle/Sek bei Typ 'clockT' *)
  112.     scJobControl,(* Wird ``Job Control'' unterstuetzt ? *)
  113.     scSavedIds,
  114.     scVersion    (* POSIX-Version, 6 dez. Digits, z.B. 198808 oder 199009 *)
  115.   );
  116.  
  117. (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
  118.  
  119.  PROCEDURE gethostname ((* EIN/ -- *) buf  : StrPtr;
  120.                         (* EIN/ -- *) blen : sizeT  ): int;
  121.  
  122. (*--------------------------------------------------------------------------
  123.  | In <buf>^ wird der Name des Rechners in einem Netzwerk abgelegt.         |
  124.  | <blen> bezeichnet den Platz in <buf>. Das Ergebnis ist nur dann mit einem|
  125.  | Nullbyte abgeschlossen, falls der Platz ausreicht. Das Ergebnis ist      |
  126.  | maximal MAXHOSTNAMELEN Zeichen lang.                                     |
  127.  |                                                                          |
  128.  | MiNT/GEMDOS: Zuerst wird versucht, den Namen aus der Environmentvariable |
  129.  |              'HOSTNAME'zu ermitteln; falls diese nicht existiert oder    |
  130.  |              leer ist, wird der Name der Datei '/etc/hostname' entnommen;|
  131.  |              falls diese Datei nicht existiert oder leer ist, wird als   |
  132.  |              Name "?" geliefert.                                         |
  133.   --------------------------------------------------------------------------*)
  134.  
  135.  
  136.  PROCEDURE uname ((* --/AUS *) VAR info : UtsnameRec ): int;
  137.  
  138. (*--------------------------------------------------------------------------
  139.  | Liefert systemspezifische Informationen ueber das System in Form von     |
  140.  | Strings.                                                                 |
  141.  |                                                                          |
  142.  | GEMDOS/MiNT:                                                             |
  143.  |  'sysname': "TOS/GEMDOS", "TOS/MiNT" oder "Mag!X".                       |
  144.  | 'nodename': Ergebnis von "gethostname()".                                |
  145.  |  'release': TOS-Datum, Darstellung ist vom LC_TIME-Locale abhaengig.     |
  146.  |  'version': TOS/GEMDOS-Version, TOS/MiNT-Version oder TOS/Mag!X-Version. |
  147.  |  'machine': "Atari ST", "Atari STE", "Atari MEGA/STE", "Atari TT030",    |
  148.  |             "Atari Falcon030" oder "Atari".                              |
  149.   --------------------------------------------------------------------------*)
  150.  
  151.  
  152.  PROCEDURE pathconf ((* EIN/ -- *) REF path  : ARRAY OF CHAR;
  153.                      (* EIN/ -- *)     which : PConfVal      ): long;
  154.  
  155. (*--------------------------------------------------------------------------
  156.  | Ermittelt Maximalwerte (siehe Def. 'PConfVal') fuer das Dateisystem, auf |
  157.  | dem sich <path> befindet.                                                |
  158.  | Wenn ein Wert unbegrenzt ist, wird UNLIMITED zurueckgegeben.             |
  159.  |                                                                          |
  160.  | GEMDOS: Die Werte sind feste Konstanten.                                 |
  161.  |   MiNT: 'pcLinkMax', 'pcPathMax', 'pcNameMax', 'pcPipeBuf', 'pcNoTrunc'  |
  162.  |         werden ueber 'Dpathconf' ermittelt, der Rest sind Konstanten.    |
  163.   --------------------------------------------------------------------------*)
  164.  
  165.  PROCEDURE sysconf ((* EIN/ -- *) which : SConfVal ): long;
  166.  
  167. (*--------------------------------------------------------------------------
  168.  | Ermittelt Maximalwerte (siehe Def. 'SConfVal') fuer das System.          |
  169.  | Wenn ein Wert unbegrenzt ist, wird UNLIMITED zurueckgegeben.             |
  170.  |                                                                          |
  171.  | GEMDOS: Die Werte sind feste Konstanten.                                 |
  172.  |   MiNT: 'scOpenMax', 'scChildMax' und 'scNGroupsMax' werden ueber        |
  173.  |         'Sysconf' ermittelt, der Rest sind Konstanten.                   |
  174.   --------------------------------------------------------------------------*)
  175.  
  176. (* Nicht POSIX: *)
  177.  PROCEDURE statfs ((* EIN/ -- *) REF path : ARRAY OF CHAR;
  178.                    (* -- /AUS *) VAR buf  : StatfsRec     ): int;
  179.  
  180. (*--------------------------------------------------------------------------
  181.  | Ermittelt die Daten (siehe Definition des Typs 'StatfsRec') des Datei-   |
  182.  | systems, auf dem sich die Datei <path> befindet.                         |
  183.   --------------------------------------------------------------------------*)
  184.  
  185.  
  186.  PROCEDURE time ((* EIN/ -- *) buf : ADDRESS ): timeT;
  187.  
  188. (*--------------------------------------------------------------------------
  189.  | Liefert als Funktionswert das aktuelle Datum/die aktuelle Zeit in        |
  190.  | Sekunden seit dem 1.1.1970 0:00:00 UTC. Falls <buf> ungleich 'NULL',     |
  191.  | wird das Ergebnis ebenfalls in <buf>^ abgelegt.                          |
  192.  |                                                                          |
  193.  | GEMDOS: Es wird eine lokale Zeit geliefert.                              |
  194.  |   MiNT: -""-                                                             |
  195.   --------------------------------------------------------------------------*)
  196.  
  197. (* Nicht POSIX: *)
  198.  PROCEDURE stime ((* EIN/ -- *) time : timeT ): int;
  199.  
  200. (*--------------------------------------------------------------------------
  201.  | Setzt die Systemuhr auf <time>. <time> enthaelt eine Zeit in Sekunden    |
  202.  | seit dem 1.1.1970 0:00:00 UTC. Die Funktion kann nur vom Supervisor aus- |
  203.  | gefuehrt werden.                                                         |
  204.  |                                                                          |
  205.  | GEMDOS: <time> muss eine lokale Zeit enthalten.                          |
  206.  |   MiNT: -""-                                                             |
  207.   --------------------------------------------------------------------------*)
  208.  
  209. END sys.
  210.