Existe-t-il un code source pour le pilote Windows DMA ?
Les opérations associées de DMA sont présentées à la page 545 de « Compréhension approfondie du noyau Linux ». Lorsqu’on parle de DMA, il faut mentionner la question du Cache. Le livre cite l'exemple suivant pour décrire le problème de cohérence du cache :
Supposons que le pilote de périphérique remplisse certaines données dans la mémoire tampon, puis commande immédiatement au périphérique matériel de lire les données à l'aide du transfert DMA. Si DMA accède à ces cellules de mémoire RAM physique et que le contenu de la ligne de cache matériel correspondante n'a pas encore été écrit dans la RAM, le périphérique matériel lira uniquement l'ancienne valeur dans la mémoire tampon.
Il existe désormais deux façons de gérer les tampons DMA :
Mappage DMA cohérent :
Le livre est plus abstrait, en termes simples, toute réécriture du tampon DMA sera directement mise à jour dans la mémoire, également connue sous le nom de It is. un terrain synchronisé ou un terrain cohérent.
Mappage DMA de streaming :
Selon ma compréhension personnelle, le flux ici est le flux d'entrée et de sortie. Nous devons spécifier à l'avance la direction du tampon DMA, par exemple s'il faut lire le tampon ou écrire le tampon. Il est également appelé asynchrone ou non cohérent. Veuillez voir ci-dessous pour plus de détails.
Parce que dans l'architecture x86, le pilote de périphérique matériel lui-même espionnera le cache matériel accédé, il n'y a donc pas de problème de cohérence DMA dans l'architecture x86. Pour les autres architectures telles que MIPS, SPARC et POWERPC (dont ARM), il est nécessaire de s'assurer de leur cohérence DMA au niveau logiciel.
Il y a une suggestion appropriée dans le livre sur la façon de choisir entre les deux ci-dessus. Si le CPU et le processeur DMA accèdent à un tampon de manière imprévisible, alors la méthode de mappage DMA cohérente doit être forcée à être utilisée (je parle ici). à propos de l'imprévisible Comprenez qu'il n'est pas possible de déterminer quand ils accèdent au tampon). Dans d'autres cas, la méthode de mappage DMA en streaming est préférable, car le traitement d'un mappage DMA cohérent est fastidieux sur certaines architectures et peut entraîner une baisse des performances du système.
Voici une introduction détaillée au streaming DMA :
Le tampon auquel il faut accéder doit être mappé avant la transmission des données (le mappage ici signifie que certaines fonctions doivent être appelées pour informer le noyau que le tampon est diffusé), et est annulé après la transmission.
Le démarrage d'un transfert de données DMA en streaming est divisé en étapes suivantes :
1. Allouer le tampon DMA.
Lorsque le périphérique DMA n'utilise pas le mode S/G (scatter/gather), il faut s'assurer que le tampon est physiquement continu. Le noyau Linux a deux fonctions pour allouer de la mémoire continue : kmalloc() et __get_free_pages( ). Les deux fonctions ont la valeur maximale pour allouer de la mémoire continue. kmalloc alloue des octets comme une unité, le maximum est d'environ 64 Ko, __get_free_pages() alloue des pages comme une unité et peut allouer un maximum de 2 ^ nombre d'ordre de pages. le paramètre order Déterminé par la macro MAX_ORDER dans le fichier include/linux/Mmzone.h (dans la version par défaut du noyau 2.6.18, cette macro est définie à 10. C'est-à-dire qu'en théorie, la fonction __get_free_pages peut s'appliquer jusqu'à à 1 à la fois
2. Établissez le mappage de streaming.
Après l'accès en lecture et en écriture au tampon DMA, et avant de démarrer le transfert du périphérique DMA, activez la fonction dma_map_single() pour établir le mappage DMA de streaming. l'adresse linéaire du tampon comme paramètres et renvoie l'adresse de bus correspondante
3. Libérez le mappage de streaming
Lorsque le transfert DMA est terminé, nous devons libérer la fonction dma_unmap_single(). (1). Afin d'éviter la mise en cache. Pour des problèmes de cohérence, le pilote doit appeler la fonction dma_sync_single_for_device() pour actualiser la ligne de cache correspondant au tampon DMA si nécessaire
(2). accéder au tampon mémoire avant qu'un transfert de données DMA ne soit terminé, mais si nécessaire, le pilote doit appeler la fonction dma_sync_single_for_cpu() pour invalider la ligne de cache matériel correspondante avant de lire le tampon
(3 ). est également implémenté à l'aide de __get_free_pages, la fonction de tampon de version correspondant à kmalloc est kfree et la fonction de tampon de version correspondant à __get_free_pages est free_pages. Les fonctions d'application et de version spécifiques liées à __get_free_pages sont les suivantes :
Fonction d'application :
alloc_pages(gfp_mask. ,order) renvoie l'adresse du premier descripteur de cadre de page alloué, ou NULL si l'allocation échoue. __get_free_pages(gfp_mask,order) est similaire à alloc_pages(), mais il renvoie le premier descripteur de cadre de page. L'adresse linéaire d'une page allouée. . Si vous avez besoin d'obtenir le numéro de cadre de page correspondant à l'adresse linéaire, vous devez appeler la macro virt_to_page(addr) pour générer l'adresse linéaire. La fonction release : __free_pages(page, order) souligne ici principalement que la page est à. libère le tampon. Le numéro du cadre de page où se trouve la première adresse linéaire free_pages(page, order) Cette fonction est similaire à __free_pages(page, order), mais le paramètre qu'elle reçoit est l'adresse linéaire du premier cadre de page à être. libéré
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Windows 11 KB5054979 Mise à jour: Guide d'installation et dépannage Pour la version Windows 11 24h2, Microsoft a publié la mise à jour cumulative KB5054979, qui comprend plusieurs améliorations et correctifs de bogues. Cet article vous guidera sur la façon d'installer cette mise à jour et de fournir une solution à la panne d'installation. À propos de Windows 11 24h2 KB5054979 KB5054979 a été publié le 27 mars 2025 et est une mise à jour de sécurité pour Windows 11 24h2 versions.net Framework 3.5 et 4.8.1. Cette mise à jour améliore la sécurité et

La balise d'erreur «quelque chose qui a mal tourné» 7q6ch dans Microsoft Office perturbe votre flux de travail pendant les tâches essentielles telles que la création de documents ou la gestion des e-mails

GTA 5 ERR_GFX_D3D_NOD3D12 Guide de correction d'erreur Grand Theft Auto v amélioré (GTA 5 Enhanced) est un jeu mis à niveau, mais certains joueurs rencontrent l'erreur "ERR_GFX_D3D_NOD3D12: DirectX 12 ou le coureur trouvé" Erreur lors du démarrage. Cet article fournit plusieurs solutions. Cause de l'erreur: cette erreur indique généralement que votre système manque une bibliothèque d'exécution DirectX 12 ou une carte graphique DirectX 12 compatible. Solution: Méthode 1: Installez la bibliothèque d'exécution DirectX Inspection

La maîtrise de l'emplacement et de la protection des fichiers de sauvegarde de l'AI limite: un guide complet Vous prévoyez de plonger dans le RPG de science-fiction riche en action, Limite AI, lançant le 27 mars 2025? Comprendre votre emplacement de fichier de sauvegarde et mettre en œuvre des méthodes de protection robuste est

Trouver votre horaire, j'enregistre des fichiers est crucial pour gérer et protéger les progrès de votre jeu. Ce guide vous montre comment localiser et sauvegarder vos données de sauvegarde. Où sont situés les fichiers de calendrier I Save? La sortie d'accès anticipé de l'annexe I a recueilli une position

La mise à jour du patch de mars 2025 mardi, KB5053598, a provoqué des problèmes généralisés pour les utilisateurs de Windows 11. Beaucoup signalent les déconnexions RDP et les erreurs d'écran bleu (BSOD). Ce guide offre des solutions à ces problèmes. Windows 11 KB5053598 Mise à jour: RDP Disconne

Windows 10 KB5055063 Mise à jour Détails et dépannage d'installation KB5055063 est une mise à jour du .NET Framework pour la version Windows 10 22H2, y compris des améliorations et des correctifs importantes. Cet article explorera KB5055063 en profondeur, y compris les méthodes de téléchargement et diverses façons de résoudre les problèmes de défaillance de l'installation. Introduction à Windows 10 KB5055063 KB5055063 est une mise à jour cumulative pour .NET Framework 3.5, 4.8 et 4.8.1 pour Windows 10 version 22H2, le 25 mars 2025

Dépannage KB5054980 Problèmes d'installation sur Windows 11 Microsoft a sorti KB5054980 le 25 mars 2025, pour les versions Windows 11 22H2 et 23H2. Bien que cette mise à jour n'inclue pas de nouvelles fonctionnalités de sécurité, elle intègre tous les SecUri précédemment publiés
