Service de noyau pci_cfgrw

Objectif

Lente et écrit les registres de configuration des emplacements de bus PCI.

Syntaxe

#include <sys/mdio.h>
int pci_cfgrw(bid, md, write_flag)
int bid;
struct mdio *md;
int write_flag;

Descriptif

Le service de noyau Pci_cfgrw fournit un accès sérialisé aux registres de configuration d'un bus PCI. Pour garantir l'intégrité des données dans un environnement multiprocesseur, un verrou est requis avant d'accéder aux registres de configuration. En fonction de la valeur du paramètre Flag-écriture , une lecture ou une écriture dans le registre de configuration est effectuée au décalage Add_m_m_mc pour l'unité identifiée par Md_sla.

Le service de noyau Pci_cfgrw fournit des extensions de noyau aux mêmes services que MIOPCFGET et MIOPCFPUT ioctls pour les applications. Le service de noyau Pci_cfgrw peut être appelé à partir du processus ou de l'environnement d'interruption.

Paramètres

Article Descriptif
demande de ligne Indique l'identificateur de bus.
md Indique l'adresse de la structure Mdio . La structure Mdio contient les zones suivantes:
Add_m_m_mc
Décalage de début du registre de configuration à accéder (0 à 0xFF pour PCI/PCI-X et 0 à 0xFFF pour PCI-E).
Données_m_données
Pointeur vers la mémoire tampon de données.
Md_taille
Nombre d'éléments de taille spécifiés par le paramètre Incr . La taille maximale est de 256 octets pour PCI/PCI-X et 4096 pour PCI-E.
Incr
Types d'accès, OCTET MV_OCTET, MV_WORDou MV_ABRÉGÉ.
Md_sla
Numéro d'unité et numéro de fonction.
(Numéro d'unité * 8) + Fonction.
Flag-écriture Définis sur 1 pour l'écriture et 0 pour la lecture.

Valeurs renvoyées

Renvoie 0 pour l'exécution réussie.

Article Descriptif
ENOMEM Indique qu'aucune mémoire n'a pu être allouée.
EINVAL Indique que le bus, l'unité / la fonction ou la taille n'est pas valide.
EPERM Indique que la plateforme ne permet pas l'opération demandée