插入模块后的脚本?内核函数?
我作了一块卡的驱动,设计为字符设备供用户使用,模块名ABC
插入模块insmod ABC.ko 后要在/dev下建一个字符设备mknod /dev/ABC c major minor, major是动态分配的,从cat /proc/devices里看出来的,现在想用程序提取主设备号
awk '/ABC/{print $1}' /proc/devices
但每次卸载模块后再插入模块,major会变小而名字不变,即用awk '/ABC/{print $1}' /proc/devices会得到多个值,从小到大,请问如何把最小的提取出来呢?用脚本应该是可以的,但记得似乎2.6版本有一些控制/dev文件系统的函数,可以在/dev下建立字符设备节点,这样就不用脚本了。
我对脚本和操作/dev文件系统的函数都不大属性,请高手指点一二
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
为什么要最小的呢,可以直接用awk从/proc/devices中获取major,在/dev目录中创建就可以了
因为我多次卸载、加载之后会awk出多个主版本号
#! /bin/sh
module="ABC"
device="ABC"
insmod $module.ko
rm -f /dev/$device
major=$(awk '{if($2==$device) print $1}' /proc/devices)
mknod /dev/$device c $major 0
谢谢楼上的关注,正常情况下你的脚本是可以的,但我的驱动有些问题,rmmod的之后上一次插入的信息还在/proc/devices里,然后再用你的脚本的时候major=$(awk '{if($2==$device) print $1}' /proc/devices),
major会得到多个值,比如这样
major = 254
253
252
我能确定最小的那个是我要用的,我想问问用什么脚步能把最小的取出来