Dipl.-Ing. Jrgen Dittmer Max-Planck-Straáe, Geb. 1 D-21502 Geesthacht EMail: dittmer@gkss.de Tel.: 04172 961202 04152 8714880 Fax.: 04172 961203 Letzte Žnderung: 26.07.1996 ------------------------------------------------------------------------------- Anleitung zum SWD1 Superwatchdog OS/2 Ger„tetreiber Der SWD1 ist eine kurze ISA-Einsteckkarte zur hardwareseitigen šberwachung des PC's. Er kann berall dort eingesetzt werden, wo PC's nicht von einem Benutzer berwacht werden, z.B. im Serverbetrieb. Er kann bezogen werden bei: Ing.-Bro Sontopski Schulstraáe 20b D-21465 Reinbek Tel./Fax.: 040 / 722 35 66 Der Preis betr„gt etwa DM 173,00 (Stand 12 Jul 1996). Der in diesem Paket enthaltene Treiber ist eine zeitlich begrenzte Testversion, dennoch voll funktionsf„hig. Nach Ablauf der Testzeit kann der Treiber nicht mehr geladen werden. Fr die zeitlich unbegrenzte Vollversion werden DM 60,00 + MwSt. berechnet. ------------------------------------------------------------------------------- Liste der Dateien SWD1.TXT Diese Anleitung SWD1.SYS OS/2-Ger„tetreiber fr den SWD1 PMWATCH.EXE Programm zum Watchdog fr den OS/2 Pr„sentationsmanager FSWATCH.EXE Fhrt einen Festplattenabschluss vor dem Reset durch WATCH.EXE Beispielprogramm zum Watchdog WATCH.C C-Quelltext zum Beispiel B1807961.TXT Bedienungsanleitung zum SWD1 vom Willi Sontopski ------------------------------------------------------------------------------- Was kann der Treiber und was nicht? Der SWD1.SYS ist ein OS/2-Device-Treiber fr den Superwatchdog. Mit diesem Treiber k”nnen bis zu 32 Programme gleichzeitig berwacht werden. Das Beispielprogramm WATCH.C zeigt, wie der Treiber von einem selbstgeschrie- benem Programm angesteuert wird. Das Programm PMWATCH ist eine PM-Applikation, die einen h„ngenden Pr„sentations-Manager erkennen kann. Um ein bestimmtes Programm sicher zu berwachen, mssen im Programm selbst die Watchdog-Aufrufe implementiert sein. Dies geht natrlich nur mit der M”glichkeit die Aufrufe in das Programm einzubauen. Die L”sung nur mittels PMWATCH das System zu berwachen funktioniert im allgemeinen gut; es kann jedoch passieren, daá nur das eigentlich interessante Programm h„ngt, der PM aber noch einwandfrei arbeitet. Dieser Fall kann nicht von PMWATCH erkannt werden! Auf diversen Testrechnern, die z.B. als Netzwerk-Server fungieren, hat es sich als ausreichend erwiesen, PMWATCH zu verwenden. ------------------------------------------------------------------------------- Warum einen Device-Treiber fr OS/2? OS/2 hat eingebaute Schutzmechanismen, die verhindern, daá ein Programm auf Speicherbereiche oder I/O-Ports zugreift, die von anderen Prozessen verwendet werden. Ein Prozeá, der dies m”chte, muá I/O-Privilegien haben, diese IOPL's kann man beim Linken eines Programmes vereinbaren. Fr 16-bit-Programme ist dies noch einfach, bei 32-bit wird es schon etwas komplizierter. Nachteil dieser L”sung ist, daá bei einer neuen Hardware das Programm ge„ndert werden muá und nur ein Programm zur Zeit den Watchdog benutzen kann. Der Device-Treiber kann mehrere Zugriffe auf die Hardware serialisieren und ist sehr einfach von Programmen ansteuerbar. Bei einer Ver„nderung der Hardware wird nur der Treiber ausgetauscht, fr die Applikationen „ndert sich nichts. Der Programmierer muá sich nicht direkt mit der Hardwareprogrammierung ausein- andersetzen (was jedoch nicht bedeutet, daá er die Funktionen nicht kennen sollte). ------------------------------------------------------------------------------- Installation Kopieren Sie die Dateien von der Diskette in ein Verzeichnis Ihrer Wahl, zum Beispiel: D:\WATCHDOG Erg„nzen Sie die CONFIG.SYS um die Zeile: DEVICE=D:\WATCHDOG\SWD1.SYS, wobei folgende Parameter angegeben werden k”nnen: /B:xxx xxx = Basisadresse des SWD1, vorgeben ist 258h /V Anzeige aller Parameter beim Systemstart /F Temperaturberwachung des Lfters einschalten (Funktion 11h) /U USV-šberwachung einschalten (Funktion 17h) /S Beim Reload wird ein kurzer Ton ausgegeben /T:xxx xxx = Zeit in Sekunden fr den Timeout (Z1), Vorgabe ist 120 Sekunden Beispiel: DEVICE=D:\WATCHDOG\SWD1.SYS /V /S /T:60 Beim Systemstart werden alle Parameter angezeigt und bei jedem Reload des Watchdog wird ein Ton h”rbar, die Basisadresse der Karte ist 258 Hex und die Timeoutzeit ist auf 60 Sekunden gesetzt. Die Funktionen fr die Temperatur- und USV-Steuerung sind in der Anleitung zum SWD1 genauer beschrieben. Die Žnderung in der CONFIG.SYS wird nach einem Neustart des Systems wirksam. ------------------------------------------------------------------------------- Test der Installation ™ffnen Sie ein OS/2-Fenster und wechseln Sie in das WATCHDOG-Verzeichnis. Starten Sie das Programm PMWATCH.EXE. In diesem Programm wird der Watchdog gestartet und erh„lt alle 10 Sekunden das Reload-Kommando. Wenn beim Treiber der Parameter /S angegeben wurde, ist ein kurzer Ton bei jedem Reload zu h”ren. Fr den folgenden Timeout-Test sollte das Reset-Kabel nicht angeschlossen sein! Starten Sie WATCH.EXE mit der Intervallzeit 300 Sekunden: WATCH 300 Da die Timeoutzeit 60 Sekunden betr„gt, er jedoch erst nach 300 Sekunden das Reload-Kommando erhalten wrde, l”st er nach 60 Sekunden den Reset aus. ------------------------------------------------------------------------------- Benutzung des Programms PMWATCH.EXE PMWATCH.EXE ist ein Programm fr den Pr„sentationsmanager (PM), das dem Watchdog zyklisch das Reload-Kommando sendet. Es kann zur šberwachung des PM eingesetzt werden. Aufruf mit: PMWATCH [Zeitintervall in Sekunden], z.B.: PMWATCH 5 Es empfiehlt sich eine Referenz dieses Programms in den Systemstartordner zu stellen. Funktion: Innerhalb des Programms wird ein PM-Timer (WinStartTimer)installiert und dadurch ausgel”st eine PM-Nachricht (WinPostMsg) versandt. Beim Empfang der Nachricht wird eine Ereignissemaphore gesetzt (PostEventSem). Ein zweiter Thread sendet daraufhin das Reload-Kommando. Wenn der PM von einem fehlerhaften Programm blockiert wurde, k”nnen keine Nachrichten mehr verarbeitet werden. Der Benutzer merkt dies daran, daá der PM nicht mehr auf Eingaben reagiert. In diesem Fall wrde PMWATCH auch h„ngen und den Watchdog nicht mehr triggern. Wenn dann der Timeout abgelaufen ist, startet das System neu. Ein grn/roter Balken zeigt den aktuellen Z„hlerstand des Watchdogs an. So kann man gut beobachten, wann ein Reload gesendet wird und wieviel Zeit noch bis zum Reset bleibt. ------------------------------------------------------------------------------- Programmierung des Watchdog Fr die Kommunikation mit dem Treiber sind nur die Befehle DosOpen, DosClose und DosDevIOCtl notwendig. Der Devicename fr DosOpen ist WATCHDG$. rc = DosOpen("WATCHDG$", &DevHandle, &ulAction, 0, FILE_NORMAL, FILE_OPEN, OPEN_SHARE_DENYNONE | OPEN_FLAGS_FAIL_ON_ERROR | OPEN_ACCESS_READWRITE, 0L); DevHandle ist eine Dateinummer, die vom System eindeutig vergeben wird, d.h., sie ist systemweit nur einmal vorhanden. Beim ™ffnen des Treibers wird im Ger„tetreiber die Dateinummer (DevHandle) registriert und der Watchdog gestartet. Der Treiber kann maximal 32-mal gleichzeitig von mehreren Programmen ge”ffnet werden. Ab jetzt muá der Treiber innerhalb der Timeoutzeit angesprochen werden: rc = DosDevIOCtl(DevHandle, Category, Function, NULL, NULL, NULL, &IOData, sizeof (IOData), NULL); Wobei Category = 0x91 und Function = 0x01 ist. In der Struktur IOData wird der aktuelle Z„hlerstand des Watchdog zurckgegeben. Damit kann in einem Programm berprft werden, wie viele Sekunden noch bis zum Reset verbleiben. Wenn mehrere Programme den Treiber ge”ffnet haben, prft dieser zun„chst ob alle Programme ein DosDevIOCtl gesendet haben, bevor der eigentliche Hardware-Reload durchgefhrt wird. Dadurch k”nnen mehrere Programme durch den Watchdog berwacht werden. Steht nur ein Programm still, nachdem es DosOpen ausgefhrt hat, so erh„lt der Treiber keine regelm„áigen IOCtl's mehr von ihm und die Watchdog- Hardware l”st einen Reset aus. Ein Programm kann sich mittels DosClose beim Treiber abmelden: rc = DosClose (DevHandle); Als Beispiel fr die Programmierung kann WATCH.C dienen. Versuchen Sie auch einmal mehrere Instanzen von WATCH.EXE zu starten, der Treiber wird alle Prozesse berwachen. ------------------------------------------------------------------------------- Einstellung der Timeout-Zeit Die Zeit fr den Timeout sollte mindestens doppelt so lange wie die l„ngste Reload-Zeit in einem Programm gew„hlt werden. Vorgabe des Treibers ist 120 Sekunden, die l„ngste Reload-Zeit sollte also h”chstens 59 Sekunden dauern (mindestens 1 Sekunde Toleranz). ------------------------------------------------------------------------------- OS/2 Dateisysteme und der Reset Wenn Sie verz”gertes Schreiben aktiviert haben, kann es beim harten Reset in einigen seltenen F„llen zu Besch„digungen von Dateien kommen. Bei einem normalem Systemabschluá oder drcken von STRG-ALT-ENTF schreibt OS/2 zun„chst die Plattencaches auf die Festplatten und markiert die Partitionen als korrekt abgeschlossen. Dieses ist jedoch beim Reset nicht m”glich und daher sollten beim Neustart die betreffenden Partitionen vom System berprft werden. In Ihrer CONFIG.SYS sollte die automatische šberprfung (AUTOCHECK) nicht abgeschlossener Partitionen eingeschaltet sein: Beispiel mit FAT-Partition C: und HPFS-Partitionen D: E: und F: : IFS=E:\OS2\HPFS.IFS /CACHE:1024 /CRECL:64 /AUTOCHECK:DEF šberprfung fr die HPFS-Partitionen D:, E: und F: DISKCACHE=512,LW,32,AC:C šberprfung der FAT-Partition C: Ausfhrliche Information finden Sie im OS/2 Online-Handbuch. ------------------------------------------------------------------------------- Nutzungsbedingung Die folgenden Bedingungen gelten fr die vorliegende Testversion. 1. Nutzungs-Lizenz: Dieses Test-Programm darf in der vorliegenden Version unter Bercksichtigung der nachfolgenden Einschr„nkungen bis zum 31. Dezember 1996 frei benutzt werden. Es darf und soll in unmodifizierter Form vervielf„ltigt, ver”ffentlicht und verbreitet werden. Die Benutzung dieses Programms stellt eine Einwilligung in diese Vereinbarung als Ganzes dar und beinhaltet die Freistellung des Autors von jeglicher Verantwortung und Haftung. Der Nutzer erkl„rt sein Einverst„ndnis zum Ausschluá des Rechtsweges. 2. Garantie / Gew„hrleistung / Haftung ABSOLUT KEINE FšR DIESE TESTVERSION!!! DER AUTOR HAFTET NICHT FšR SCHŽDEN JEGLICHER ART, INSBESONDERE NICHT FšR VERM™GENSSCHŽDEN, SACHSCHŽDEN, ENTSTANDENE VERBINDLICHKEITEN GEGENšBER DRITTEN UND SCHŽDEN, DIE AUS FEHLFUNKTIONEN DES PROGRAMMS ODER AUFGRUND VON BEDIENUNGSFEHLERN ENTSTEHEN. DIE BENUTZUNG DES PROGRAMMS IN STAATEN, IN DENEN DIESER TOTALE GEWŽHRLEISTUNGS- UND HAFTUNGSAUSSCHLUSS NICHT ZUGELASSEN IST, IST NICHT ERLAUBT. ------------------------------------------------------------------------------- Kein Programm ist nicht verbesserungsf„hig! Fehler im Programm und Verbesserungsvorschl„ge sowie Wnsche bitte an den Programmautor melden. Dieses ist eine Testversion. Obwohl bisher keine Unvertr„glichkeiten mit Programmen oder Systemen aufgetreten sind, k”nnen sich Programmfehler eingeschlichen haben. Falls Sie fr Ihren Watchdog (oder andere Hardware) einen Device-Treiber brauchen, wenden Sie sich bitte an den Autor. Weitere Treiber fr andere Watchdogs sind vorhanden oder im Entstehen, bitte nachfragen! ------------------------------------------------------------------------------- Historie: Version 0.90 - Interne Tests auf verschiedenen Systemen Version 0.91 - Erste freie Testvesion, lauff„hig bis 31.12.1996 Version 0.92 - Erweiterung der Anzahl der max. zu berwachenden Prozesse auf 32 ------------------------------------------------------------------------------- Was noch gemacht werden muá: Die Erkennung eines blockierten PM's mittels PMWATCH kann vielleicht noch verbessert werden. Tips hierzu werden gerne entgegengenommen! ------------------------------------------------------------------------------- Vielen Dank an: Dipl.-Ing. Willi Sontopski fr die Untersttzung bei diesem Projekt Dipl.-Ing. Jens Bockhold fr das ausgiebige Testen auf seinem WWW-Server (http://jebopc1.tz.gkss.de)