home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 4 Drivers / 04-Drivers.zip / swd092.zip / LIESMICH.TXT < prev    next >
Text File  |  1996-07-29  |  13KB  |  320 lines

  1. Dipl.-Ing. Jürgen Dittmer
  2. Max-Planck-Straße, Geb. 1
  3. D-21502 Geesthacht
  4. EMail: dittmer@gkss.de
  5. Tel.: 04172 961202
  6.       04152 8714880
  7. Fax.: 04172 961203
  8.  
  9. Letzte Änderung: 26.07.1996
  10.  
  11. -------------------------------------------------------------------------------
  12.  
  13.  
  14. Anleitung zum SWD1 Superwatchdog OS/2 Gerätetreiber
  15.  
  16. Der SWD1 ist eine kurze ISA-Einsteckkarte zur hardwareseitigen
  17. Überwachung des PC's. Er kann überall dort eingesetzt werden, wo PC's nicht
  18. von einem Benutzer überwacht werden, z.B. im Serverbetrieb.
  19. Er kann bezogen werden bei:
  20.  
  21. Ing.-Büro Sontopski
  22. Schulstraße 20b
  23. D-21465 Reinbek
  24. Tel./Fax.: 040 / 722 35 66
  25.  
  26. Der Preis beträgt etwa DM 173,00 (Stand 12 Jul 1996).
  27.  
  28. Der in diesem Paket enthaltene Treiber ist eine zeitlich begrenzte Testversion,
  29. dennoch voll funktionsfähig.
  30. Nach Ablauf der Testzeit kann der Treiber nicht mehr geladen werden.
  31. Für die zeitlich unbegrenzte Vollversion werden DM 60,00 + MwSt. berechnet.
  32.  
  33. -------------------------------------------------------------------------------
  34.  
  35.  
  36. Liste der Dateien
  37.  
  38. SWD1.TXT     Diese Anleitung
  39. SWD1.SYS     OS/2-Gerätetreiber für den SWD1
  40. PMWATCH.EXE  Programm zum Watchdog für den OS/2 Präsentationsmanager
  41. FSWATCH.EXE  Führt einen Festplattenabschluss vor dem Reset durch
  42. WATCH.EXE    Beispielprogramm zum Watchdog
  43. WATCH.C      C-Quelltext zum Beispiel
  44. B1807961.TXT Bedienungsanleitung zum SWD1 vom Willi Sontopski
  45.  
  46. -------------------------------------------------------------------------------
  47.  
  48.  
  49. Was kann der Treiber und was nicht?
  50.  
  51. Der SWD1.SYS ist ein OS/2-Device-Treiber für den Superwatchdog.
  52. Mit diesem Treiber können bis zu 32 Programme gleichzeitig überwacht werden.
  53. Das Beispielprogramm WATCH.C zeigt, wie der Treiber von einem selbstgeschrie-
  54. benem Programm angesteuert wird. Das Programm PMWATCH ist eine PM-Applikation,
  55. die einen hängenden Präsentations-Manager erkennen kann.
  56.  
  57. Um ein bestimmtes Programm sicher zu überwachen, müssen im Programm selbst
  58. die Watchdog-Aufrufe implementiert sein. Dies geht natürlich nur mit der
  59. Möglichkeit die Aufrufe in das Programm einzubauen.
  60. Die Lösung nur mittels PMWATCH das System zu überwachen funktioniert im
  61. allgemeinen gut; es kann jedoch passieren, daß nur das eigentlich interessante
  62. Programm hängt, der PM aber noch einwandfrei arbeitet. Dieser Fall kann nicht
  63. von PMWATCH erkannt werden!
  64.  
  65. Auf diversen Testrechnern, die z.B. als Netzwerk-Server fungieren, hat es sich
  66. als ausreichend erwiesen, PMWATCH zu verwenden.
  67.  
  68. -------------------------------------------------------------------------------
  69.  
  70.  
  71. Warum einen Device-Treiber für OS/2?
  72.  
  73. OS/2 hat eingebaute Schutzmechanismen, die verhindern, daß ein Programm auf
  74. Speicherbereiche oder I/O-Ports zugreift, die von anderen Prozessen verwendet
  75. werden.
  76. Ein Prozeß, der dies möchte, muß I/O-Privilegien haben, diese IOPL's kann man
  77. beim Linken eines Programmes vereinbaren.
  78. Für 16-bit-Programme ist dies noch einfach, bei 32-bit wird es schon etwas
  79. komplizierter.
  80. Nachteil dieser Lösung ist, daß bei einer neuen Hardware das Programm geändert
  81. werden muß und nur ein Programm zur Zeit den Watchdog benutzen kann.
  82.  
  83. Der Device-Treiber kann mehrere Zugriffe auf die Hardware serialisieren und ist
  84. sehr einfach von Programmen ansteuerbar. Bei einer Veränderung der Hardware
  85. wird nur der Treiber ausgetauscht, für die Applikationen ändert sich nichts.
  86. Der Programmierer muß sich nicht direkt mit der Hardwareprogrammierung ausein-
  87. andersetzen (was jedoch nicht bedeutet, daß er die Funktionen nicht kennen
  88. sollte).
  89.  
  90. -------------------------------------------------------------------------------
  91.  
  92.  
  93. Installation
  94.  
  95. Kopieren Sie die Dateien von der Diskette in ein Verzeichnis Ihrer Wahl,
  96. zum Beispiel: D:\WATCHDOG
  97.  
  98. Ergänzen Sie die CONFIG.SYS um die Zeile:
  99. DEVICE=D:\WATCHDOG\SWD1.SYS, wobei folgende Parameter angegeben werden können:
  100. /B:xxx  xxx = Basisadresse des SWD1, vorgeben ist 258h
  101. /V      Anzeige aller Parameter beim Systemstart
  102. /F      Temperaturüberwachung des Lüfters einschalten (Funktion 11h)
  103. /U      USV-Überwachung einschalten (Funktion 17h)
  104. /S      Beim Reload wird ein kurzer Ton ausgegeben
  105. /T:xxx  xxx = Zeit in Sekunden für den Timeout (Z1), Vorgabe ist 120 Sekunden
  106.  
  107. Beispiel: DEVICE=D:\WATCHDOG\SWD1.SYS /V /S /T:60
  108.  
  109. Beim Systemstart werden alle Parameter angezeigt und bei jedem Reload des
  110. Watchdog wird ein Ton hörbar, die Basisadresse der Karte ist 258 Hex und die
  111. Timeoutzeit ist auf 60 Sekunden gesetzt.
  112. Die Funktionen für die Temperatur- und USV-Steuerung sind in der Anleitung zum
  113. SWD1 genauer beschrieben.
  114. Die Änderung in der CONFIG.SYS wird nach einem Neustart des Systems wirksam.
  115.  
  116. -------------------------------------------------------------------------------
  117.  
  118.  
  119. Test der Installation
  120.  
  121. Öffnen Sie ein OS/2-Fenster und wechseln Sie in das WATCHDOG-Verzeichnis.
  122. Starten Sie das Programm PMWATCH.EXE. In diesem Programm wird der Watchdog
  123. gestartet und erhält alle 10 Sekunden das Reload-Kommando.
  124. Wenn beim Treiber der Parameter /S angegeben wurde, ist ein kurzer Ton bei
  125. jedem Reload zu hören.
  126.  
  127. Für den folgenden Timeout-Test sollte das Reset-Kabel nicht angeschlossen sein!
  128.  
  129. Starten Sie WATCH.EXE mit der Intervallzeit 300 Sekunden: WATCH 300
  130. Da die Timeoutzeit 60 Sekunden beträgt, er jedoch erst nach 300 Sekunden
  131. das Reload-Kommando erhalten würde, löst er nach 60 Sekunden den Reset aus.
  132.  
  133. -------------------------------------------------------------------------------
  134.  
  135.  
  136. Benutzung des Programms PMWATCH.EXE
  137.  
  138. PMWATCH.EXE ist ein Programm für den Präsentationsmanager (PM), das dem
  139. Watchdog zyklisch das Reload-Kommando sendet. Es kann zur Überwachung des
  140. PM eingesetzt werden. 
  141.  
  142. Aufruf mit: PMWATCH [Zeitintervall in Sekunden], z.B.: PMWATCH 5
  143.  
  144. Es empfiehlt sich eine Referenz dieses Programms in den Systemstartordner zu 
  145. stellen.
  146.  
  147. Funktion:
  148. Innerhalb des Programms wird ein PM-Timer (WinStartTimer)installiert und 
  149. dadurch ausgelöst eine PM-Nachricht (WinPostMsg) versandt.
  150. Beim Empfang der Nachricht wird eine Ereignissemaphore gesetzt (PostEventSem).
  151. Ein zweiter Thread sendet daraufhin das Reload-Kommando.
  152. Wenn der PM von einem fehlerhaften Programm blockiert wurde, können keine
  153. Nachrichten mehr verarbeitet werden. Der Benutzer merkt dies daran, daß der PM
  154. nicht mehr auf Eingaben reagiert. In diesem Fall würde PMWATCH auch hängen und
  155. den Watchdog nicht mehr triggern. Wenn dann der Timeout abgelaufen ist, startet
  156. das System neu.
  157.  
  158. Ein grün/roter Balken zeigt den aktuellen Zählerstand des Watchdogs an. So kann
  159. man gut beobachten, wann ein Reload gesendet wird und wieviel Zeit noch bis
  160. zum Reset bleibt.
  161.  
  162. -------------------------------------------------------------------------------
  163.  
  164.  
  165. Programmierung des Watchdog
  166.  
  167. Für die Kommunikation mit dem Treiber sind nur die Befehle DosOpen, DosClose
  168. und DosDevIOCtl notwendig.
  169. Der Devicename für DosOpen ist WATCHDG$.
  170.  
  171.     rc = DosOpen("WATCHDG$", &DevHandle,
  172.               &ulAction, 0,
  173.               FILE_NORMAL,
  174.               FILE_OPEN,
  175.               OPEN_SHARE_DENYNONE | OPEN_FLAGS_FAIL_ON_ERROR | 
  176.               OPEN_ACCESS_READWRITE,
  177.               0L);
  178. DevHandle ist eine Dateinummer, die vom System eindeutig vergeben wird, d.h.,
  179. sie ist systemweit nur einmal vorhanden.
  180. Beim Öffnen des Treibers wird im Gerätetreiber die Dateinummer (DevHandle) 
  181. registriert und der Watchdog gestartet. Der Treiber kann maximal 32-mal 
  182. gleichzeitig von mehreren Programmen geöffnet werden.
  183.  
  184. Ab jetzt muß der Treiber innerhalb der Timeoutzeit angesprochen werden:
  185.  
  186.         rc = DosDevIOCtl(DevHandle, Category, Function, NULL,
  187.                         NULL, NULL, &IOData,
  188.                         sizeof (IOData), NULL);
  189.  
  190. Wobei   Category = 0x91   und
  191.         Function = 0x01   ist.
  192.  
  193.  
  194. In der Struktur IOData wird der aktuelle Zählerstand des Watchdog
  195. zurückgegeben. Damit kann in einem Programm überprüft werden, wie
  196. viele Sekunden noch bis zum Reset verbleiben.
  197.  
  198. Wenn mehrere Programme den Treiber geöffnet haben, prüft dieser zunächst
  199. ob alle Programme ein DosDevIOCtl gesendet haben, bevor der eigentliche
  200. Hardware-Reload durchgeführt wird.
  201. Dadurch können mehrere Programme durch den Watchdog überwacht werden.
  202. Steht nur ein Programm still, nachdem es DosOpen ausgeführt hat, so erhält 
  203. der Treiber keine regelmäßigen IOCtl's mehr von ihm und die Watchdog-
  204. Hardware löst einen Reset aus.
  205.  
  206. Ein Programm kann sich mittels DosClose beim Treiber abmelden:
  207.  
  208.     rc = DosClose (DevHandle);
  209.  
  210. Als Beispiel für die Programmierung kann WATCH.C dienen.
  211. Versuchen Sie auch einmal mehrere Instanzen von WATCH.EXE zu starten, der
  212. Treiber wird alle Prozesse überwachen.
  213.  
  214. -------------------------------------------------------------------------------
  215.  
  216.  
  217. Einstellung der Timeout-Zeit
  218.  
  219. Die Zeit für den Timeout sollte mindestens doppelt so lange wie die längste
  220. Reload-Zeit in einem Programm gewählt werden.
  221. Vorgabe des Treibers ist 120 Sekunden, die längste Reload-Zeit sollte also
  222. höchstens 59 Sekunden dauern (mindestens 1 Sekunde Toleranz).
  223.  
  224. -------------------------------------------------------------------------------
  225.  
  226.  
  227. OS/2 Dateisysteme und der Reset
  228.  
  229. Wenn Sie verzögertes Schreiben aktiviert haben, kann es beim harten Reset in
  230. einigen seltenen Fällen zu Beschädigungen von Dateien kommen.
  231. Bei einem normalem Systemabschluß oder drücken von STRG-ALT-ENTF schreibt OS/2
  232. zunächst die Plattencaches auf die Festplatten und markiert die Partitionen
  233. als korrekt abgeschlossen.
  234. Dieses ist jedoch beim Reset nicht möglich und daher sollten beim Neustart
  235. die betreffenden Partitionen vom System überprüft werden.
  236. In Ihrer CONFIG.SYS sollte die automatische Überprüfung (AUTOCHECK) nicht 
  237. abgeschlossener Partitionen eingeschaltet sein:
  238.  
  239. Beispiel mit FAT-Partition C: und HPFS-Partitionen D: E: und F: :
  240. IFS=E:\OS2\HPFS.IFS /CACHE:1024 /CRECL:64 /AUTOCHECK:DEF
  241. Überprüfung für die HPFS-Partitionen D:, E: und F:
  242.  
  243. DISKCACHE=512,LW,32,AC:C
  244. Überprüfung der FAT-Partition C:
  245.  
  246. Ausführliche Information finden Sie im OS/2 Online-Handbuch.
  247.  
  248. -------------------------------------------------------------------------------
  249.  
  250.  
  251. Nutzungsbedingung
  252.  
  253. Die folgenden Bedingungen gelten für die vorliegende Testversion.
  254.  
  255.  
  256. 1.  Nutzungs-Lizenz: 
  257.  
  258. Dieses Test-Programm darf in der vorliegenden Version unter
  259. Berücksichtigung der nachfolgenden Einschränkungen bis zum 31. Dezember 1996
  260. frei benutzt werden. 
  261.  
  262. Es darf und soll in unmodifizierter Form vervielfältigt, veröffentlicht und
  263. verbreitet werden. 
  264.  
  265. Die Benutzung dieses Programms stellt eine Einwilligung in diese Vereinbarung 
  266. als Ganzes dar und beinhaltet die Freistellung des Autors von jeglicher
  267. Verantwortung und Haftung. Der Nutzer erklärt sein Einverständnis zum 
  268. Ausschluß des Rechtsweges. 
  269.  
  270. 2.  Garantie / Gewährleistung / Haftung 
  271.  
  272. ABSOLUT KEINE FÜR DIESE TESTVERSION!!! 
  273.  
  274. DER AUTOR HAFTET NICHT FÜR SCHÄDEN JEGLICHER ART, INSBESONDERE NICHT FÜR
  275. VERMÖGENSSCHÄDEN, SACHSCHÄDEN, ENTSTANDENE VERBINDLICHKEITEN GEGENÜBER DRITTEN
  276. UND SCHÄDEN, DIE AUS FEHLFUNKTIONEN DES PROGRAMMS ODER AUFGRUND VON
  277. BEDIENUNGSFEHLERN ENTSTEHEN. DIE BENUTZUNG DES PROGRAMMS IN STAATEN, IN DENEN
  278. DIESER TOTALE GEWÄHRLEISTUNGS- UND HAFTUNGSAUSSCHLUSS NICHT ZUGELASSEN IST,
  279. IST NICHT ERLAUBT. 
  280.  
  281. -------------------------------------------------------------------------------
  282.  
  283.  
  284. Kein Programm ist nicht verbesserungsfähig!
  285.  
  286. Fehler im Programm und Verbesserungsvorschläge sowie Wünsche bitte an den
  287. Programmautor melden.
  288.  
  289. Dieses ist eine Testversion. Obwohl bisher keine Unverträglichkeiten
  290. mit Programmen oder Systemen aufgetreten sind, können sich Programmfehler
  291. eingeschlichen haben.
  292.  
  293. Falls Sie für Ihren Watchdog (oder andere Hardware) einen Device-Treiber 
  294. brauchen, wenden Sie sich bitte an den Autor.
  295. Weitere Treiber für andere Watchdogs sind vorhanden oder im Entstehen,
  296. bitte nachfragen!
  297.  
  298. -------------------------------------------------------------------------------
  299.  
  300.  
  301. Historie:
  302.  
  303. Version 0.90 - Interne Tests auf verschiedenen Systemen
  304. Version 0.91 - Erste freie Testvesion, lauffähig bis 31.12.1996
  305. Version 0.92 - Erweiterung der Anzahl der max. zu überwachenden Prozesse auf 32
  306.  
  307. -------------------------------------------------------------------------------
  308.  
  309.  
  310. Was noch gemacht werden muß:
  311.  
  312. Die Erkennung eines blockierten PM's mittels PMWATCH kann vielleicht noch
  313. verbessert werden. Tips hierzu werden gerne entgegengenommen!
  314.  
  315. -------------------------------------------------------------------------------
  316.  
  317. Vielen Dank an:
  318. Dipl.-Ing. Willi Sontopski für die Unterstützung bei diesem Projekt
  319. Dipl.-Ing. Jens Bockhold für das ausgiebige Testen auf seinem WWW-Server
  320. (http://jebopc1.tz.gkss.de)