Linux驅動設備注冊流程可以分為以下幾個步驟:
register_chrdev_region函數手動指定一個未被使用的設備號。alloc_chrdev_region函數讓系統自動分配一個設備號。major和minor函數獲取主設備號和次設備號。cdev_init函數初始化cdev結構體。cdev_add函數將cdev結構體添加到內核中。mknod命令創建設備節點。udev/mdev機制自動創建設備節點。unregister_chrdev_region函數釋放設備號。cdev_del函數注銷字符設備。device_destroy函數銷毀設備節點。class_destroy函數卸載class。module_init函數注冊模塊加載函數,使用insmod或modprobe命令加載驅動模塊。module_exit函數注冊模塊卸載函數,使用rmmod命令卸載驅動模塊。這個流程適用于字符設備的注冊。對于網絡設備和RDMA設備,注冊流程會有所不同。例如,網絡設備驅動需要實現net_device_ops結構體并調用register_netdevice函數進行注冊,而RDMA設備驅動則需要調用ib_alloc_device和ib_set_device_ops等函數進行注冊。