Service de noyau kra_thread_create
Objectif
Crée une unité d'exécution de noyau dans le processus appelant et connecte la nouvelle unité d'exécution de noyau à un ensemble de ressources.
Syntaxe
#include <sys/rset.h>
tid_t kra_thread_create (rstype, rsid, flags)
rstype_t rstype;
rsid_t rsid;
unsigned int flags;
Descriptif
Le service de noyau Kra_thread_create crée une nouvelle unité d'exécution noyau uniquement dans le processus de noyau appelant et connecte la nouvelle unité d'exécution de noyau à un ensemble de ressources comme indiqué dans les paramètres Rstype et Rsid . Une fois l'unité d'exécution du noyau créée, l'ID de l'unité d'exécution du noyau est renvoyé. L'ID renvoyé de l'unité d'exécution du nouveau noyau est unique dans tout le système.
Le service de noyau Kra_thread_create peut être utilisé comme le service de noyau Création d'unités d'exécution pour créer une nouvelle unité d'exécution de noyau dans le processus appelant.
La nouvelle unité d'exécution du noyau ne démarre pas immédiatement après sa création et l'état de la nouvelle unité d'exécution du noyau est défini sur TSIDL. La nouvelle unité d'exécution du noyau démarre après un appel au service de noyau Kthread_start . Si le nouveau processus d'unité d'exécution du noyau se ferme avant le démarrage de l'unité d'exécution du noyau, les ressources de l'unité d'exécution du nouveau noyau sont libérées immédiatement. Le masque de signal de la nouvelle unité d'exécution du noyau est hérité de l'unité d'exécution appelante et l'ensemble des signaux en attente de l'unité d'exécution du noyau est effacé. Si la nouvelle unité d'exécution du noyau est à l'état TSIDL , tous les signaux envoyés à la nouvelle unité d'exécution du noyau sont marqués comme En attente.
- L'ensemble de ressources doit contenir des processeurs disponibles dans le système.
- Le processus appelant doit posséder les droits d'accès root ou posséder la fonction CAP_NUM_CONNEXION .
- Le processus appelant doit avoir l'autorité racine ou avoir le même ID utilisateur effectif que celui du processus cible.
- L'unité d'exécution appelante ne doit pas avoir de liaisons bindprocessor sur un processeur.
- L'ensemble de ressources doit être contenu dans l'ensemble de ressources de partition du processus appelant.
Paramètres
| Article | Descriptif |
|---|---|
| Rstype | Indique le type de jeu de ressources auquel la nouvelle unité d'exécution de noyau du processus appelant sera associée. Les valeurs admises sont les suivantes :
|
| Rsid | Indique l'ensemble de ressources associé au paramètre Rstype . Les valeurs admises sont les suivantes :
|
| Flags | Réservé pour une utilisation future. Vous pouvez indiquer la valeur 0. |
Valeurs renvoyées
Une fois l'exécution terminée, le service de noyau Kra_thread_create renvoie une valeur de zéro (0). En cas d'échec, le service de noyau kra_thread_create renvoie l'une des erreurs suivantes:
| Article | Descriptif |
|---|---|
| EINVAL | Indique l'une des conditions suivantes:
|
| ENODEV | L'ensemble de ressources spécifié ne contient pas de processeur disponible dans le système. |
| EDÉFAUT | Adresse non valide. |
| EPERM | Indique l'une des conditions suivantes:
|
| ENOMEM | La mémoire disponible n'est pas suffisante pour créer l'unité d'exécution du noyau. |
| ENCORE UNE FOIS | Le nombre total d'unités d'exécution de noyau en cours d'exécution à l'échelle du système ou le nombre maximal d'unités d'exécution de noyau par processus serait dépassé. |
| ENOTSUP | Le service de noyau Kra_thread_create est appelé directement à partir d'une extension de noyau. |