Service de noyau xm_mapin
Objectif
Définit l'adressabilité dans le contexte de processus en cours.
Syntaxe
#include <sys/adspace.h>
int xm_mapin (dp, baddr, count, eaddr)
struct xmem *dp;caddr_t baddr;
size_t count;
caddr_t *eaddr;
Descriptif
Le service de noyau Xm_mapin configure l'adressabilité dans le contexte de processus en cours par rapport à l'espace adresse indiqué par le descripteur de mémoire croisée désigné par le paramètre Dp pour les adresses [Baddr, Baddr + Nombre -1 ].
Ce service est créé spécifiquement pour les systèmes de fichiers client, ou d'autres personnes qui ont besoin de configurer l'adressabilité pour un espace adresse défini par un descripteur xmem.
Si le mappage demandé s'étend sur une limite de segment, aucun mappage ne sera effectué et un code retour ENCORE UNE FOIS est renvoyé pour indiquer que des appels individuels au service de noyau Xm_mapin sont nécessaires pour mapper les portions de la mémoire tampon dans chaque segment. Le service de noyau Xm_mapin doit être appelé à nouveau avec l'original Baddr et un Nombre indiquant le nombre d'octets au segment suivant. (Le nombre d'octets à la limite de segment suivante peut être obtenu à l'aide du service de noyau xm_maxmap .) Ceci fournira une adresse effective à utiliser pour accéder à cette partie de la mémoire tampon. Ensuite, de manière itérative, Xm_mapin doit être appelé avec l'adresse de limite de segment ( Baddr + Nombreprécédente) et un nouveau Nombre indiquant le reste de la mémoire tampon ou la limite du segment suivant, la valeur la plus faible étant retenue. Ceci fournira une autre adresse effective à utiliser pour accéder à la partie suivante de la mémoire tampon.
Chaque adresse définie par le service de noyau Xm_mapin doit être défaite avec le service de noyau Xm_det lorsqu'elle n'est plus nécessaire car le service de noyau Xm_mapin utilise actuellement le service de noyau Vm_att .
Paramètres
| Article | Descriptif |
|---|---|
| dp | Pointe vers le descripteur de mémoire croisée. |
| Baddr | Pointe vers la mémoire tampon virtuelle. |
| count | Indique la longueur de la mémoire tampon virtuelle à mapper. |
| Eaddr | Pointe vers où l'adresse effective pour accéder à la mémoire tampon de données est renvoyée. |
Valeurs renvoyées
| Article | Descriptif |
|---|---|
| 0 % | . (Le paramètre de référence Eaddr contient l'adresse à utiliser) |
| ECHEC DE XMEM_FAIL | Descripteur de mémoire croisée non valide. |
| ENCORE UNE FOIS | Le point de croisement du segment a été détecté. L'appelant doit effectuer des appels Xm_mapin distincts pour mapper chaque segment d'une valeur. |
Environnement d'exécution
Le service de noyau Xm_mapin peut être appelé à partir du processus ou des environnements d'interruption.