Service de noyau xmattach
Objectif
Attache à une mémoire tampon utilisateur pour les opérations intermémoire.
Syntaxe
Paramètres
| Article | Descriptif |
|---|---|
| ADDR | Indique l'adresse de la mémoire tampon utilisateur à accéder à une opération de mémoire croisée. |
| count | Indique la taille de la mémoire tampon utilisateur à accéder à une opération de mémoire croisée. |
| dp | Indique un descripteur de mémoire croisée. La variable Dp-> aspace_id doit être définie sur une valeur de XMEM_INVAL. |
| Segdrapeau | Indique un indicateur de segment. Cet indicateur est utilisé pour déterminer l'espace adresse de la mémoire que le descripteur de mémoire croisée s'applique à, ainsi qu'à d'autres fins. Les valeurs valides pour cet indicateur se trouvent dans le fichier /usr/include/xmem.h . |
Descriptif
Le service de noyau Xmattach prépare la mémoire tampon utilisateur de sorte qu'un pilote de périphérique puisse y accéder sans s'exécuter sous le processus qui a demandé l'opération d'E-S. Une routine top-half de l'unité appelle le service de noyau Xmattach . Le service de noyau Xmattach permet à un processus de noyau ou à une routine inférieure de l'unité d'accéder à la mémoire tampon utilisateur avec les services de noyau Xmemin ou Xmemout . Le pilote de périphérique doit utiliser le service de noyau Xmdetach pour informer le noyau lorsqu'il a fini d'accéder à la mémoire tampon de l'utilisateur.
Le noyau se souvient des segments qui sont attachés aux opérations de mémoire croisée. Les ressources associées à ces segments ne peuvent pas être libérées tant que tous les descripteurs de mémoire croisée n'ont pas été détachés. "Services de noyau de mémoire croisée" dans Memory Kernel Services in Dans Concepts de programmation de prise en charge des extensions et des périphériques du noyau décrit comment les services de noyau intermémoire utilisent des descripteurs de mémoire croisée.
La protection des clés de stockage peut être appliquée sur les régions de mémoire décrites par un descripteur de mémoire croisée. L'exécution est effectuée lors de la vérification d'accès normale effectuée par des services intermémoire, tels que le service de noyau Xmemdma . Un jeu de clés de noyau peut être contenu dans le descripteur de mémoire croisée pour limiter l'accessibilité de la mémoire. Lorsqu'un jeu de clés est associé à un descripteur de mémoire croisée, l'accès à la région de mémoire est limité par ce jeu de clés. Un jeu de clés est requis car un descripteur de mémoire croisée peut décrire une région de mémoire virtuelle avec plusieurs clés affectées aux pages qu'elle contient. Normalement, un jeu de clés décrit l'accessibilité du contexte pour lequel la connexion a été lancée. Par exemple, une mémoire croisée associée à un espace utilisateur contient une description de l'accessibilité en mode utilisateur (jeu de clés). L'ajout de jeux de clés à des descripteurs de mémoire croisée de noyau peut également améliorer le système RAS, car ils limitent l'accès au noyau par le descripteur de mémoire croisée. En général, il est limité à celui de l'appelant Xmattach ou à des clés spécifiques, pour intercepter les cas où un descripteur de mémoire croisée est mal utilisé.
Les clés de stockage en mode utilisateur sont toujours associées aux descripteurs associés à l'aide de ESPACE UTILISATEUR ou ESPACE USERIE_UR segflag. Ces indicateurs étaient toujours requis pour être attachés à l'espace adresse de l'utilisateur, donc aucune mise à jour explicite n'est nécessaire pour activer la protection de la clé de stockage sur les attachés de mémoire utilisateur. Une fois connecté, les services de noyau existants qui nécessitent des descripteurs de mémoire croisée font respecter le jeu de clés utilisateur enregistré lors de la connexion lors de l'exécution d'accès à la mémoire ou de la vérification de l'accessibilité des utilisateurs.
Pour la mémoire du noyau, un jeu de clés n'est pas utilisé pour restreindre les régions associées à ESPACE D'ADSPACE. L'association d'une région avec SYS_ADSPACE_ASSIGN_KEYSET associe le jeu de clés de l'appelant à la région de mémoire croisée.
Environnement d'exécution
Le service de noyau Xmattach peut être appelé à partir de Environnement de processus uniquement.
Valeurs renvoyées
| Article | Descriptif |
|---|---|
| SUCC. XMEM_MEC | Indique une opération réussie. |
| ECHEC DE XMEM_FAIL | Indique l'une des erreurs suivantes:
|