Service de noyau xmemdma
Objectif
Prépare une page pour les E/S d'accès direct à la mémoire (DMA) ou traite une page une fois que les E-S DMA sont terminées.
Syntaxe
Paramètres
| Article | Descriptif |
|---|---|
| Xp | Indique un descripteur de mémoire croisée. |
| Xaddr | Identifie l'adresse spécifiant la page de transfert. |
| option | Indique s'il faut préparer une page pour les E-S DMA ou le traiter une fois que les E-S DMA sont terminées. Les valeurs possibles sont les suivantes :
|
Descriptif
Le service de noyau Xmemdma fonctionne sur la page spécifiée par le paramètre Xaddr dans la région spécifiée par le descripteur de mémoire croisée. Si le descripteur de mémoire croisée est pour le noyau, le paramètre Xaddr spécifie une adresse de noyau. Sinon, le paramètre Xaddr indique le décalage dans la région décrite dans le descripteur de mémoire croisée.
Le service de noyau Xmemdma est fourni pour les machines qui possèdent des caches de mémoire de processeur, mais qui n'exécutent pas d'E-S DMA via le cache. Les gestionnaires d'unités pour les unités Micro Channel DMA utilisent le service D_maître et le service de noyau D_complet à la place du service de noyau Xmemdma .
Si le paramètre Indicateur indique CACHE_MÉMOIRE (c'est-à-dire que XMEM_UNHIDE n'est pas défini) et que c'est le premier masque de la page, le service de noyau Xmemdma prépare la page pour les E-S DMA en rinçant le cache et en rendant la page non valide. Lorsque le bit XMEM_UNHIDE est défini et qu'il s'agit de la dernière annulation de la page, les événements suivants ont lieu:
- La page est valide.
Si la page n'est pas dans l'état E-S du messager de poche:
- Tout processus en attente sur la page est réadié.
- Le bit modifié de la page est défini sauf si la page dispose d'une clé de stockage en lecture seule.
La page n'est pas valide pendant les opérations DMA de sorte qu'elle ne soit pas adressable avec une adresse virtuelle. Cela empêche tout processus de lecture ou de chargement d'une partie de la page dans le cache lors de l'opération DMA.
La page spécifiée doit être en mémoire et doit être réservée.
Si le bit XMEM_ACC_CHK est défini, le service de noyau Xmemdma vérifie également les droits d'accès à la page. Si l'accès à la page est en lecture seule, le bit XMEM_WRITE_ONLY doit être défini dans le paramètre Indicateur .
- Le service de noyau Xmemdma ne masque pas ou ne révèle pas la page et n'effectue pas de vidage de la mémoire cache. La fonction principale du service est la traduction d'adresse réelle.
- Ce service n'est pas pris en charge pour les systèmes de grande mémoire dont les adresses de mémoire physique sont supérieures à 4GB . Pour de tels systèmes, xmemdma64 doit être utilisé.
Environnement d'exécution
Le service de noyau Xmemdma peut être appelé à partir de l'environnement Processus ou Interruption .
Valeurs renvoyées
Une fois l'exécution terminée, le service Xmemdma renvoie l'adresse réelle correspondant aux paramètres Xaddr et Xp .
Codes d'erreur
Le service de noyau Xmemdma renvoie la valeur ECHEC DE XMEM_FAIL si l'une des valeurs suivantes est vraie:
- Le descripteur n'est pas valide.
- La page spécifiée par le paramètre Xaddr ou Xp n'est pas valide.
- Access n'est pas autorisé sur la page.