Go Back   Les systèmes UNIX et Linux Forums > Systèmes d'exploitation > Linux
.
Google Site



Linux RedHat, Ubuntu, SUSE, Fedora, Debian, Mandriva, Slackware, Gentoo linux, PCLinuxOS. Toutes les questions Linux ici!

Reply
English Japanese Spanish French German Portuguese Italian Powered by Powered by Google
 
Thread Tools Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 09-28-2009
a2156z
Guest
 

Messages: n / a
Bits: 0 [Banking]
défaillance de page manche

Pour copie zéro de la communication entre le processeur, j'ai alloué une piscine dans le noyau. Depuis l'espace utilisateur, elle mai mmap le dispositif de mémoire virtuelle dans l'espace utilisateur soit 0x80000000. le client mai envoyer un message au serveur, il demande mai un tampon, noyau va allouer un bloc pour elle et l'enregistrer dans la piscine. Après cela, le client (espace utilisateur) sera obtenu une adresse (qui a été traduit en l'espace d'adressage de l'utilisateur) par exemple: il sera 0x80003ffe4, le noyau va enregistrer le décalage 0x3ffe4 dans la piscine. Mais durant l'écriture de l'adresse de l'espace utilisateur 0x80003ffe4, je effectuer le suivi de la faute de mémoire poignée processus, j'ai eu la VMF-> virtual_address - VMA-> start \u003d 0x3f000, je suis le décalage 0x3f000 de trouver la page, en fait, le décalage n'est pas droit.
Alors, pourquoi est le décalage 0x3f000 autres que 0x3ffe4?

L'écoulement d'appel:

char * buf \u003d ipczalloc (6); / / buf \u003d 0x80003ffe4.
memcpy (buf, "12345", 5); / / entrera faute VMA manche


Le code ci-dessous:
ipcmem_vm_nopage static int (struct vm_area_struct * VMA, struct vm_fault * VMF)
(
unsigned long offset;
VMF-offset \u003d> virtual_address - VMA-> start;
printk ( "le décalage est x.% \ n", offset);
)

---------- Message mis à jour 09-28-09 à 12:52 am ---------- Mise à jour précédente a été 09-27-09 à 11:23 pm ----- -----

J'ai obtenu la réponse, puisque le noyau avant de faire l'erreur de page,
la vmf.virtual_address \u003d (__user void *) (adresse & PAGE_MASK)


PAGE_MASK \u003d ~ (0xFFF)

À partir du code source du noyau, il n'existe aucun moyen d'obtenir l'adresse d'utilisateur réel de gestionnaire faute VM.

Alors, y at-il préférable de régler cette situation?
Liens Sponsorisés
Reply

Bookmarks

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Hors tension
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Hors tension


Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
En haut Page et exécutables en page srage Solaris 9 11-17-2008 09:52 PM
Awk ne peut pas gérer plus de 30 fichiers HugoH UNIX pour les nuls Questions et réponses 3 10-20-2008 05:34 AM
lpr-faire pour imprimer à partir d'une page à naamas03 De programmation et de script Shell 4 12-26-2007 06:30 AM
Page Fault très élevé Ahmad Solaris 2 05-06-2006 04:54 PM
Les données de défaillance de page wobitu HP-UX 2 12-11-2003 09:19 AM



Toutes les heures sont au format GMT -4. Le temps est maintenant 06:00 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX et Linux Forums Copyright © 1993-2010. Tous droits Reserved.Ad Gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0