home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 4 Drivers
/
04-Drivers.zip
/
wcrd092.zip
/
LIESMICH.TXT
< prev
next >
Wrap
Text File
|
1996-07-26
|
13KB
|
321 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 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.
Für die zeitlich unbegrenzte Vollversion werden DM 60,00 + MwSt. berechnet.
-------------------------------------------------------------------------------
Liste der Dateien
Liesmich.TXT Diese Anleitung
WATCHCRD.SYS OS/2-Gerätetreiber für die WatchCard
PMWATCH.EXE Programm zum Watchdog für 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 für 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, 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\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.
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.
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 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.
ANMERKUNG:
In der Struktur IOData wird in der aktuellen Version die eingestellte
Timeoutzeit (120s) zurückgegeben. In späteren Versionen soll der
aktuelle Zählerstand des Watchdog übergeben werden. Aus diesem Grund
zeigt PMWatch immer einen vollen grünen Balken!
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!
Das Zurücklesen 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ß durchzuführen.