Man page - arm_fadvise64_64(2)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

posix_fadvise

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
VERSIONS
Différences entre bibliothÚque C et noyau
Variantes dĂ©pendantes de l’architecture
STANDARDS
HISTORIQUE
NOTES
BOGUES
VOIR AUSSI
TRADUCTION

NOM

posix_fadvise - PrĂ©dĂ©clarer des accĂšs aux donnĂ©es d’un fichier

BIBLIOTHÈQUE

BibliothĂšque C standard ( libc , -lc )

SYNOPSIS

#include <fcntl.h>

int posix_fadvise(int fd , off_t offset , off_t len , int advice );

Exigences de macros de test de fonctionnalités pour la glibc (consulter feature_test_macros (7)) :

posix_fadvise () :
_POSIX_C_SOURCE >= 200112L

DESCRIPTION

Les programmes peuvent utiliser posix_fadvise () pour annoncer leur intention d’accĂ©der aux donnĂ©es d’un fichier suivant un certain ordre, permettant ainsi au noyau de rĂ©aliser les optimisations appropriĂ©es.

L’indication advice s’applique Ă  une rĂ©gion (pas nĂ©cessairement existante) dĂ©butant Ă  offset et s’étendant sur len octets (ou jusqu’à la fin du fichier si len vaut zĂ©ro) dans le fichier rĂ©fĂ©rencĂ© par fd . L’indication advice n’oblige Ă  rien, il s’agit seulement d’une supposition concernant le comportement futur de l’application.

Les valeurs possibles pour advice incluent :
POSIX_FADV_NORMAL

Indique que l’application n’a pas d’indice particulier concernant les accĂšs aux donnĂ©es du fichier. Le noyau appliquera son comportement par dĂ©faut.

POSIX_FADV_SEQUENTIAL

L’application pense accĂ©der aux donnĂ©es sĂ©quentiellement (dans l’ordre des offsets croissants).

POSIX_FADV_RANDOM

Les accÚs se feront de maniÚre aléatoire.

POSIX_FADV_NOREUSE

Les donnĂ©es ne seront accĂ©dĂ©es qu’une seule fois.

Avant Linux 2.6.18, POSIX_FADV_NOREUSE avait la mĂȘme sĂ©mantique que POSIX_FADV_WILLNEED . Il s’agissait sans doute d’un bogue ; depuis Linux 2.6.18, cet attribut n’a aucun effet.

POSIX_FADV_WILLNEED

Les données seront accédées dans le futur proche.

POSIX_FADV_WILLNEED initie une lecture non bloquante de la rĂ©gion indiquĂ©e dans le cache. La quantitĂ© de donnĂ©es lues peut ĂȘtre diminuĂ©e suivant la charge mĂ©moire (quelques mĂ©gaoctets seront en gĂ©nĂ©ral disponibles et souvent suffisants).

POSIX_FADV_DONTNEED

Les données ne seront pas accédées dans le futur proche.

POSIX_FADV_DONTNEED essaye de libérer les pages de cache associées avec la région indiquée. Cela est utile par exemple lors du parcours de trÚs gros fichiers. Un programme peut ainsi demander réguliÚrement au noyau de libérer les pages déjà utilisées, pour éviter que des pages plus utiles ne soient éliminées à leur place.

Les requĂȘtes en dĂ©sactivation de pages partielles sont ignorĂ©es. Il vaut mieux prĂ©server que dĂ©sactiver les donnĂ©es nĂ©cessaires. Si l’application a besoin que les donnĂ©es soient considĂ©rĂ©es comme dĂ©sactivĂ©es, offset et len doivent ĂȘtre alignĂ©s sur la page.

L’implĂ©mentation peut essayer d’écrire a posteriori sur des pages dans la zone indiquĂ©e, mais ce n’est pas garanti. Les pages qui n’ont pas encore Ă©tĂ© Ă©crites ne seront pas libĂ©rĂ©es. Si une application veut s’assurer que les pages seront relĂąchĂ©es, elle devrait d’abord appeler fsync (2) ou fdatasync (2).

VALEUR RENVOYÉE

L’appel renvoie zĂ©ro s’il rĂ©ussit. S’il Ă©choue, il renvoie un code d’erreur.

