k_cpuextintr_ctl Kernel-Service

Zweck

Führt Operationen zur Steuerung externer CPU-Interrupts aus

Syntax

#include <sys/intr.h>
kerrno_t k_cpuextintr_ctl (Befehl , cpuset , Flags)
Ausgestorben_tctl_t   Befehl;
Satzkennung (rsethandle_t)   cpuset;
Einheit Flags;  

Beschreibung

Diese Kernel-Services bieten die Möglichkeit, den Status externer Interrupts für die von der CPU-Ressourcengruppe beschriebenen CPUs zu aktivieren, zu inaktivieren und abzufragen. Das Aktivieren oder Inaktivieren eines externen CPU-Interrupts kann sich auf die Zustellung externer Interrupts an die CPU auswirken. Normalerweise können auf mehreren CPU-Systemen externe Interrupts an jede aktive CPU zugestellt werden, und die Verteilung auf die CPUs wird durch eine vordefinierte Methode bestimmt. Jeder externe Interrupt kann nur an eine einzige CPU übermittelt werden, wenn dessen Interruptpriorität höher ist als die aktuelle externe Interruptpriorität der CPU. Wenn externe Interrupts über diese Schnittstelle inaktiviert werden, wird jede externe Interruptpriorität, die weniger bevorzugt als INTMAX ist, blockiert, bis die Interrupts wieder aktiviert werden. Dieser Kernel-Service ist nur auf selektive Hardwaretypen anwendbar.

Anmerkung: Da dieser Kernel-Service die Art und Weise ändert, wie Interrupts bereitgestellt werden, kann sich dies auf die Systemleistung auswirken. Dieser Service garantiert, dass für mindestens eine aktive CPU externe Interrupts für alle Einheiteninterrupts aktiviert sind. Jede DLPAR-CPU-Entfernung kann fehlschlagen, wenn die Operation diese Garantie bricht. In einem Ein-/Ausgabe-gebundenen System ist eine CPU möglicherweise nicht ausreichend, um alle externen Interrupts zu verarbeiten, die von der Partition empfangen werden. Es kann zu Leistungseinbußen kommen, wenn nicht genügend CPUs für die Verarbeitung externer Interrupts aktiviert sind.

Parameter

Element Beschreibung
Befehl

Gibt die Operation für die von der CPU-Ressourcengruppe angegebene CPU an. Einer der folgenden Werte, die in <sys/intr.h> definiert sind, kann verwendet werden:

Die folgenden Befehle werden unterstützt:

  • EXTINTDISABLE: Externe Interrupts auf den CPUs inaktivieren, die von der CPU-Ressourcengruppe angegeben werden.
  • EXTINTENABLE: Externe Interrupts auf den CPUs aktivieren, die von der CPU-Ressourcengruppe angegeben werden
  • QUERYEXTINTDISABLE: Gibt eine CPU-Ressourcengruppe zurück, die die CPUs enthält, für die externe Interrupts inaktiviert sind.
  • QUERYEXTINTENABLE: Gibt eine CPU-Ressourcengruppe zurück, die die CPUs enthält, für die die externe Unterbrechung aktiviert ist.
cpuset

Referenz auf eine CPU-Ressourcengruppe. Wenn dieser Kernel-Service erfolgreich zurückgegeben wird, werden die CPUs, für die die externe Unterbrechungssteueroperation ausgeführt wurde, in der CPU-Ressourcengruppe festgelegt.

Die durch diesen Parameter cpuset angegebenen CPUs sind logische CPU-IDs.

Flags

Immer 0 oder EINVAL_INTR_DIS_BAD_FLAGS wird zurückgegeben.

Sicherheit

Der Aufrufende muss Rootberechtigung mit der Berechtigung CAP_NUMA_ANHÄNGEN oder PV_KER_CONF in der RBAC-Umgebung haben.

Ausführungsumgebung

Der k_cpuextintr_ctl -Kernel-Service kann nur aus einer Prozessumgebung aufgerufen werden.

Rückgabewerte

Nach erfolgreichem Abschluss gibt der k_cpuextintr_ctl -Kernel-Service eine 0 zurück. Ist dies nicht erfolgreich, wird einer der folgenden Kerrno -Werte zurückgegeben.

Element Beschreibung
Kernelnummer Beschreibung
EINVAL_EXTINTR_BAD_BEFEHL Der Befehlswert ist ungültig.
EINVAL_EXTINTR_BAD_FLAGS Der Flagwert ist unbekannt.
EINVAL_EXTINTR_BAD_CPUSET cpuset verweist auf NULL.
EINVAL_EXTINTR _NO_RSET cpuset ist leer.
ENOTSUP_EXTINTR_AUFRUFPROGRAMM Der Kernel-Service wird aus der Interruptumgebung aufgerufen.
ENOSYS_EXTINTR_PLATTFORM Diese Funktion ist auf der Plattform nicht implementiert.
EPERM_EXTINTR_OPER Die Berechtigung des Aufrufenden reicht nicht aus, um die angeforderte Operation auszuführen.
Anmerkung: Der Rückgabewert 'success' gibt nicht unbedingt an, dass externe Interrupts für alle angegebenen CPUs aktiviert bzw. inaktiviert wurden. Wenn beispielsweise eine CPU nicht online ist, wird die Operation zum Aktivieren oder Inaktivieren für diese CPU nicht ausgeführt. Der Aufrufende sollte die zurückgegebene cpuset überprüfen, um festzustellen, welche CPUs diese Operation erfolgreich ausgeführt haben. Der Kernel k_cpuextintr_ctl -Service blockiert die Operation zum Hinzufügen/Entfernen der DR-CPU während des gesamten Systemaufrufs nicht.