.\" -*- coding: UTF-8 -*- .\" Copyright 2003 Abhijit Menon-Sen .\" and Copyright (C) 2010, 2015, 2017 Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" 2005-04-08 mtk, noted kernel version and added BUGS .\" 2010-10-09, mtk, document arm_fadvise64_64() .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH posix_fadvise 2 "2 mai 2024" "Pages du manuel de Linux 6.8" .SH NOM posix_fadvise \- Prédéclarer des accès aux données d'un fichier .SH BIBLIOTHÈQUE Bibliothèque C standard (\fIlibc\fP, \fI\-lc\fP) .SH SYNOPSIS .nf \fB#include \fP .P \fBint posix_fadvise(int \fP\fIfd\fP\fB, off_t \fP\fIoffset\fP\fB, off_t \fP\fIlen\fP\fB, int \fP\fIadvice\fP\fB);\fP .fi .P .ad l .RS -4 Exigences de macros de test de fonctionnalités pour la glibc (consulter \fBfeature_test_macros\fP(7)) : .RE .P \fBposix_fadvise\fP()\ : .nf _POSIX_C_SOURCE >= 200112L .fi .SH DESCRIPTION Les programmes peuvent utiliser \fBposix_fadvise\fP() 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. .P L'indication \fIadvice\fP s'applique à une région (pas nécessairement existante) débutant à \fIoffset\fP et s'étendant sur \fIlen\fP octets (ou jusqu'à la fin du fichier si \fIlen\fP vaut zéro) dans le fichier référencé par \fIfd\fP. L'indication \fIadvice\fP n'oblige à rien, il s'agit seulement d'une supposition concernant le comportement futur de l'application. .P Les valeurs possibles pour \fIadvice\fP incluent\ : .TP \fBPOSIX_FADV_NORMAL\fP 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. .TP \fBPOSIX_FADV_SEQUENTIAL\fP L'application pense accéder aux données séquentiellement (dans l'ordre des offsets croissants). .TP \fBPOSIX_FADV_RANDOM\fP Les accès se feront de manière aléatoire. .TP \fBPOSIX_FADV_NOREUSE\fP Les données ne seront accédées qu'une seule fois. .IP Avant Linux 2.6.18, \fBPOSIX_FADV_NOREUSE\fP avait la même sémantique que \fBPOSIX_FADV_WILLNEED\fP. Il s'agissait sans doute d'un bogue\ ; depuis Linux 2.6.18, cet attribut n'a aucun effet. .TP \fBPOSIX_FADV_WILLNEED\fP Les données seront accédées dans le futur proche. .IP \fBPOSIX_FADV_WILLNEED\fP 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). .TP \fBPOSIX_FADV_DONTNEED\fP Les données ne seront pas accédées dans le futur proche. .IP \fBPOSIX_FADV_DONTNEED\fP 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. .IP 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, \fIoffset\fP et \fIlen\fP doivent être alignés sur la page. .IP L'implémentation \fIpeut\fP essayer d'écrire \fIa posteriori\fP 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 \fBfsync\fP(2) ou \fBfdatasync\fP(2). .SH "VALEUR RENVOYÉE" L'appel renvoie zéro s'il réussit. S'il échoue, il renvoie un code d'erreur. .SH ERREURS .TP \fBEBADF\fP L'argument \fIfd\fP n'est pas un descripteur de fichier valable. .TP \fBEINVAL\fP L'indication \fIadvice\fP n'est pas valable. .TP \fBESPIPE\fP .\" commit 87ba81dba431232548ce29d5d224115d0c2355ac Le descripteur de fichier indiqué correspond à un tube ou une FIFO (\fBESPIPE\fP est l'erreur spécifiée par POSIX, mais avant Linux 2.6.16, Linux renvoyait \fBEINVAL\fP dans ce cas). .SH VERSIONS Sous Linux, \fBPOSIX_FADV_NORMAL\fP configure la fenêtre de lecture anticipée à sa taille par défaut pour le périphérique concerné. \fBPOSIX_FADV_SEQUENTIAL\fP double cette taille et \fBPOSIX_FADV_RANDOM\fP 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). .SS "Différences entre bibliothèque C et noyau" Le nom de la fonction enveloppe dans la bibliothèque C est \fBposix_fadvise\fP(). L'appel système sous\-jacent s'appelle \fBfadvise64\fP() (ou, sur certaines architectures, \fBfadvise64_64\fP()) ; la différence entre les deux est que l'ancien appel système suppose que le type du paramètre \fIlen\fP est \fIsize_t\fP, tandis que le dernier attend \fIloff_t\fP. .SS "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 \fBsyscall\fP(2) pour plus de renseignements). Sur ces architectures, la signature d'appel de \fBposix_fadvise\fP() indiquée dans le SYNOPSIS imposerait le gaspillage d'un registre de remplissage entre les paramètres \fIfd\fP et \fIoffset\fP. 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 à \fBposix_fadvise\fP(). .P Par exemple, depuis Linux 2.6.14, l'architecture ARM utilise l'appel système suivant : .P .in +4n .EX \fBlong arm_fadvise64_64(int \fP\fIfd\fP\fB, int \fP\fIadvice\fP\fB,\fP \fB loff_t \fP\fIoffset\fP\fB, loff_t \fP\fIlen\fP\fB);\fP .EE .in .P Ces détails dépendants de l'architecture sont généralement invisibles des applications grâce à la glibc et sa fonction d'enrobage \fBposix_fadvise\fP() qui utilise l'appel système adapté à l'architecture. .SH STANDARDS POSIX.1\-2008. .SH HISTORIQUE POSIX.1\-2001. .P .\" of fadvise64_64() Le noyau est d'abord apparue dans Linux 2.5.60 ; l'appel système sous\-jacent est appelé \fBfadvise64\fP(). La prise en charge dans l'espace utilisateur est disponible depuis la glibc 2.2, à travers la fonction \fBposix_fadvise\fP(). .P .\" commit d3ac21cacc24790eb45d735769f35753f5b56ceb Depuis Linux 3.18, la gestion de l'appel système sous\-jacent est facultative, selon le positionnement de l'option de configuration \fBCONFIG_ADVISE_SYSCALLS\fP. .P Le type du paramètre \fIlen\fP a été modifié de \fIsize_t\fP en \fIoff_t\fP dans la spécification POSIX.1\-2001 TC1. .SH NOTES Le contenu du cache du tampon du noyau peut être vidé à l'aide de l'interface \fI/proc/sys/vm/drop_caches\fP décrite dans \fBproc\fP(5). .P 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 \fBmmap\fP(2) et en appliquant \fBmincore\fP(2) à la projection. .SH BOGUES Avant Linux 2.6.6, si le paramètre \fIlen\fP était \fB0\fP, la valeur était interprétée comme «\ zéro octets\ » et non comme «\ tous les octets jusqu'à la fin du fichier\ ». .SH "VOIR AUSSI" \fBfincore\fP(1), \fBmincore\fP(2), \fBreadahead\fP(2), \fBsync_file_range\fP(2), \fBposix_fallocate\fP(3), \fBposix_madvise\fP(3) .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot et Jean-Philippe MENGUAL . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .