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 CEWS WatchCard OS/2 Ger„tetreiber Die WatchCard ist eine kurze ISA-Einsteckkarte zur hardwareseitigen šberwachung des PC's. Sie kann berall dort eingesetzt werden, wo PC's nicht von einem Benutzer berwacht werden, z.B. im Serverbetrieb. Er kann bezogen werden bei: Dipl.-Ing. W. Schrader - Computerengineering - Kirschengarten 22 D-32052 Herford Tel.: 05221/769757 Fax.: 05221/769758 eMail: WoSchrader@aol.com Der Preis betr„gt DM 143,48 + MwSt. (Stand 12.07.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 Liesmich.TXT Diese Anleitung WATCHCRD.SYS OS/2-Ger„tetreiber fr die WatchCard PMWATCH.EXE Programm zum Watchdog fr den OS/2 Pr„sentationsmanager WATCH.EXE Beispielprogramm zum Watchdog WATCH.C C-Quelltext zum Beispiel ------------------------------------------------------------------------------- Was kann der Treiber und was nicht? Der WATCHCRD.SYS ist ein OS/2-Device-Treiber fr die CEWS WatchCard. 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\WATCHCRD.SYS, wobei folgende Parameter angegeben werden k”nnen: /B:xxx xxx = Basisadresse der WatchCard, vorgegeben ist 0x20F /T:xxx Timeoutzeit (Tr), Vorgabe sind 120 Sekunden /R:xxx Pre-Trigger (Tp, Relais), vorgegeben sind 10 Sekunden /V Anzeige aller Parameter beim Systemstart /S Beim Reload wird ein kurzer Ton ausgegeben Beispiel: DEVICE=D:\WATCHDOG\WATCHCRD.SYS /V /S /T:60 Beim Systemstart werden alle Parameter angezeigt und bei jedem Reload des Watchdog ist ein Ton h”rbar, die Basisadresse der Karte ist 20F Hex und die Timeoutzeit ist auf 60 Sekunden gesetzt. 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. ANMERKUNG: FOLGENDE FUNKTION WIRD ZUR ZEIT VON DER HARDWARE NICHT UNTERSTšTZT! DER BALKEN BLEIBT IMMER GRšN UND ZEIGT DIE EINGESTELLTE RETRIGGERZEIT AN. 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. ANMERKUNG: In der Struktur IOData wird in der aktuellen Version die eingestellte Timeoutzeit (120s) zurckgegeben. In sp„teren Versionen soll der aktuelle Z„hlerstand des Watchdog bergeben werden. Aus diesem Grund zeigt PMWatch immer einen vollen grnen Balken! 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! Das Zurcklesen des Resettimers ist zur Zeit in der Hardware nicht vorgesehen. Sobald diese M”glichkeit besteht, wird sie in einer neuen Treiberversion implementiert. Dann wird es auch m”glich sein, kurz vor dem harten Reset noch einen Dateisystemabschluá durchzufhren.