Date création : 27-03-2008 20:23:44
 Vous êtes dans : GNU/Linux Astuces / Pages man [Section3 - Sous-fonctions]
POSIX_MEMALIGN
Index
- NOM
- SYNOPSIS
- DESCRIPTION
- VALEUR RENVOYÉE
- ERREURS
- NOTES
- DISPONIBILITÉ
- CONFORMITÉ
- ENTÊTES
- VOIR AUSSI
- TRADUCTION
NOM
posix_memalign, memalign, valloc - Allocation de mémoire alignée.
SYNOPSIS
#define _XOPEN_SOURCE 600
#include <stdlib.h>
int posix_memalign(void **memptr, size_t alignment, size_t size);
#include <malloc.h>
void *valloc(size_t size);
void *memalign(size_t boundary, size_t size);
DESCRIPTION
La fonction posix_memalign() alloue size octets et place l'adresse de
la mémoire allouée dans *memptr. L'adresse de la mémoire allouée est un
multiple de alignment, qui doit lui même être une puissance de deux et un
multiple de sizeof(void *).
La fonction obsolète memalign() alloue size octets et renvoie un
pointeur vers la mémoire allouée. L'adresse mémoire est alors un multiple de
boundary, qui doit être une puissance de deux.
La fonction obsolète valloc() alloue size octets et renvoie un
pointeur vers la mémoire allouée. L'adresse mémoire est alors un multiple de
la taille de page. Cette fonction est équivalente à
memalign(sysconf(_SC_PAGESIZE),size).
Pour ces trois routines, la mémoire n'est pas initialisée à zéro.
VALEUR RENVOYÉE
memalign() et valloc() renvoient un pointeur sur la mémoire allouée,
ou bien NULL si la requête échoue.
posix_memalign() renvoie zéro en cas de succès, ou l'une des valeurs
d'erreurs répertoriées dans la section suivante en cas d'échec. Notez que
errno n'est pas affectée par cette fonction.
ERREURS
- EINVAL
-
Le paramètre alignment n'est pas une puissance de deux, ou n'est pas un
multiple de sizeof(void *).
- ENOMEM
-
Mémoire insuffisante pour réaliser la demande d'allocation.
NOTES
Il y a des restrictions d'alignement sur beaucoup de systèmes, par exemple
sur les tampons utilisés pour les entrées-sorties directes des périphériques
de bloc. POSIX spécifie que l'appel pathconf(path,_PC_REC_XFER_ALIGN)
indique quel alignement est nécessaire. On peut à présent utiliser
posix_memalign() pour satisfaire cette condition.
posix_memalign() vérifie qu'alignment répond bien aux exigences
détaillées ci-dessus. memalign() est susceptible de ne pas contrôler que
le paramètre boundary est correct.
La norme POSIX impose que la mémoire obtenue par un appel à
posix_memalign() puisse être libérée en utilisant free(). Certains
systèmes ne fournissent aucun moyen de libérer la mémoire allouée par
memalign() ou valloc() (parce que l'on peut seulement passer comme
paramètre à free() un pointeur obtenu via malloc(), alors que, par
exemple, memalign() pourrait appeler malloc() et aligner par la suite
la valeur obtenue). La libc GNU permet de libérer la mémoire obtenue par
n'importe laquelle de ces trois fonctions par appel à free().
La version libc GNU de malloc() renvoie toujours des adresses mémoire
alignées sur 8 octets, ainsi ces routines ne sont nécessaires qu'en cas de
besoin de valeurs d'alignement plus grandes.
DISPONIBILITÉ
Les fonctions memalign() et valloc() sont disponibles dans toutes les
bibliothèques libc de Linux. La fonction posix_memalign() est disponible
depuis la glibc 2.1.91.
CONFORMITÉ
La fonction valloc() est apparue dans BSD 3.0. Elle est qualifiée
d'obsolète dans BSD 4.3, et d'historique dans SUSv2. Elle n'apparaît pas
dans POSIX.1-2001. La fonction memalign() est apparue dans SunOS 4.1.3
mais pas dans BSD 4.4. La fonction posix_memalign() provient de
POSIX.1d.
ENTÊTES
Tout le monde est d'accord que posix_memalign() est déclaré dans
<stdlib.h>. Pour la déclarer, la glibc a besoin que _GNU_SOURCE soit
définie, ou que _XOPEN_SOURCE soit définie à une valeur qui ne soit pas plus
petite que 600.
Sur certains systèmes, memalign() est déclaré dans <stdlib.h> au
lieu de <malloc.h>.
Conformément à SUSv2, valloc() est déclaré dans
<stdlib.h>. Libc4,5 et glibc le déclarent dans <malloc.h> et
peut-être également dans <stdlib.h> (à savoir, si _GNU_SOURCE est
définie, ou _BSD_SOURCE est définie, ou, pour glibc, si
_XOPEN_SOURCE_EXTENDED est définie, ou, de manière équivalente,
_XOPEN_SOURCE est définie à une valeur qui n'est pas plus petite que 500).
VOIR AUSSI
brk(2), getpagesize(2), free(3), malloc(3),
feature_test_macros(7)
TRADUCTION
Cette page de manuel a été traduite par
Stéphan Rafin <stephan DOT rafin AT laposte DOT net> en 2002,
puis a été mise à jour par
Alain Portal <aportal AT univ-montp2 DOT fr> jusqu'en 2006.
La traduction de cette page de manuel est basée sur les traductions
disponibles sur http://manpagesfr.free.fr/,
mais est gérée par l'équipe francophone de traduction de Debian
au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction par un rapport de bogue sur
le paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document en
utilisant la commande
« man -L C <section> <page_de_man> ».
|