[linux usb] vmalloc ... pour driver usb ? adresses virtuelles ?

vmalloc ... pour driver usb ? adresses virtuelles ? [linux usb] - C - Programmation

Marsh Posté le 09-02-2005 à 16:48:10    

Bonjour à tous. Afin de créer un driver de caméra usb, je souhaite soumettre un urb possédant un buffer de taille 4Mo (taille d'une image).
 
Mon souci est que je ne peux pas utiliser kmalloc car il est limité à l'allocation de 128Mo ... donc je comptes m'orienter vers vmalloc.
 
La question que je me pose est si cela va poser problème dans l'utilisation par mon driver usb. En effet, il est dit dans la doc que vmalloc alloue un espace contigue, seulement au sens des adresses virtuelles ... or je ne sais pas ce que sont les adresses virtuelles.
 
Est-ce que l'utilisation de pointeurs sur ce buffer va etre modifiée ? Y'a-t-il des problèmes connus sur l'utilisation de vmalloc avec le core usb ?
 
Toute aide serait la bienvenue. Merci d'avance.

Reply

Marsh Posté le 09-02-2005 à 16:48:10   

Reply

Marsh Posté le 09-02-2005 à 17:22:44    

tu peux utiliser vmalloc sereinement, l'allocation sera plus rapide, mais l'espace alloué ne sera pas contigue au niveau des adresses physiques, juste au niveau des adresses virtuelles. Ces adresses virtuelles sont "traduites" par la MMU en adresse physique pas forcement contigue. Et ce qui n'est pas bien contigu exploite moins bien les caches, ...
 
Je suppose que tu vas allouer régulièrement des blocs de grosse taille. Si oui et si tu n'est pas satisfait des performances, tu peux t'orienter vers les caches de slab. Je sais que c'est justement utilisé pour les pilotes USB. Mais c'est une optimisation qui n'est peut etre pas nécessaire.

Reply

Marsh Posté le 09-02-2005 à 17:41:20    

Ben à priori, je n'alloue qu'une fois mon buffer (dans la fonction probe, lorsque le device est branché) ... donc à voir pour l'utilisation de slab ... merci beaucoup !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed