Herunterladen Inhalt Inhalt Diese Seite drucken

Nachricht Auslesen (Readmxi) - Phoenix Contact IBS PCI DDK UM Anwenderhandbuch

Device driver development kit zu anschaltbaugruppen für pc-systeme mit pci-bus
Inhaltsverzeichnis

Werbung

IBS PCI DDK UM
5-16
Ursprünglichen Inhalt der I/O-Register der Anschaltbaugruppe wieder-
herstellen und die Funktion mit dem Rückgabewert ERR_OK beenden.
Auf die Freigabe der Mailbox wird an dieser Stelle nicht gewartet, da diese
Aufgabe von der Interrupt-Service-Routine übernommen wird. Die Freiga-
be des Send-Vector-Registers braucht ebenfalls nicht abgewartet zu wer-
den, da das zugehörige Bit im Handshake-Register vor dem Senden einer
Nachricht kontrolliert wird und ein Überschreiben damit ausgeschlossen
ist. Die Adresse der Mailboxen zur Kommunikation mit den anderen Nodes
kann innerhalb der erlaubten Grenzen (Mailbox-Area) frei gewählt werden.
Welches SVR verwendet werden soll und wo es im MPM liegt, wird anhand
des Node-Handles bzw. der sich damit ergebenden Node-Nummer be-
stimmt.
Die Adressen der Handshake- und Set-HS-Ax/Bx-Register sind über die
global verfügbare Struktur svrCtrl (Datentyp T_SVR_CTRL) bestimmbar.
Die dafür notwendigen Parameter Source_Node_Number (Zeilenwert) und
Destination_Node_Number (Spaltenwert) ergeben sich aus der Node-
Handle-Kontrollstruktur nodeHdCtrl und der allgemeinen Gerätetreiber-
Kontrollstruktur devCtrlCB (Datentyp T_DEV_CTRL).
5.3.7

Nachricht auslesen (readMXI)

Die readMXI-Funktion dient dem Auslesen einer Nachricht aus dem MPM.
Sie stellt das Gegenstück zur writeMXI-Funktion dar. Neben dem Auslesen
der eigentlichen Nachricht wird von der Funktion auch das Mailbox-Hand-
shake-Protokoll abgewickelt.
Diese Funktion wird bei einem DOS-Treiber in der Regel im Polling-Mode
verwendet, d. h. das Anwendungsprogramm ruft diese Funktion zyklisch
auf, um festzustellen ob eine Nachricht vorhanden ist. Bei anderen Be-
triebssystemen, wie z. B. OS-2, ist es möglich, diese Funktion als „Blocked
Function" zu implementieren und die Funktion solange im Warte-Zustand
(Blocked) zu belassen, bis eine Nachricht eingetroffen ist.
Das Vorhandensein einer Nachricht wird der Funktion indirekt durch die
Message-Kontrollstruktur msgCtrl (Datentyp T_MSG_CTRL) angezeigt. Ist
der Wert der Strukturkomponente msgCnt dort größer Null, liegt eine Nach-
richt vor. Eine Nachricht wird immer nur von dem Node (MPM-Teilnehmer)
gelesen, der durch den Node-Handle spezifiziert ist.
6189A

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis