Je suis confus par le specification of mmap.alignement et granularité de mmap
Let pa
être l'adresse de retour de mmap (la même que la spécification)
pa = mmap (ADDR, len, flags, Prot, fildes, OFF);
À mon avis, après l'appel de fonction réussir la plage suivante est valable
[pa, pa + len)
Ma question est de savoir si la portée de ce qui suit est toujours valide?
[round_down (pa, pagesize), round_up (pa + len, pagesize))
[base, base + size] pour faire court
C'est-à-dire:
- est le
base
toujours aligné sur la limite de la page? - le
size
est-il toujours un multiple de la taille de la page (la granularité est la taille de la page en d'autres termes)?
Merci pour votre aide.
Je pense qu'il est impliqué dans ce paragraphe:
Le hors argument est contraint d'être aligné et dimensionné en fonction de la valeur retournée par sysconf() lorsqu'il est passé _SC_PAGESIZE ou _SC_PAGE_SIZE. Lorsque MAP_FIXED est spécifié, l'application doit s'assurer que l'argument addr répond également à ces contraintes. L'implémentation effectue des opérations de mappage sur des pages entières. Ainsi, alors que l'argument len n'a pas besoin de respecter une contrainte de taille ou d'alignement, l'implémentation doit inclure, dans toute opération de mappage, toute page partielle spécifiée par l'intervalle [pa, pa + len).
Mais je ne suis pas sûr et je n'ai pas beaucoup d'expérience sur POSIX.
- S'il vous plaît me montrer un peu plus explicite et plus preuve définitive
- Ou me montrer au moins un système qui prend en charge POSIX et a un comportement différent
Merci planifions.