Hot Plug
- MODULE_DEVICE_TABLE
- CONFIG_HOTPLUG
- global variable hotplug_path
- When the kernel starts, hotplug_path is set to /sbin/hotplug, but the user can modify the value at /proc/sys/kernel/hotplug to change this.
- kernel function call_usermodehelper() executes /sbin/hotplug
- MODULE_DEVICE_TABLE
- used by all USB and PCI drivers
- At compilation time, the build process extracts this information out of the driver and builds a table.
- The macro MODULE_DEVICE_TABLE automatically creates two variables. For the example: MODULE_DEVICE_TABLE (usb, usblp_ids); the variables __module_usb_device_size and __module_usb_device_table are created and placed into the read-only data section and the initialized data section of the module, respectively. The variable __module_usb_device_size contains the value of the size of the struct usb_id structure, and __module_usb_device_table points to the usblp_ids structure. The usblp_ids variable is an array of usb_id structures with a terminating NULL structure at the end of the list.
- When the depmod program is run, as part of the kernel installation process, it goes through every module looking for the symbol __module_usb_device_size to be present in the compiled module. If it finds it, it copies the data pointed to by the __module_usb_device_table symbol into a structure, extracts all of the information and writes it out to the modules.usbmap file, which is located in the module root directory. It does the same thing while looking for the __module_pci_device_size in creating the modules.pcimap file.
- /lib/modules/kernel_version/modules.pcimap(PCI), modules.usbmap(USB)
- kset
- uevent_ops
page revision: 12, last edited: 23 May 2017 07:41