Subroutine für Einheitenkonfiguration busresolve

Zweck

Ordnet Busressourcen für Adapter in einem E/A-Bus zu

Syntax

#include <cf.h>
#include <sys/cfgodm.h>
#include <sys/cfgdb.h>
int busresolve 
(logname, flag, conf_list, not_res_list, busname)
char * logname;
int flags;
char * conf_list;
char * not_res_list;
char * busname; 

Parameter

Element Beschreibung
logname Gibt den logischen Einheitennamen an.
Flags Gibt die Bootphase oder 0 an.
Konf.liste Verweist auf ein Array mit mindestens 512 Zeichen.
not_res_list (keine Ressourcenliste) Verweist auf ein Array mit mindestens 512 Zeichen.
Busname Gibt den logischen Namen des Busses an.

Beschreibung

Die Subroutine für die Busauflösung -Einheitenkonfiguration wird von der Konfigurationsmethode einer Einheit aufgerufen, um Busressourcen für alle Einheiten zuzuordnen, die vordefinierte Attribute für Busressourcen haben. Sie wird auch von der Buskonfigurationsmethode aufgerufen, um Attribute aller Einheiten im Status "Definiert" aufzulösen.

Diese Subroutine fragt zuerst die Objektklassen für angepasste Attribute und vordefinierte Attribute ab, um eine Liste der aktuellen Attributeinstellungen für Busressourcen und eine Liste der möglichen Einstellungen für jedes Attribut abzurufen. Um Konflikte zwischen den Werten, die einer bereits verfügbaren Einheit zugeordnet sind, und der aktuellen Einheit zu lösen, passt die Subroutine die Werte für Attribute von Einheiten im Status 'Definiert' an. Die Subroutine Busauflösung stellt beispielsweise sicher, dass der aktuellen Einheit nicht dieselbe Interruptebene wie einer bereits verfügbaren Einheit zugeordnet ist, wenn sie zur Laufzeit aufgerufen wird. Diese Werte werden in der angepassten Attributobjektklasse aktualisiert.

Die Subroutine Busauflösung ändert nie Attribute von Einheiten, die sich bereits im Status 'Verfügbar' befinden. Einheiten im Status 'Definiert' werden ignoriert, wenn ihrechgstatusFeld in der Objektklasse "Customized Devices" gibt an, dass sie fehlen.

Wenn der Parameter Protokollname auf den logischen Namen einer Einheit gesetzt wird, passt die Subroutine Busauflösung die Busressourcenattribute der angegebenen Einheit bei Bedarf an, um Konflikte mit Einheiten aufzulösen, die sich bereits im Status "Verfügbar" befinden. Die Konfigurationsmethode einer Einheit muss die Subroutine Busauflösung aufrufen, um sicherzustellen, dass ihre Busressourcen ordnungsgemäß zugeordnet werden, wenn die Einheit zur Laufzeit konfiguriert wird. Die Konfigurationsmethode muss nicht ausgeführt werden, wenn sie als Teil des Systemboots ausgeführt wird, weil die Konfigurationsmethode der Buseinheit sie bereits ausgeführt hätte.

Wenn der Parameter Protokollname auf eine Nullzeichenfolge gesetzt ist, ordnet die Subroutine Busauflösung Busressourcen für alle Einheiten zu, die sich noch nicht im Status "Verfügbar" befinden. Die Konfigurationsmethode der Buseinheit ruft die Subroutine Busauflösung auf diese Weise beim Systemboot auf.

Der Parameter Flags wird auf 1 für die Systembootphase 1, 2 für die Systembootphase 2 und 0 gesetzt, wenn die Subroutine Busauflösung während der Laufzeit aufgerufen wird. Die Subroutine Busauflösung kann nur aufgerufen werden, um die Busressourcen einer bestimmten Einheit zur Laufzeit aufzulösen. Das heißt, der Parameter Flags muss 0 sein, wenn der Parameter Protokollname einen logischen Einheitennamen angibt.

Der Wert E_BUSRESOURCE gibt an, dass die Subroutine Busauflösung nicht alle Konflikte auflösen konnte. In diesem Fall enthält der Parameter Konf.liste eine Liste der logischen Namen der Einheiten, für die Attribute erfolgreich aufgelöst wurden. Der Parameter not_res_list (keine Ressourcenliste) enthält außerdem eine Liste der logischen Namen der Einheiten, für die nicht alle Attribute erfolgreich aufgelöst werden können. Einheiten, deren Namen im Parameter not_res_list (keine Ressourcenliste) angezeigt werden, dürfen nicht im Status 'Verfügbar' konfiguriert werden.

Wenn Sie eine Konfigurationsmethode für eine Einheit schreiben, die Busressourcen hat, stellen Sie sicher, dass sie fehlschlägt und den Wert E_BUSRESOURCE zurückgibt, wenn die Subroutine Busauflösung keinen _OK -Wert zurückgibt.

Anmerkung: Wenn die Zeichenfolgen Konf.liste und not_res_list (keine Ressourcenliste) nicht mindestens 512 Zeichen umfassen, ist möglicherweise nicht genügend Speicherplatz vorhanden, um die Einheitennamen aufzunehmen.

Rückgabewerte

Element Beschreibung
_OK Zeigt an, dass alle Busressourcen aufgelöst und erfolgreich zugeordnet wurden
_ARGUMENTE Gibt an, dass die Parameter für die Subroutine Busauflösung ungültig waren. Beispiel: Der Parameter Protokollname gibt einen logischen Einheitennamen an, aber der Parameter Flags ist für die Laufzeit nicht auf 0 gesetzt.
_MALLOC Gibt an, dass die Malloc -Operation, falls erforderlich, fehlgeschlagen ist.
E_NOCuDv Gibt an, dass keine angepassten Einheitendaten für die Buseinheit vorhanden sind, deren logischer Name mit dem Parameter Busname angegeben wird.
_ODMGET Zeigt an, dass beim Abrufen von Daten aus der Konfigurationsdatenbank ein ODM aufgetreten ist
_PARENTSTATUS Gibt an, dass die Buseinheit, deren Name mit dem Parameter Busname angegeben wird, nicht den Status "Verfügbar" hat.
E_BUSRESOLVE Zeigt an, dass eine Busressource für eine Einheit nicht aufgelöst wurde. Der Parameter Protokollname kann die bestimmte Einheit identifizieren. Wenn dieser Parameter jedoch null ist, gibt der Wert E_BUSRESOLVE an, dass die Busressource für eine nicht angegebene Einheit im System nicht aufgelöst wurde.

Dateien

Element Beschreibung
/usr/lib/libcfg.a Archivierung von Einheitenkonfigurationssubroutinen.