Se connecter
Se connecter
Inscription
Mot de passe perdu
Connexion:
[Actualités]
Test Morsels (PS5) - Un mélange étrange de rogue-like, de collecte de créa...
[Actualités]
Suite à l'augmentation du prix du Game Pass, Microsoft offre de l'argent aux jo...
[Actualités]
Le NVIDIA chinois, fait son entrée en bourse. Les cartes graphiques à plus de ...
[Actualités]
La PS5 Pro recevra une mise à jour majeure « PSSR 2 » avec une super-résolut...
[Actualités]
Netflix va racheter Warner Bros. et HBO Max pour 82,7 milliards de dollars
[Actualités]
Intel suspend la vente d'une division clé à la dernière minute
[Actualités]
Nouvelle panne de Cloudflare. La moitié d'Internet est à nouveau hors service.
[Actualités]
L'iPhone Air a perdu la moitié de son prix en dix semaines.
[Actualités]
007 First Light - Découvrez le premier épisode de "Beyond the Light"
[Actualités]
Test Bus World (Xbox Series X) - Conduisez un bus dans des situations périlleuses
[Articles]
Morsels
[Articles]
Bus World
[Articles]
Trillion Game tome 10
[Articles]
Sonic Wings Reunion
[Articles]
Eclipse humaine tome 5
[Articles]
Plus de la moitié des informaticiens belges subissent une charge de travail sup...
[Articles]
L’iranien MuddyWater se fait passer pour Snake et vise des infrastructures en ...
[Articles]
Les nouvelles aventures de Barbe-Rouge tome 5 : L'Île aux Chimères
[Articles]
Marry My Husband tome 1 édition collector
[Articles]
Neon Inferno
Actualités
Lettre d'information
Proposer une actualité
Archives
Actualités
Articles
Programmation
Press Release
Matériel
Logiciels
Livres
Interviews
Derniers commentaires
Jeux Vidéos
XBox One
XBox 360
Wii U
PSP
PS4
PS3
PC
DS
GameCube
3DS
Forum
Derniers messages
Informatique
Fun
Divers
Logithèque
Blogs
Divers
A Propos
Annonceurs
Contact
Recherche
RSS
Editer un article
Titre
Mots Clés
Texte
[size=18] [b]Nom[/b] [/size] mmap, munmap - Établir / supprimer une projection en mémoire (map / unmap) des fichiers ou des périphériques. [size=18] [b]Résumé[/b] [/size] [b]#include
[/b] [b]#ifdef _POSIX_MAPPED_FILES[/b] [b][i]void * mmap(void * start , size_t length , int prot[/i][/b] [b][i], int flags , int fd , off_t offset );[/i][/b] [b][i]int munmap(void * start , size_t length );[/i][/b] [b]#endif[/b] [size=18] [b]Description[/b] [/size] La fonction [b]mmap[/b] demande la projection en mémoire de [i]length[/i] octets commençant à la position [i]offset[/i] depuis un fichier (ou un autre objet) indiqué par le descripteur [i]fd,[/i] de préférence à l'adresse pointée par [b]start.[/b] Cette adresse n'est qu'une préférence, généralement 0. La véritable adresse où l'objet est projeté est renvoyée par la fonction [b]mmap ,[/b] et n'est jamais nulle. L'argument [i]prot[/i] indique la protection que l'on désire pour cette zone de mémoire, et ne doit pas entrer en conflit avec le mode d'ouverture du fichier. Il s'agit soit de [b]PROT_NONE[/b] (le contenu de la mémoire est inaccessible) soit d'un OU binaire entre les constantes suivantes : [b]PROT_EXEC[/b] [table][row][col] [/col][col]On peut exécuter du code dans la zone mémoire.[/col][/row][/table] [b]PROT_READ[/b] [table][row][col] [/col][col]On peut lire le contenu de la zone mémoire[/col][/row][/table] [b]PROT_WRITE[/b] [table][row][col] [/col][col]On peut écrire dans la zone mémoire.[/col][/row][/table] [b]PROT_NONE[/b] [table][row][col] [/col][col]Les pages ne peuvent pas être accédées.[/col][/row][/table] Le paramètre [i]flags[/i] indique le type de fichier projeté, les options de projection, et si les modifications faites sur la portion projetée sont privées ou doivent être partagées avec les autres références. Les options sont : [b]MAP_FIXED[/b] [table][row][col] [/col][col]N'utiliser que l'adresse indiquée. Si c'est impossible, [b]mmap[/b] échouera. Si MAP_FIXED est spécifié [i]start[/i] doit être un multiple de la longueur de page. Il est déconseillé d'utiliser cette option.[/col][/row][/table] [b]MAP_SHARED[/b] [table][row][col] [/col][col]Partager la projection avec tout autre processus utilisant l'objet. L'écriture dans la zone est équivalente à une écriture dans le fichier. En revanche ce dernier n'est pas nécessairement mis à jour tant qu'on n'a pas appelé [b]msync (2)[/b] ou [b]munmap (2).[/b][/col][/row][/table] [b]MAP_PRIVATE[/b] [table][row][col] [/col][col]Créer une projection privée, utilisant la méthode de copie à l'écriture. L'écriture dans la zone ne modifie pas le fichier. Il n'est pas précisé si les changements effectués dans le fichier après l'appel [b]mmap[/b] seront visibles.[/col][/row][/table] Vous devez indiquer soit MAP_SHARED, soit MAP_PRIVATE. Les trois attributs ci-dessus sont décrits dans POSIX.1b (anciennement POSIX.4) et SUSv2. Linux propose également des attributs non standards : [b]MAP_DENYWRITE[/b] [table][row][col] [/col][col]Cet attribut est ignoré. (Autrefois, une tentative d'écriture dans le fichier sous-jacent échouait avec l'erreur ETXTBUSY. Mais ceci permettait des attaques de déni de service).[/col][/row][/table] [b]MAP_EXECUTABLE[/b] [table][row][col] [/col][col]Cet attribut est ignoré.[/col][/row][/table] [b]MAP_NORESERVE[/b] [table][row][col] [/col][col](Utilisé conjointement à MAP_PRIVATE). Ne pas réserver d'espace de swap pour les pages de cette projection. Une telle réservation garantit que l'on puisse modifier les zones soumises à une copie-en-écriture. Sans réservation, on peut recevoir un signal SIGSEGV durant une écriture, s'il n'y a plus de place disponible.[/col][/row][/table] [b]MAP_LOCKED[/b] [table][row][col] [/col][col](Depuis Linux 2.5.37) Verrouille la page projetée en mémoire à la manière de [b]mlock() .[/b] Cet attribut est ignoré sur les noyaux plus anciens.[/col][/row][/table] [b]MAP_GROWSDOWN[/b] [table][row][col] [/col][col]Utilisé pour les piles. Indique au système de gestion de la mémoire virtuelle que la projection doit s'étendre en croissant vers le bas de la mémoire.[/col][/row][/table] [b]MAP_ANONYMOUS[/b] [table][row][col] [/col][col]La projection n'est supportée par aucun fichier. Les arguments [i]fd[/i] et [i]offset[/i] sont ignorés. Cet attributs, utilisé en conjonction de MAP_SHARE est implémenté depuis Linux 2.4.[/col][/row][/table] [b]MAP_ANON[/b] [table][row][col] [/col][col]Alias de MAP_ANONYMOUS. Déconseillé.[/col][/row][/table] [b]MAP_FILE[/b] [table][row][col] [/col][col]Attribut pour compatibilité. Ignoré.[/col][/row][/table] [b]MAP_32BIT[/b] [table][row][col] [/col][col]Faire la projection dans les premiers 2Go de l'espace d'adressage du processus. Ignoré si [i]MAP_FIXED[/i] est présent. Cet attribut n'est supporté que sur x86-64 pour les programmes 64-bits.[/col][/row][/table] Certains systèmes utilisent les attributs supplémentaires MAP_AUTOGROW, MAP_AUTORESRV, MAP_COPY, and MAP_LOCAL. [i]fd[/i] doit être un descripteur de fichier valide, sauf si on utilise MAP_ANONYMOUS, auquel cas cet argument est ignoré. L'argument [i]offset[/i] doit normalement être un multiple de la taille de page renvoyée par l'appel [b]getpagesize (2).[/b] La mémoire obtenue par [b]mmap[/b] est préservée lors d'un [b]fork (2),[/b] avec les même attributs. La projection doit avoir une taille multiple de celle des pages. Pour un fichier dont la longueur n'est pas un multiple de la taille de page, la mémoire restante est remplie de zéros lors de la projection, et les écritures dans cette zone n'affectent pas le fichier. Les effets de la modification de la taille du fichier sous-jacent sur les pages correspondant aux zones ajoutées ou supprimées ne sont pas précisés. L'appel-système [b]munmap[/b] détruit la projection dans la zone de mémoire spécifiée, et s'arrange pour que toute référence ultérieure à cette zone mémoire déclenche une erreur d'adressage. La projection est aussi automatiquement détruite lorsque le processus se termine. À l'inverse, la fermeture du descripteur de fichier ne supprime pas la projection. L'adresse [i]start[/i] doit être un multiple de la taille de page. Tous les pages contenant une partie de l'intervalle indiquées sont libérées, et tout accès ultérieur déclenchera SIGSEGV. Aucune erreur n'est détectée si l'intervalle indiqué ne contient pas de page projetée. Pour les projections supportées par un fichier, le champ [b]st_atime[/b] du fichier peut être mis à jour à tout moment entre l'appel [b]mmap()[/b] et le munmap() correspondant. Le premier accès dans la page projetée mettra le champ à jour si ce n'a pas été déjà fait. Les champs [b]st_ctime[/b] et [b]st_mtime[/b] pour un fichier projeté avec PROT_WRITE et MAP_SHARED seront mis à jour après une écriture dans la région projetée, et avant l'éventuel [i]msync()[/i] suivant avec attribut MS_SYNC ou MS_ASYNC. [size=18] [b]Valeur renvoyée[/b] [/size] [b]mmap[/b] renvoie un pointeur sur la zone de mémoire, s'il réussit. En cas d'échec il retourne MAP_FAILED (-1) et [i]errno[/i] contient le code d'erreur. [b]munmap[/b] renvoie 0 s'il réussit. En cas d'échec -1 est renvoyé et [i]errno[/i] contient le code d'erreur (probablement EINVAL). [size=18] [b]Notes[/b] [/size] Suivant l'architecture [i]PROT_READ[/i] peut include [i]PROT_EXEC[/i] ou non. Les programmes portables doivent toujours indiquer [i]PROT_EXEC[/i] s'ils veulent exécuter du code dans la projection. [size=18] [b]Erreurs[/b] [/size] [b]EBADF[/b] [i]fd[/i] [table][row][col] [/col][col]n'est pas un descripteur de fichier valide (et MAP_ANONYMOUS n'était pas précisé).[/col][/row][/table] [b]EACCES[/b] [table][row][col] [/col][col]Le descripteur ne correspond pas à un fichier normal, ou on demande une projection privée MAP_PRIVATE mais [i]fd[/i] n'est pas ouvert en lecture, ou on demande une projection partagée MAP_SHARED avec protection PROT_WRITE, mais [i]fd[/i] n'est pas ouvert en lecture et écriture (O_RDWR). Ou encore PROT_WRITE est demandé, mais le fichier est ouvert en ajout seulement.[/col][/row][/table] [b]EINVAL[/b] [i]start[/i] [table][row][col] [/col][col]ou [i]length[/i] ou [b]offset [/b] sont invalides. (par exemple : zone trop grande, ou non alignée sur une frontière de page).[/col][/row][/table] [b]ETXTBSY[/b] [table][row][col] [/col][col]MAP_DENYWRITE a été réclamé mais [i]fd[/i] est ouvert en écriture[/col][/row][/table] [b]EAGAIN[/b] [table][row][col] [/col][col]Le fichier est verrouillé, ou trop de pages ont été verrouillées en mémoire.[/col][/row][/table] [b]ENOMEM[/b] [table][row][col] [/col][col]pas assez de mémoire, ou le nombre maximal de projection par processus a été dépassé.[/col][/row][/table] [b]ENODEV[/b] [table][row][col] [/col][col]Le système de fichiers sous-jacent ne supporte pas la projection en mémoire.[/col][/row][/table] L'accès à une zone de projection peut déclencher les signaux suivants : [b]SIGSEGV[/b] [table][row][col] [/col][col]Tentative d'écriture dans une zone en lecture seule[/col][/row][/table] [b]SIGBUS[/b] [table][row][col] [/col][col]Tentative d'accès à une portion de la zone qui ne correspond pas au fichier (par exemple après la fin du fichier, y compris lorsqu'un autre fichier l'a tronqué).[/col][/row][/table] [size=18] [b]Conformité[/b] [/size] SVr4, POSIX.1b (anciennement POSIX.4), BSD 4.4, SUSv2. SVr4 documente les codes d'erreur supplémentaires ENXIO et ENODEV. SUSv2 documente les codes d'erreur supplémentaires EMFILE et EOVERFLOW. [i]MAP_32BIT[/i] est une extension Linux. [size=18] [b]Voir aussi[/b] [/size] [b]getpagesize (2),[/b] [b]mlock (2),[/b] [b]mmap2 (2),[/b] [b]mremap (2),[/b] [b]msync (2),[/b] [b]shm_open (2),[/b] B.O. Gallmeister, POSIX.4, O'Reilly, pp. 119-124 et 365-369. [size=18] [b]Traduction[/b] [/size] Christophe Blaess, 1996-2003.
Fichier
Forum
-
Derniers messages
Bavardages
Aujourd'hui, je rénove ou je construis ^^
Informations
Besoin d’avis sur l’UX de mon mini-projet web (et plus globalement sur ce qui vous rebute sur un site) ?
Software
problème sur windows 10
Réseaux et Télécom
Problème wifi (POE)
Software
Postfix - Need help
Bavardages
Oh râge oh désespoir !
Programmation
Enregistrement client et envoi mail
Software
SÉCURITÉ MACBOOK
Hardware
conseil matos réseau?
Hardware
nVidia Shield Android TV
Actualités
-
Archives
Jeux Vidéos
Test Morsels (PS5) - Un mélange étrange de rogue-like, de collecte de créatures et de twin-stick shooter
Microsoft
Suite à l'augmentation du prix du Game Pass, Microsoft offre de l'argent aux joueurs.
Matériel
Le NVIDIA chinois, fait son entrée en bourse. Les cartes graphiques à plus de 30 cœurs pourraient bientôt alimenter le monde entier.
Consoles
La PS5 Pro recevra une mise à jour majeure « PSSR 2 » avec une super-résolution multi-images en 2026
Vidéo
Netflix va racheter Warner Bros. et HBO Max pour 82,7 milliards de dollars
Ada
CSS
Cobol
CPP
HTML
Fortran
Java
JavaScript
Pascal
Perl
PHP
Python
SQL
VB
XML
Anon URL
DailyMotion
eBay
Flickr
FLV
Google Video
Google Maps
Metacafe
MP3
SeeqPod
Veoh
Yahoo Video
YouTube
6px
8px
10px
12px
14px
16px
18px
Informaticien.be
- © 2002-2025
Akretio
SPRL - Generated via
Kelare
The Akretio Network:
Akretio
-
Freedelity
-
KelCommerce
-
Votre publicité sur informaticien.be ?