Routine zur Einheitenwarteschlangenverwaltung prüfen
Zweck
Bietet eine Möglichkeit zur Durchführung einer einheitenspezifischen Gültigkeitsprüfung für Parameter, die in Anforderungswarteschlangenelementen enthalten sind.
Syntax
#include <sys/types.h>
#include <sys/errno.h>
#include <sys/deviceq.h>
int check (type, ptr, length)
int type;
struct req_qe *ptr;
int length;Parameter
| Element | Beschreibung |
|---|---|
| Typ | Gibt den Typ des Aufrufs an Die folgenden Werte werden verwendet, wenn der Kernel die Routine Prüfen aufruft:
|
| PTR | Gibt die Adresse des Warteschlangenelements an |
| Länge | Gibt die Länge des Warteschlangenelements an |
Beschreibung
Die Routine Prüfen ist Teil der Kernelerweiterung für Einheitenwarteschlangenmanagement. Jede Einheitenwarteschlange kann eine Prüfen -Routine haben. Diese Routine ist optional und muss angegeben werden, wenn die Einheitenwarteschlange mit dem Creatq -Service erstellt wird. Der Enque -Service ruft die Routine Prüfen auf, bevor ein Anforderungswarteschlangenelement in die Einheitenwarteschlange eingereiht wird. Der Kernel verwendet den Rückgabewert der Routine, um festzustellen, ob das Warteschlangenelement in die Einheitenwarteschlange eingereiht oder gestoppt werden soll.
Der Kernel ruft die Routine Prüfen nicht auf, wenn ein Bestätigungs-oder Steuerwarteschlangenelement gesendet wird. Daher wird die Routine Prüfen nur während der Ausführung innerhalb eines Prozesses aufgerufen.
Die Adresse des tatsächlichen Warteschlangenelements wird an diese Routine übergeben. Achten Sie in der Routine Prüfen darauf, nur die Felder zu ändern, die geändert werden sollten. Diese Routine muss nicht mit den übrigen Routinen des Servers serialisiert werden, da sie nur die Parameter im Warteschlangenelement überprüft.
Die Routine Prüfen kann die Anforderung prüfen, bevor das Anforderungswarteschlangenelement in die Einheitenwarteschlange gestellt wird. Der Vorteil dieser Routine besteht darin, dass Sie nicht akzeptable Befehle herausfiltern können, bevor sie in die Einheitenwarteschlange eingereiht werden.
Die Routine prüft das Warteschlangenelement und gibt RC_GUT zurück, wenn die Anforderung akzeptabel ist. Wenn der Rückkehrcode nicht RC_GUTlautet, stellt der Kernel das Warteschlangenelement nicht in eine Einheitenwarteschlange.
Ausführungsumgebung
Die Routine Prüfen wird unter dem Prozessumgebung des Requesters ausgeführt. Daher muss der Zugriff auf Datenbereiche so gehandhabt werden, als ob sich die Routine in einer Unterbrechung -Handlerumgebung befindet. Es ist jedoch nicht erforderlich, den Code und die Daten wie in einer normalen Interrupt-Handler-Umgebung zu fixieren.
Rückgabewerte
| Element | Beschreibung |
|---|---|
| RC_GUT | Erfolgreiche Ausführung. |
Alle anderen Rückgabewerte sind einheitenspezifisch.