240 是 Ubuntu 20.04.2 LTS 中的主数字吗?

240 是 Ubuntu 20.04.2 LTS 中的主数字吗?

我正在尝试加载这样的模块:

sudo insmod message_slot.ko

当的主数字message_slot.ko为 240 时,我得到:

insmod: error: could not insert module message_slot: device or resource busy

我检查了一下lsmod,发现在加载之前该驱动程序尚未加载。

更新:

message_slot.ko是我编写的驱动程序,register_chrdev(240, "msg_slot", &Fops)在 中使用module_init。当我尝试用 加载它时,register_chrdev(2, "msg_slot", &Fops)它可以正常工作。

答案1

如果字符设备已使用主版本 240,则它应该存在于 中/dev/char。例如:

doug@s19:~/temp-k-git/linux$ ls -l /dev/char | grep 240:
lrwxrwxrwx 1 root root  8 May 10 20:23 240:0 -> ../nvme0
doug@s19:~/temp-k-git/linux$

查看设备.txt内核树中的文档。

我认为您的“资源繁忙”错误是因为 240 主版本号已被某些东西使用。

编辑:也许查看已使用的主要编号的更好方法是查看/proc/devices。例如:

doug@s19:~/c$ cat /proc/devices
Character devices:
  1 mem
  4 /dev/vc/0
  4 tty
  4 ttyS
  5 /dev/tty
  5 /dev/console
  5 /dev/ptmx
  5 ttyprintk
  7 vcs
 10 misc
 13 input
 21 sg
 29 fb
 89 i2c
108 ppp
116 alsa
128 ptm
136 pts
180 usb
189 usb_device
202 cpu/msr
203 cpu/cpuid
204 ttyMAX
226 drm
234 mei
235 hidraw
236 aux
237 cec
238 ttyDBC
239 lirc
240 nvme-generic
241 nvme
242 vfio
243 bsg
244 watchdog
245 remoteproc
246 ptp
247 pps
248 rtc
249 dma_heap
250 dax
251 dimmctl
252 ndctl
253 tpm
254 gpiochip

Block devices:
  7 loop
  8 sd
  9 md
 11 sr
 65 sd
 66 sd
 67 sd
 68 sd
 69 sd
 70 sd
 71 sd
128 sd
129 sd
130 sd
131 sd
132 sd
133 sd
134 sd
135 sd
253 device-mapper
254 mdp
259 blkext

根据评论,它显示 cec,但我的系统上的主编号为 237。

对用户的建议是使用动态分配专业而不是静态分配专业,让系统决定。参考

相关内容