linux - The dynamic registeration of char devices assigns major number for my char device that doesn't correspond to Documentation/devices.txt. Why is that? -


concretely, use following function register character device:

int alloc_chrdev_region(dev_t *first, unsigned int firstminor, unsigned int cnt, char *name); 

good enough. print major number assigned , gives me: 251.

now move chapter 3 of linux device drivers, page 5. paragraph:

some major device numbers statically assigned common devices. list of devices can found in documentation/devices.txt within kernel source tree. chances of static number having been assigned use of new driver small, however, , new numbers not being assigned. so, driver writer, have choice: can pick number appears unused, or can allocate major numbers in dynamic manner. picking num- ber may work long user of driver you; once driver more deployed, randomly picked major number lead conflicts , trouble.

i go documentatio/devices.txt , search 251, character device major number. isn't there. why that? missing something?

as suggested barmar in comments: major numbers specific devices listed in devices.txt statically assigned device numbers. means if writing driver device fits 1 of categories defined in devices.txt, hard-code major device number driver, run conflicts other drivers.

you using correct method of dynamically allocating device number, lets kernel choose put device driver. since let kernel assign major number, it's going choose whatever wants , free.

by way, don't know version of devices.txt you're looking at, if @ latest 1 hosted on lxr.free-electrons.com (same above link), can see major numbers 240-254 reserved local , experimental use. in experience, if you're working on own simple driver, major numbers in range of time.

tl;dr

the major number 251 is listed in current version of devices.txt. falls in local/experiment range of major numbers, kernel start grabbing major numbers when allowed dynamically, unless told otherwise.


Comments

Popular posts from this blog

php - Submit Form Data without Reloading page -

linux - Rails running on virtual machine in Windows -

php - $params->set Array between square bracket -