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等函数进行注册。