home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 4 Drivers
/
04-Drivers.zip
/
swd092.zip
/
LIESMICH.TXT
< prev
next >
Wrap
Text File
|
1996-07-29
|
13KB
|
320 lines
Dipl.-Ing. Jürgen 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.-Büro 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.
Für die zeitlich unbegrenzte Vollversion werden DM 60,00 + MwSt. berechnet.
-------------------------------------------------------------------------------
Liste der Dateien
SWD1.TXT Diese Anleitung
SWD1.SYS OS/2-Gerätetreiber für den SWD1
PMWATCH.EXE Programm zum Watchdog für den OS/2 Präsentationsmanager
FSWATCH.EXE Führt 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 für 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, müssen im Programm selbst
die Watchdog-Aufrufe implementiert sein. Dies geht natürlich 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 für 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.
Für 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, für 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 Temperaturüberwachung des Lüfters einschalten (Funktion 11h)
/U USV-Überwachung einschalten (Funktion 17h)
/S Beim Reload wird ein kurzer Ton ausgegeben
/T:xxx xxx = Zeit in Sekunden für 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 für 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.
Für 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 würde, löst er nach 60 Sekunden den Reset aus.
-------------------------------------------------------------------------------
Benutzung des Programms PMWATCH.EXE
PMWATCH.EXE ist ein Programm für 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 würde PMWATCH auch hängen und
den Watchdog nicht mehr triggern. Wenn dann der Timeout abgelaufen ist, startet
das System neu.
Ein grün/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
Für die Kommunikation mit dem Treiber sind nur die Befehle DosOpen, DosClose
und DosDevIOCtl notwendig.
Der Devicename für 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
zurückgegeben. Damit kann in einem Programm überprüft werden, wie
viele Sekunden noch bis zum Reset verbleiben.
Wenn mehrere Programme den Treiber geöffnet haben, prüft dieser zunächst
ob alle Programme ein DosDevIOCtl gesendet haben, bevor der eigentliche
Hardware-Reload durchgeführt wird.
Dadurch können mehrere Programme durch den Watchdog überwacht werden.
Steht nur ein Programm still, nachdem es DosOpen ausgeführt 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 für 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 für 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 drücken 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 überprüft werden.
In Ihrer CONFIG.SYS sollte die automatische Überprüfung (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
Überprüfung für die HPFS-Partitionen D:, E: und F:
DISKCACHE=512,LW,32,AC:C
Überprüfung der FAT-Partition C:
Ausführliche Information finden Sie im OS/2 Online-Handbuch.
-------------------------------------------------------------------------------
Nutzungsbedingung
Die folgenden Bedingungen gelten für die vorliegende Testversion.
1. Nutzungs-Lizenz:
Dieses Test-Programm darf in der vorliegenden Version unter
Berücksichtigung 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 Wünsche 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 für Ihren Watchdog (oder andere Hardware) einen Device-Treiber
brauchen, wenden Sie sich bitte an den Autor.
Weitere Treiber für 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 für die Unterstützung bei diesem Projekt
Dipl.-Ing. Jens Bockhold für das ausgiebige Testen auf seinem WWW-Server
(http://jebopc1.tz.gkss.de)