Service de noyau kthread_start

Objectif

Démarque une unité d'exécution de noyau précédemment créée.

Syntaxe

#include <sys/thread.h>
int kthread_start ( tid,  i_func,  i_data_addr,  i_data_len,
  
i_stackaddr
,  
i_sigmask)
tid_t tid;
int (*i_func) (void *);
void *i_data_addr;
size_t i_data_len;
void *i_stackaddr;
sigset_t *i_sigmask;

Paramètres

Article Descriptif
ID d'unité d'exécution Indique l'unité d'exécution du noyau à démarrer.
I_func Pointe vers la routine de point d'entrée de l'unité d'exécution noyau uniquement.
Adresse_données_i_i_i_ Pointe vers des données qui seront transmises à la routine de point d'entrée.
_données_i_données Indique la longueur du bloc de données.
Adresse_i_i_i_f Indique l'adresse de base de la pile pour l'unité d'exécution noyau uniquement.
Masque i_sigle Indique l'ensemble de signaux à bloquer à partir de la distribution lorsque la nouvelle unité d'exécution du noyau commence à être exécutée.

Descriptif

Le service de noyau Kthread_start démarre l'unité d'exécution noyau uniquement spécifiée par le paramètre D . L'unité d'exécution doit avoir été précédemment créée avec le service de noyau Création d'unités d'exécution et son état doit être TSIDL.

Ce service de noyau initialise et planifie l'unité d'exécution du processeur. Son état est modifié en TSRUN. L'unité d'exécution est initialisée de sorte qu'elle commence à s'exécuter au point d'entrée indiqué par le paramètre I_func et que les signaux spécifiés par le paramètre Masque i_sigle sont bloqués de la livraison.

Le point d'entrée de l'unité d'exécution obtient un paramètre, un pointeur vers un bloc de données qui est copié sur la base de la pile de l'unité d'exécution. Les paramètres Adresse_données_i_i_i_ et _données_i_données indiquent l'emplacement et la quantité de données à copier. Le format des données doit être accepté par l'unité d'exécution initialisée et initialisée.

L'adresse de base de la pile de l'unité d'exécution est spécifiée par le paramètre Adresse_i_i_i_f . Si une valeur de zéro est spécifiée, le noyau allouera la mémoire pour la pile (96K). Cette mémoire sera réclamait par le système lorsque l'unité d'exécution s'arrête. Si une valeur différente de zéro est spécifiée, l'appelant doit allouer la mémoire de sauvegarde de la pile. Etant donné que les piles se développent à partir d'adresses hautes vers des adresses inférieures, le paramètre Adresse_i_i_i_f indique l'adresse la plus élevée pour la pile de l'unité d'exécution.

L'unité d'exécution sera automatiquement arrêtée lorsqu'elle sera renvoyée par la routine de point d'entrée. S'il s'agit de la dernière unité d'exécution du processus, le processus sera alors sorti.

Environnement d'exécution

Le service de noyau Kthread_start peut être appelé à partir de l'environnement Processus uniquement.

Valeurs renvoyées

Le service de noyau Kthread_start renvoie l'une des valeurs suivantes:

Article Descriptif
0 Indique un démarrage réussi.
ESRCH Indique que le paramètre D n'est pas valide.