ioctl_userfaultfd(2) System Calls Manual ioctl_userfaultfd(2) NOM ioctl_userfaultfd - Creer un descripteur de fichier pour gerer les erreurs de pagination dans l'espace utilisateur BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include /* Definition des constantes UFFD* */ #include int ioctl(int fd, int cmd, ...); DESCRIPTION Diverses operations ioctl(2) peuvent etre effectuees sur un objet userfaultfd (cree par un appel a userfaultfd(2)) en utilisant des appels sous la forme : ioctl(fd, cmd, argp); Dans ce qui precede, fd est un descripteur de fichier se rapportant a un objet userfaultfd, cmd etant une des commandes ci-dessous et argp etant un pointeur vers une structure de donnees specifique a cmd. Les operations ioctl(2) sont decrites ci-dessous. Celles UFFDIO_API, UFFDIO_REGISTER et UFFDIO_UNREGISTER sont utilisees pour configurer le comportement de userfaultfd. Ces operations permettent a l'appelant de choisir les fonctionnalites qui seront activees et le type d'evenement transmis a l'application. Ces operations permettent a l'application appelante de resoudre des evenements de problemes de pages. UFFDIO_API (Depuis Linux 4.3). Activer l'operation de userfaultfd et effectuer la poignee de main de l'API. Le parametre argp est un pointeur vers une structure uffdio_api, definie en tant que : struct uffdio_api { __u64 api; /* Version de l'API demandee (entree) */ __u64 features; /* Fonctionnalites demandees (entree/sortie) */ __u64 ioctls; /* Operations ioctl() disponibles (sortie) */ }; The api field denotes the API version requested by the application. The kernel verifies that it can support the requested API version, and sets the features and ioctls fields to bit masks representing all the available features and the generic ioctl(2) operations available. Since Linux 4.11, applications should use the features field to perform a two-step handshake. First, UFFDIO_API is called with the features field set to zero. The kernel responds by setting all supported feature bits. Applications which do not require any specific features can begin using the userfaultfd immediately. Applications which do need specific features should call UFFDIO_API again with a subset of the reported feature bits set to enable those features. Avant Linux 4.11, le champ features doit etre initialise a zero avant l'appel UFFDIO_API, et zero (c'est-a-dire pas de bit de fonctionnalite) est mis dans le champ features par le noyau a partir du retour de ioctl(2). If the application sets unsupported feature bits, the kernel will zero out the returned uffdio_api structure and return EINVAL. Les bits fonctionnels suivants peuvent etre positionnes : UFFD_FEATURE_EVENT_FORK (depuis Linux 4.11) Quand cette fonctionnalite est activee, les objets userfaultfd associes a un processus parent sont dupliques dans un processus enfant lors d'un fork(2) et un evenement UFFD_EVENT_FORK est genere sur le moniteur du userfaultfd UFFD_FEATURE_EVENT_REMAP (depuis Linux 4.11) Si cette fonctionnalite est activee, quand le processus fautif appelle mremap(2), le moniteur userfaultfd recevra un evenement de type UFFD_EVENT_REMAP. UFFD_FEATURE_EVENT_REMOVE (depuis Linux 4.11) Si cette fonctionnalite est ativee, quand le processus fautif appelle madvise(2) avec les valeurs MADV_DONTNEED ou MADV_REMOVE pour liberer une zone de memoire virtuelle, le moniteur userfaultfd recevra un evenement de type UFFD_EVENT_REMOVE. UFFD_FEATURE_EVENT_UNMAP (depuis Linux 4.11) Si cette fonctionnalite est activee, quand le processus fautif desassocie la memoire virtuelle explicitement avec munmap(2), ou implicitement lors d'un mmap(2) ou d'un mremap(2), le moniteur userfaultfd recevra un evenement de type UFFD_EVENT_UNMAP. UFFD_FEATURE_MISSING_HUGETLBFS (depuis Linux 4.11) Si ce bit fonctionnel est positionne, le noyau gere l'enregistrement des plages userfaultfd par defaut dans les zones hugetlbfs de memoire virtuelle UFFD_FEATURE_MISSING_SHMEM (depuis Linux 4.11) Si ce bit fonctionnel est positionne, le noyau prend en charge l'enregistrement de plages userfaultfd dans les zones de memoire partagees. Cela comprend toutes les APIs de memoire partagee du noyau : la memoire partagee System V, tmpfs(5), les tableaux partages de /dev/zero, mmap(2) avec l'attribut MAP_SHARED positionne, memfd_create(2) et ainsi de suite. UFFD_FEATURE_SIGBUS (depuis Linux 4.14) Si ce bit fonctionnel est positionne, aucun evenement d'erreur de page (UFFD_EVENT_PAGEFAULT) ne sera genere. Un signal SIGBUS sera plutot envoye au processus fautif. Les applications qui utilisent cette fonctionnalite n'exigeront pas qu'on utilise un moniteur userfaultfd pour gerer les acces memoire aux regions enregistrees avec userfaultfd. UFFD_FEATURE_THREAD_ID (depuis Linux 4.14) Si ce bit de fonctionnalite est positionne, uffd_msg.pagefault.feat.ptid sera positionne sur l'identifiant du thread fautif pour chaque message d'erreur de pagination. UFFD_FEATURE_PAGEFAULT_FLAG_WP (since Linux 5.10) If this feature bit is set, userfaultfd supports write-protect faults for anonymous memory. (Note that shmem / hugetlbfs support is indicated by a separate feature.) UFFD_FEATURE_MINOR_HUGETLBFS (depuis Linux 5.13) Si ce bit fonctionnel est positionne, le noyau gere l'enregistrement des plages userfaultfd en mode mineur dans les zones hugetlbfs-backed de memoire. UFFD_FEATURE_MINOR_SHMEM (depuis Linux 5.14) Si ce bit fonctionnel est positionne, le noyau gere l'enregistrement des plages userfaultfd en mode mineur dans les zones shmem-backed de memoire. UFFD_FEATURE_EXACT_ADDRESS (Depuis Linux 5.18) Si ce bit fonctionnel est positionne, uffd_msg.pagefault.address sera regle a l'adresse exacte de l'erreur de pagination rapportee par le materiel et ne masque pas le decalage dans la page. Notez que les versions anciennes de Linux pourraient indiquer aussi l'adresse exacte, meme si bit fonctionnel n'est pas positionne. UFFD_FEATURE_WP_HUGETLBFS_SHMEM (since Linux 5.19) If this feature bit is set, userfaultfd supports write-protect faults for hugetlbfs and shmem / tmpfs memory. UFFD_FEATURE_WP_UNPOPULATED (since Linux 6.4) If this feature bit is set, the kernel will handle anonymous memory the same way as file memory, by allowing the user to write-protect unpopulated page table entries. UFFD_FEATURE_POISON (since Linux 6.6) If this feature bit is set, the kernel supports resolving faults with the UFFDIO_POISON ioctl. UFFD_FEATURE_WP_ASYNC (since Linux 6.7) If this feature bit is set, the write protection faults would be asynchronously resolved by the kernel. Le champ ioctls renvoye peut contenir les bits suivants : 1 << _UFFDIO_API L'operation UFFDIO_API est prise en charge. 1 << _UFFDIO_REGISTER L'operation UFFDIO_REGISTER est prise en charge. 1 << _UFFDIO_UNREGISTER L'operation UFFDIO_UNREGISTER est prise en charge. This ioctl(2) operation returns 0 on success. On error, -1 is returned and errno is set to indicate the error. If an error occurs, the kernel may zero the provided uffdio_api structure. The caller should treat its contents as unspecified, and reinitialize it before re-attempting another UFFDIO_API call. Possible errors include: EFAULT argp renvoie a une adresse en dehors de l'espace d'adressage accessible du processus appelant. EINVAL La version de l'API demandee dans le champ api n'est pas prise en charge par ce noyau ou le champ features passe au noyau comprend des bits non geres par la version actuelle du noyau. EINVAL A previous UFFDIO_API call already enabled one or more features for this userfaultfd. Calling UFFDIO_API twice, the first time with no features set, is explicitly allowed as per the two-step feature detection handshake. EPERM The UFFD_FEATURE_EVENT_FORK feature was enabled, but the calling process doesn't have the CAP_SYS_PTRACE capability. UFFDIO_REGISTER (Since Linux 4.3.) Register a memory address range with the userfaultfd object. The pages in the range must be "compatible". Please refer to the list of register modes below for the compatible memory backends for each mode. Le parametre argp est un pointeur vers une structure uffdio_register, definie en tant que : struct uffdio_range { __u64 start; /* Debut de la plage */ __u64 len; /* Longueur de la plage (octets) */ }; struct uffdio_register { struct uffdio_range range; __u64 mode; /* Mode desire de l'operation (entree) */ __u64 ioctls; /* Operations ioctl() disponibles (sortie) */ }; Le champ range definit une plage de memoire commencant a start et s'etendant sur len octets qui doit etre geree par userfaultfd. Le champ mode definit le mode d'operation desire pour cette region de memoire. Les valeurs suivantes peuvent etre mises en bits et liees pour positionner le mode userfaultfd pour la plage indiquee : UFFDIO_REGISTER_MODE_MISSING Suivre les erreurs de pagination sur les pages absentes. Depuis Linux 4.3, seules les plages anonymes privees sont compatibles. Depuis Linux 4.11, les plages hugetlbfs et de memoire partagee sont egalement compatibles. UFFDIO_REGISTER_MODE_WP Suivre les erreurs de pagination sur les pages protegees en ecriture. Depuis Linux 5.7, seules les plages anonymes et privees sont compatibles. UFFDIO_REGISTER_MODE_MINOR Suivre les petites erreurs de pagination. Depuis Linux 5.13, seules les plages hugetlbfs sont compatibles. Depuis Linux 5.14, la compatibilite avec les plages shmem a ete ajoutee. Si l'operation reussit, le noyau modifie le champ du masque de bit ioctls pour indiquer les operations ioctl(2) disponibles sur la plage indiquee. Ce masque de bit renvoye peut contenir les bits suivants : 1 << _UFFDIO_COPY L'operation UFFDIO_COPY est prise en charge. 1 << _UFFDIO_WAKE L'operation UFFDIO_WAKE est prise en charge. 1 << _UFFDIO_WRITEPROTECT The UFFDIO_WRITEPROTECT operation is supported. 1 << _UFFDIO_ZEROPAGE L'operation UFFDIO_ZEROPAGE est prise en charge. 1 << _UFFDIO_CONTINUE L'operation UFFDIO_CONTINUE est prise en charge. 1 << _UFFDIO_POISON The UFFDIO_POISON operation is supported. Cette operation ioctl(2) renvoie 0 en cas de succes. En cas d'erreur, -1 est renvoye et errno est positionne pour indiquer l'erreur. Parmi les erreurs possibles : EBUSY Un tableau de la plage indiquee est enregistre avec un autre objet userfaultfd. EFAULT argp renvoie a une adresse en dehors de l'espace d'adressage accessible du processus appelant. EINVAL Un bit non valable ou non pris en charge a ete indique dans le champ mode ; ou le champ mode valait zero. EINVAL Il n'y a pas de tableau dans la plage d'adresse indiquee. EINVAL range.start ou range.len n'est pas un multiple de la taille de la page du systeme ; ou range.len vaut zero ; ou ces champs ne sont pas valables pour d'autres raisons. EINVAL Un tableau incompatible est present dans la plage d'adresse indiquee. UFFDIO_UNREGISTER (Since Linux 4.3.) Unregister a memory address range from userfaultfd. The pages in the range must be "compatible" (see the description of UFFDIO_REGISTER.) La plage d'adresse a desenregistrer est indiquee dans la structure uffdio_range vers laquelle pointe argp. Cette operation ioctl(2) renvoie 0 en cas de succes. En cas d'erreur, -1 est renvoye et errno est positionne pour indiquer l'erreur. Parmi les erreurs possibles : EINVAL Le champ start ou len de la structure ufdio_range n'etait pas un multiple de la taille de la page systeme ; ou bien le champ len valait zero ; ou ces champs n'etaient pas valables pour d'autres raisons. EINVAL Un tableau incompatible est present dans la plage d'adresse indiquee. EINVAL Il n'y avait pas de tableau dans la plage d'adresse specifiee. UFFDIO_COPY (Depuis Linux 4.3). Copier de maniere atomique un bloc de memoire continu dans la plage enregistree pour le userfault et reveiller eventuellement les threads bloques. Les adresses source et cible et le nombre d'octets a copier sont indiques dans les champs src, dst et len de la structure uffdio_copy vers laquelle pointe argp : struct uffdio_copy { __u64 dst; /* Cible de la copie */ __u64 src; /* Origine de la copie */ __u64 len; /* Nombre d'octets a copier */ __u64 mode; /* Drapeaux controlant le comportement de la copie */ __s64 copy; /* Nombre d'octets copies ou erreurs de refus */ }; La valeur suivante peut etre liee en bits a mode pour modifier le comportement de l'operation UFFDIO_COPY : UFFDIO_COPY_MODE_DONTWAKE Ne pas reveiller le thread qui attend la resolution d'une erreur de page UFFDIO_COPY_MODE_WP Copier les pages avec des droits en lecture seule. Cela permet a l'utilisateur de recuperer la prochaine ecriture sur la page qui bloquera et qui generera un autre message userfault de protection en ecriture. Cela n'est utilise que lorsque les modes UFFDIO_REGISTER_MODE_MISSING et UFFDIO_REGISTER_MODE_WP sont actives pour la plage enregistree. Le champ copy est utilise par le noyau pour renvoyer le nombre d'octets copies ou une erreur (une valeur negative a la facon errno). Si la valeur renvoyee dans copy ne correspond pas a celle indiquee dans len, l'operation echoue avec l'erreur EAGAIN. Le champ copy n'est fait que pour la sortie ; il n'est pas lu par l'operation UFFDIO_COPY. Cette operation ioctl(2) renvoie 0 en cas de succes. Dans ce cas, toute la zone a ete copiee. En cas d'erreur, -1 est renvoye et errno est positionne pour indiquer l'erreur. Parmi les erreurs possibles : EAGAIN Le nombre d'octets copies (a savoir la valeur renvoyee dans le champ copy) n'est pas la meme que celle indiquee dans le champ len. EINVAL dst ou len n'etait pas un multiple de la taille de la page du systeme ou la plage indiquee dans src et len ou dst et len n'etait pas valable. EINVAL Un bit non valable a ete indique dans le champ mode. ENOENT (depuis Linux 4.11) Le processus fautif a modifie sa structure de memoire virtuelle en meme temps qu'une operation UFFDIO_COPY remarquable. ENOSPC (de Linux 4.11 a Linux 4.13) Le processus fautif a quitte au moment de l'operation UFFDIO_COPY. ESRCH (depuis Linux 4.13) Le processus fautif a quitte au moment de l'operation UFFDIO_COPY. UFFDIO_ZEROPAGE (Depuis Linux 4.3). Remplit de zeros une plage memoire enregistree avec userfaultfd. La plage demandee est indiquee par le champ range de la structure uffdio_zeropage vers laquelle pointe argp : struct uffdio_zeropage { struct uffdio_range range; __u64 mode; /* Drapeaux controlant le comportement de la copie */ __s64 zeropage; /* Nombre d'octets remplis de zeros ou d'erreurs de refus */ }; La valeur suivante peut etre mise en bit et liee dans mode pour modifier le comportement de l'operation UFFDIO_ZEROPAGE : UFFDIO_ZEROPAGE_MODE_DONTWAKE Ne pas reveiller le thread qui attend la resolution d'une erreur de page. Le champ zeropage est utilise par le noyau pour renvoyer le nombre d'octets remplis de zeros, ou une erreur de la meme maniere que UFFDIO_COPY. Si la valeur renvoyee dans le champ zeropage ne correspond pas a celle indiquee dans range.len, l'operation echoue avec l'erreur EAGAIN. Le champ zeropage ne sert qu'a la sortie ; il n'est pas lu par l'operation UFFDIO_ZEROPAGE. L'operation ioctl(2) renvoie 0 en cas de succes. Dans ce cas, toute la zone a ete remplie de zeros. En cas d'erreur, -1 est renvoye et errno est positionne pour indiquer l'erreur. Parmi les erreurs possibles : EAGAIN Le nombre d'octets remplis de zeros (c'est-a-dire la valeur renvoyee dans le champ zeropage) ne correspond pas a la valeur indiquee dans le champ range.len. EINVAL range.start ou range.len n'etait pas un multiple de la taille de la page du systeme ; ou range.len etait de zero ; ou la plage indiquee n'etait pas valable. EINVAL Un bit non valable a ete indique dans le champ mode. ESRCH (depuis Linux 4.13) Le processus fautif a quitte au moment de l'operation UFFDIO_ZEROPAGE. UFFDIO_WAKE (Depuis Linux 4.3). Reveiller le thread qui attend la resolution de l'erreur de page sur une plage d'adresse memoire indiquee. L'operation UFFDIO_WAKE est utilisee avec les operations UFFDIO_COPY et UFFDIO_ZEROPAGE, dont le bit UFFDIO_COPY_MODE_DONTWAKE ou UFFDIO_ZEROPAGE_MODE_DONTWAKE est defini dan le champ mode. Le moniteur userfault peut effectuer plusieurs operations UFFDIO_COPY et UFFDIO_ZEROPAGE automatiquement, puis reveiller explicitement le thread fautif en utilisant UFFDIO_WAKE. Le parametre argp est un pointeur vers une structure uffdio_range (presentee ci-dessus) qui indique la plage d'adresse. Cette operation ioctl(2) renvoie 0 en cas de succes. En cas d'erreur, -1 est renvoye et errno est positionne pour indiquer l'erreur. Parmi les erreurs possibles : EINVAL Le champ start ou len de la structure ufdio_range n'etait pas un multiple de la taille de la page systeme ; ou len etait zero ; ou la plage indiquee n'etait pas valable pour une autre raison. UFFDIO_WRITEPROTECT (Since Linux 5.7.) Write-protect or write-unprotect a userfaultfd-registered memory range registered with mode UFFDIO_REGISTER_MODE_WP. Le parametre argp est un pointeur vers une structure uffdio_range, comme indique ci-dessous : struct uffdio_writeprotect { struct uffdio_range range; /* Plage pour modifier le droit d'ecriture*/ __u64 mode; /* Mode pour changer le droit d'ecriture */ }; Deux bits de droit sont pris en charge dans cette structure : UFFDIO_WRITEPROTECT_MODE_WP Quand ce bit de droits est positionne, l'ioctl sera une operation protegee en ecriture sur la plage memoire indiquee par range. Sinon, il s'agira d'une operation non protegee en ecriture sur la plage indiquee, ce qui peut etre utile pour resoudre une erreur de pagination de protection en ecriture userfaultfd. UFFDIO_WRITEPROTECT_MODE_DONTWAKE Quand ce bit de droit est positionne, ne pas reveiller de thread qui attend la resolution d'une erreur de pagination apres l'operation. Cela ne peut etre indique que si UFFDIO_WRITEPROTECT_MODE_WP n'est pas indique. Cette operation ioctl(2) renvoie 0 en cas de succes. En cas d'erreur, -1 est renvoye et errno est positionne pour indiquer l'erreur. Parmi les erreurs possibles : EINVAL Le champ start ou len de la structure ufdio_range n'etait pas un multiple de la taille de la page systeme ; ou len etait zero ; ou la plage indiquee n'etait pas valable pour une autre raison. EAGAIN Le processus a ete interrompu ; reessayez cet appel. ENOENT La plage indiquee dans range n'est pas valable. Par exemple, l'adresse virtuelle n'existe pas ou n'est pas enregistree en mode protection d'ecriture userfaultfd. EFAULT Une erreur generique a ete rencontree lors du traitement. UFFDIO_CONTINUE (Depuis Linux 5.13). Resoudre une erreur de pagination mineure en installant des entrees de tabl de pagination pour les pages existantes dans le cache de page. Le parametre argp est un pointeur vers une structure uffdio_continue, telle que presentee ci-dessous : struct uffdio_continue { struct uffdio_range range; /* Plage pour installer les PTEs for et continue */ __u64 mode; /* Attributs controlant le comportement de continue */ __s64 mapped; /* Nombre d'octets projetes ou erreur refusee */0 }; La valeur suivante peut etre liee en bits a mode pour modifier le comportement de l'operation UFFDIO_CONTINUE : UFFDIO_CONTINUE_MODE_DONTWAKE Ne pas reveiller le thread qui attend la resolution d'une erreur de page. Le champ mapped est utilise par le noyau pour renvoyer le nombre d'octets projetes ou une erreur de la meme maniere que UFFDIO_COPY. Si la valeur renvoyee dans le champ mapped ne correspond pas a celle indiquee dans range.len, l'operation echoue avec l'erreur EAGAIN. Le champ mapped ne sert qu'a la sortie ; il n'est pas lu par l'operation UFFDIO_CONTINUE. Cette operation ioctl(2) renvoie 0 en cas de succes. Dans ce cas, toute la zone a ete copiee. En cas d'erreur, -1 est renvoye et errno est positionne pour indiquer l'erreur. Parmi les erreurs possibles : EAGAIN Le nombre d'octets projetes (c'est-a-dire la valeur renvoyee dans le champ mapped) ne correspond pas a la valeur indiquee dans le champ range.len. EEXIST Une ou plusieurs pages ont deja ete projetees dans la plage donnee. EFAULT Aucune page existante n'a ete trouvee dans le cache de page pour la plage donnee. EINVAL range.start ou range.len n'etait pas un multiple de la taille de la page du systeme ; ou range.len etait de zero ; ou la plage indiquee n'etait pas valable. EINVAL Un bit non valable a ete indique dans le champ mode. ENOENT Le processus fautif a modifie sa structure de memoire virtuelle en meme temps qu'une operation UFFDIO_COTINUE remarquable. ENOMEM L'allocation de la memoire necessaire pour installer les projetctions de tables de pages a echoue. ESRCH Le processus fautif a quitte au moment de l'operation UFFDIO_CONTINUE. UFFDIO_POISON (Since Linux 6.6.) Mark an address range as "poisoned". Future accesses to these addresses will raise a SIGBUS signal. Unlike MADV_HWPOISON this works by installing page table entries, rather than "really" poisoning the underlying physical pages. This means it only affects this particular address space. The argp argument is a pointer to a uffdio_poison structure as shown below: struct uffdio_poison { struct uffdio_range range; /* Range to install poison PTE markers in */ __u64 mode; /* Flags controlling the behavior of poison */ __s64 updated; /* Number of bytes poisoned, or negated error */ }; The following value may be bitwise ORed in mode to change the behavior of the UFFDIO_POISON operation: UFFDIO_POISON_MODE_DONTWAKE Ne pas reveiller le thread qui attend la resolution d'une erreur de page. The updated field is used by the kernel to return the number of bytes that were actually poisoned, or an error in the same manner as UFFDIO_COPY. If the value returned in the updated field doesn't match the value that was specified in range.len, the operation fails with the error EAGAIN. The updated field is output-only; it is not read by the UFFDIO_POISON operation. This ioctl(2) operation returns 0 on success. In this case, the entire area was poisoned. On error, -1 is returned and errno is set to indicate the error. Possible errors include: EAGAIN The number of bytes mapped (i.e., the value returned in the updated field) does not equal the value that was specified in the range.len field. EINVAL range.start ou range.len n'etait pas un multiple de la taille de la page du systeme ; ou range.len etait de zero ; ou la plage indiquee n'etait pas valable. EINVAL Un bit non valable a ete indique dans le champ mode. EEXIST Une ou plusieurs pages ont deja ete projetees dans la plage donnee. ENOENT The faulting process has changed its virtual memory layout simultaneously with an outstanding UFFDIO_POISON operation. ENOMEM Allocating memory for page table entries failed. ESRCH The faulting process has exited at the time of a UFFDIO_POISON operation. VALEUR RENVOYEE Voir les descriptions des operations individuelles ci-dessus. ERREURS Voir les descriptions des operations individuelles ci-dessus. En outre, les erreurs generales suivantes peuvent se produire pour toutes les operations decrites ci-dessus : EFAULT argp pointe vers une adresse illegale. EINVAL (Pour toutes les operations, sauf UFFDIO_API). L'objet userfaultfd n'a pas encore ete active (avec l'operation UFFDIO_API). STANDARDS Linux. BOGUES Afin de detecter les fonctionnalites userfault disponibles et d'activer des sous-parties de celles-ci, le descripteur de fichier userfaultfd doit etre ferme apres la premiere operation UFFDIO_API qui recherche la disponibilite des fonctionnalites, puis reouvert avant la deuxieme operation UFFDIO_API qui active les fonctionnalites desirees. EXEMPLES Voir userfaultfd(2). VOIR AUSSI ioctl(2), mmap(2), userfaultfd(2) Documentation/admin-guide/mm/userfaultfd.rst dans l'arborescence des sources du noyau Linux TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Jean-Philippe MENGUAL Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 ioctl_userfaultfd(2)