kra_attachrset Subroutine
Zweck
Ordnet einer Ressourcengruppe eine Arbeitskomponente zu.
Syntax
#include <sys/rset.h>
int kra_attachrset (rstype, rsid, rset, flags)
rstype_t rstype;
rsid_t rsid;
rsethandle_t rset;
unsigned int flags;Beschreibung
Die Subroutine kra_attachrset ordnet eine Arbeitskomponente, die durch die Parameter RSTTYPE und RSID angegeben wird, einer Ressourcengruppe zu, die durch den Parameter RSet angegeben wird.
Die Arbeitskomponente ist ein vorhandener Prozess mit der Prozess-ID oder ein vorhandener Kernel-Thread mit der Kernel-Thread-ID (tid). Der Wert RS_ICH für die Prozess-ID oder die Thread-ID gibt an, dass die Zuordnung für den aktuellen Prozess bzw. den aktuellen Kernel-Thread gilt.
- Die Ressourcengruppe muss Prozessoren enthalten, die im System verfügbar sind.
- Der aufrufende Prozess muss entweder Rootberechtigung haben oder über die Funktion CAP_NUMA_ATTACH verfügen.
- Der aufrufende Prozess muss entweder Rootberechtigung oder dieselbe effektive Benutzer-ID wie der Zielprozess haben.
- Der Zielprozess darf keine Threads mit bindprocessor-Bindungen an einen Prozessor enthalten.
- Die Ressourcengruppe muss in enthalten sein (eine Untergruppe von sein) Die Partitionsressourcengruppe des Zielprozesses.
- Die Ressourcengruppe muss eine Obermenge aller RSet des Threads im Zielprozess sein.
- Die Ressourcengruppe muss Prozessoren enthalten, die im System verfügbar sind.
- Der aufrufende Prozess muss entweder Rootberechtigung haben oder über die Funktion CAP_NUMA_ATTACH verfügen.
- Der aufrufende Prozess muss entweder Rootberechtigung oder dieselbe effektive Benutzer-ID wie der Zielprozess haben.
- Der Zielthread darf keine bindprocessor-Bindungen zu einem Prozessor haben.
- Die Ressourcengruppe muss in enthalten sein (eine Untergruppe von sein) Der effektive Prozess des Zielthreads und die Partitionsressourcengruppe.
Wenn eine dieser Bedingungen nicht erfüllt ist, schlägt der Anhang fehl.
Sobald ein Prozess einer Ressourcengruppe zugeordnet ist, werden die Threads im Prozess nur auf Prozessoren ausgeführt, die in der Ressourcengruppe enthalten sind. Sobald ein Kernel-Thread einer Ressourcengruppe zugeordnet ist, wird dieser Thread nur auf Prozessoren ausgeführt, die in der Ressourcengruppe enthalten sind.
- Alle Offlineprozessoren werden ignoriert.
- Wenn alle Hardware-Threads (CPUs) eines physischen Prozessors (im Modus Simultanes Multithreading sind mehrere aktive Hardware-Threads pro physischem Prozessor vorhanden) nicht in der angegebenen Ressourcengruppe enthalten sind, werden die anderen CPUs des Prozessors beim Erstellen der ST-Ressourcengruppe ignoriert.
- Nur eine CPU-Ressource (Hardware-Thread) pro physischem Prozessor ist in der ST-Ressourcengruppe enthalten.
Parameter
| Element | Beschreibung |
|---|---|
| RSTYPE | Gibt den Typ der Arbeitskomponente an, die der mit dem Parameter RSet angegebenen Ressourcengruppe zugeordnet werden soll. Der Parameter rstype muss der folgende Wert sein, der in rset.hdefiniert ist:
|
| RSID | Gibt die Arbeitskomponente an, die der mit dem Parameter RSet angegebenen Ressourcengruppe zugeordnet werden soll. Für den Parameter RSID muss Folgendes angegeben werden:
|
| rset | Gibt an, welche Arbeitskomponente (angegeben durch die Parameter RSTTYPE und RSID ) der Ressourcengruppe zugeordnet werden soll |
| Flags | Gibt die Planungsrichtlinie für die Arbeitskomponente an, die zugeordnet wird. Der einzige unterstützte Wert ist der Wert R_ATTACH_STRSET, der nur gilt, wenn der Parameter RSTTYPE auf R_PROCESS gesetzt ist. Der Wert R_ATTACH_STRSET gibt an, dass der Prozess mit einer Einzelthreadrichtlinie terminiert werden soll (nur auf einem Hardware-Thread pro physischem Prozessor). |
Rückgabewerte
Nach erfolgreicher Beendigung gibt die Subroutine kra_attachrset den Wert 0 zurück. Ist dies nicht erfolgreich, trifft mindestens eine der folgenden Bedingungen zu:
| Element | Beschreibung |
|---|---|
| EINVAL | Eine der folgenden
Bedingungen ist aufgetreten:
|
| ENODEW | Die mit dem Parameter RSet angegebene Ressourcengruppe enthält keine verfügbaren Prozessoren, oder der Parameter R_ATTACH_STRSET Flags wurde angegeben, und die erstellte ST-Ressourcengruppe enthält keine verfügbaren Prozessoren. |
| ESRCH | Der durch die Parameter RSTTYPE und RSID angegebene Prozess oder Kernel-Thread ist nicht vorhanden. |
| EPERM | Eine der folgenden
Bedingungen ist aufgetreten:
|