2012-11-18 1 views
0

Au je comprends, la signature du register_chrdev_region est décrit comme suitUtilisation de la variable de comptage dans register_chrdev_region

extern int register_chrdev_region(dev_t firstmajor,unsigned int count,const char*dev_name); 
//firstmajor: The major number requested for reservation of the dirver 
//dev_name: Name of the device associated with the major number(for procfs and sysfs) 
//count: Total number of contagious device numbes that is requested?? 

Je ne comprends pas l'utilisation de count arguement dans la fonction (en alloc_chrdev_region aussi). S'il vous plaît expliquer simple cas d'utilisation de réserver les numéros de périphériques contagieux pour le conducteur

Référence 3.2.2 dans http://www.makelinux.net/ldd3/chp-3-sect-2

Répondre

1

Le commentaire dit:

/**  
* alloc_chrdev_region() - register a range of char device numbers 
* @dev: output parameter for first assigned number 
* @baseminor: first of the requested range of minor numbers 
* @count: the number of minor numbers required 
* @name: the name of the associated device or driver 
*  
* Allocates a range of char device numbers. The major number will be 
* chosen dynamically, and returned (along with the first minor number) 
* in @dev. Returns zero or a negative error code. 
*/ 

et vous pouvez trouver un exemple dans fs/fuse/cuse.c:

/* determine and reserve devt */ 
devt = MKDEV(arg->dev_major, arg->dev_minor); 
if (!MAJOR(devt)) 
     rc = alloc_chrdev_region(&devt, MINOR(devt), 1, devinfo.name); 
else 
     rc = register_chrdev_region(devt, 1, devinfo.name); 
if (rc) { 
     printk(KERN_ERR "CUSE: failed to register chrdev region\n"); 
     goto err; 
} 
2

Count est le nombre de numéros mineurs alloués à ce nombre majeur ou ce pilote Tout dispositif créant nœuds sa responsabilité de l'utilisateur pour créer le nœud de l'appareil avec des numéros mineurs admissibles (il doit être inférieur à compter)

Ex: si nous créons pilote avec le premier numéro que 0 et compter comme 2, noyau alloue 0 à 2 numéros mineurs à ce conducteur. Mais l'utilisateur peut toujours créer un nœud de périphérique avec un numéro mineur supérieur à 2. Si le numéro mineur est supérieur à 2, le noyau ne peut pas accéder au pilote de ce nœud car ce numéro mineur n'est pas enregistré. Il ne peut donc pas ouvrir le nœud de périphérique. erreur lorsque vous souhaitez effectuer des opérations de fichiers sur ce nœud de périphérique.

Questions connexes