DENX . Training2 . LddDeviceNumbers
|
- major and minor numbers
- used by kernel to identify driver that handles request
- many statically assigned (
Documentation/devices.txt
) (but no new ones will be)
- need to be allocated (=claimed)
- static or dynamic allocation
- mapping number -> device can vary (1:1, n:1)
API: Device numbers
type:
dev_t
include/linux/types.h
creation, accessors:
MKDEV(int major, int minor)
MAJOR(dev_t dev)
MINOR(dev_t dev)
include/linux/kdev_t.h
register a (known) range of numbers:
int register_chrdev_region(dev_t first, unsigned int count, char *name);
- first: first number in range
- count: how many minor numbers?
- name: name of device
allocate a range of free numbers:
int alloc_chrdev_region(dev_t *dev, unsigned int firstminor, unsigned int count, char *name);
- dev: pointer to existing dev_t, will contain allocated major/minor
- firstminor: usually 0 (but not required)
- name: name of device
free allocated or registered range of numbers:
void unregister_chrdev_region(dev_t first, unsigned int count);
include/linux/fs.h
Copyright © 2002-2022 by DENX Software Engineering