ERREURS

EBADF

L’argument fd n’est pas un descripteur de fichier valable.

EINVAL

L’indication advice n’est pas valable.

ESPIPE

Le descripteur de fichier indiquĂ© correspond Ă  un tube ou une FIFO ( ESPIPE est l’erreur spĂ©cifiĂ©e par POSIX, mais avant Linux 2.6.16, Linux renvoyait EINVAL dans ce cas).

VERSIONS

Sous Linux, POSIX_FADV_NORMAL configure la fenĂȘtre de lecture anticipĂ©e Ă  sa taille par dĂ©faut pour le pĂ©riphĂ©rique concernĂ©. POSIX_FADV_SEQUENTIAL double cette taille et POSIX_FADV_RANDOM dĂ©sactive la lecture anticipĂ©e. Ces modifications affectent le fichier entier, pas seulement la rĂ©gion indiquĂ©e (mais les autres descripteurs ouverts sur le mĂȘme fichier ne sont pas modifiĂ©s).

Différences entre bibliothÚque C et noyau

Le nom de la fonction enveloppe dans la bibliothĂšque C est posix_fadvise (). L’appel systĂšme sous-jacent s’appelle fadvise64 () (ou, sur certaines architectures, fadvise64_64 ()) ; la diffĂ©rence entre les deux est que l’ancien appel systĂšme suppose que le type du paramĂštre len est size_t , tandis que le dernier attend loff_t .

Variantes dĂ©pendantes de l’architecture

Certaines architectures nĂ©cessitent que les paramĂštres 64 bits soient alignĂ©s dans une paire de registres adĂ©quate (consultez syscall (2) pour plus de renseignements). Sur ces architectures, la signature d’appel de posix_fadvise () indiquĂ©e dans le SYNOPSIS imposerait le gaspillage d’un registre de remplissage entre les paramĂštres fd et offset . Pour cette raison, ces architectures dĂ©finissent un appel systĂšme diffĂ©rent qui rĂ©ordonne correctement les paramĂštres, mais qui est sinon strictement similaire Ă  posix_fadvise ().

Par exemple, depuis Linux 2.6.14, l’architecture ARM utilise l’appel systùme suivant :

long arm_fadvise64_64(int fd , int advice ,
loff_t
offset , loff_t len );

Ces dĂ©tails dĂ©pendants de l’architecture sont gĂ©nĂ©ralement invisibles des applications grĂące Ă  la glibc et sa fonction d’enrobage posix_fadvise () qui utilise l’appel systĂšme adaptĂ© Ă  l’architecture.

STANDARDS

POSIX.1-2008.

HISTORIQUE

POSIX.1-2001.

Le noyau est d’abord apparue dans Linux 2.5.60 ; l’appel systĂšme sous-jacent est appelĂ© fadvise64 (). La prise en charge dans l’espace utilisateur est disponible depuis la glibc 2.2, Ă  travers la fonction posix_fadvise ().

Depuis Linux 3.18, la gestion de l’appel systùme sous-jacent est facultative, selon le positionnement de l’option de configuration CONFIG_ADVISE_SYSCALLS .

Le type du paramÚtre len a été modifié de size_t en off_t dans la spécification POSIX.1-2001 TC1.

NOTES

Le contenu du cache du tampon du noyau peut ĂȘtre vidĂ© Ă  l’aide de l’interface /proc/sys/vm/drop_caches dĂ©crite dans proc (5).

On peut obtenir un instantanĂ© des pages d’un fichier rĂ©sidentes dans le cache du tampon en ouvrant un fichier, en le projetant avec mmap (2) et en appliquant mincore (2) Ă  la projection.

BOGUES

Avant Linux 2.6.6, si le paramĂštre len Ă©tait 0 , la valeur Ă©tait interprĂ©tĂ©e comme « zĂ©ro octets » et non comme « tous les octets jusqu’à la fin du fichier ».

VOIR AUSSI

fincore (1), mincore (2), readahead (2), sync_file_range (2), posix_fallocate (3), posix_madvise (3)

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Philippe MENGUAL <jpmengual@debian.org>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .